Skip to content

Commit 8fc6e4b

Browse files
add some test cases around getCachedClient (#30383)
1 parent 0eba2c0 commit 8fc6e4b

File tree

3 files changed

+172
-0
lines changed

3 files changed

+172
-0
lines changed

sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmResourceTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Threading.Tasks;
3+
using Azure.Core;
34
using Azure.Core.TestFramework;
45
using Azure.ResourceManager.Resources;
56
using NUnit.Framework;
@@ -37,5 +38,46 @@ public async Task GetCachedClient()
3738
Assert.IsTrue(ReferenceEquals(obj1, obj2));
3839
Assert.IsTrue(ReferenceEquals(obj1.Client, obj2.Client));
3940
}
41+
42+
private class TestObjectWithClosure
43+
{
44+
public ArmClient Client { get; }
45+
public ResourceIdentifier Id { get; }
46+
47+
public TestObjectWithClosure(ArmClient client, ResourceIdentifier id)
48+
{
49+
Client = client;
50+
Id = id;
51+
}
52+
}
53+
54+
private class ArmClientExtensionClient : ArmResource
55+
{
56+
public ArmClientExtensionClient(ArmClient client, ResourceIdentifier id) : base(client, id)
57+
{
58+
}
59+
60+
public TestObjectWithClosure GetTestObject()
61+
{
62+
return GetCachedClient(Client => new TestObjectWithClosure(Client, Id));
63+
}
64+
}
65+
66+
[RecordedTest]
67+
public async Task GetCachedClientWithClosure()
68+
{
69+
SubscriptionResource subscription = await Client.GetDefaultSubscriptionAsync();
70+
ResourceIdentifier scope1 = new(subscription.Id + "/resourceGroups/rg1");
71+
var extensionClient1 = new ArmClientExtensionClient(Client, scope1);
72+
var obj1 = extensionClient1.GetTestObject();
73+
var obj2 = extensionClient1.GetTestObject();
74+
Assert.IsTrue(ReferenceEquals(obj1, obj2));
75+
Assert.IsTrue(ReferenceEquals(obj1.Client, obj2.Client));
76+
ResourceIdentifier scope2 = new(subscription.Id + "/resourceGroups/rg2");
77+
var extensionClient2 = new ArmClientExtensionClient(Client, scope2);
78+
var obj3 = extensionClient2.GetTestObject();
79+
Assert.IsFalse(ReferenceEquals(obj1, obj3));
80+
Assert.IsTrue(ReferenceEquals(obj1.Client, obj3.Client));
81+
}
4082
}
4183
}

sdk/resourcemanager/Azure.ResourceManager/tests/SessionRecords/ArmResourceTests/GetCachedClientWithClosure.json

Lines changed: 65 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/resourcemanager/Azure.ResourceManager/tests/SessionRecords/ArmResourceTests/GetCachedClientWithClosureAsync.json

Lines changed: 65 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)