Skip to content

Commit 8defcf0

Browse files
authored
Add ConfigurationSetting constructor that takes ETag (Azure#23099)
1 parent f4f4d32 commit 8defcf0

File tree

6 files changed

+332
-1
lines changed

6 files changed

+332
-1
lines changed

sdk/appconfiguration/Azure.Data.AppConfiguration/api/Azure.Data.AppConfiguration.netstandard2.0.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public static partial class ConfigurationModelFactory
6060
public partial class ConfigurationSetting
6161
{
6262
public ConfigurationSetting(string key, string value, string label = null) { }
63+
public ConfigurationSetting(string key, string value, string label, Azure.ETag etag) { }
6364
public string ContentType { get { throw null; } set { } }
6465
public Azure.ETag ETag { get { throw null; } }
6566
public bool? IsReadOnly { get { throw null; } }

sdk/appconfiguration/Azure.Data.AppConfiguration/src/ConfigurationSetting.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,23 @@ internal ConfigurationSetting()
2727
/// <param name="key">The primary identifier of the configuration setting.</param>
2828
/// <param name="value">The configuration setting's value.</param>
2929
/// <param name="label">A label used to group this configuration setting with others.</param>
30-
public ConfigurationSetting(string key, string value, string label = null)
30+
public ConfigurationSetting(string key, string value, string label = null): this(key, value, label, default)
31+
{
32+
}
33+
34+
/// <summary>
35+
/// Creates a configuration setting and sets the values from the passed in parameter to this setting.
36+
/// </summary>
37+
/// <param name="key">The primary identifier of the configuration setting.</param>
38+
/// <param name="value">The configuration setting's value.</param>
39+
/// <param name="label">A label used to group this configuration setting with others.</param>
40+
/// <param name="etag">The ETag value for the configuration setting.</param>
41+
public ConfigurationSetting(string key, string value, string label, ETag etag)
3142
{
3243
Key = key;
3344
Value = value;
3445
Label = label;
46+
ETag = etag;
3547
}
3648

3749
/// <summary>

sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationLiveTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,26 @@ public async Task GetIfChangedSettingModified()
805805
}
806806
}
807807

808+
[RecordedTest]
809+
public async Task GetIfChangedSettingNotModified()
810+
{
811+
ConfigurationClient service = GetClient();
812+
ConfigurationSetting testSetting = CreateSetting();
813+
814+
try
815+
{
816+
ConfigurationSetting setting = await service.AddConfigurationSettingAsync(testSetting);
817+
818+
Response<ConfigurationSetting> response = await service.GetConfigurationSettingAsync(new ConfigurationSetting(setting.Key, "", setting.Label, setting.ETag), onlyIfChanged: true).ConfigureAwait(false);
819+
Assert.AreEqual(304, response.GetRawResponse().Status);
820+
Assert.Catch<Exception>(() => _ = response.Value);
821+
}
822+
finally
823+
{
824+
AssertStatus200(await service.DeleteConfigurationSettingAsync(testSetting.Key, testSetting.Label));
825+
}
826+
}
827+
808828
[RecordedTest]
809829
public async Task GetIfChangedSettingUnmodified()
810830
{

sdk/appconfiguration/Azure.Data.AppConfiguration/tests/ConfigurationSettingTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,5 +190,15 @@ public void ConfigurationSettingDictionarySerialization()
190190
Assert.IsTrue(comparer.Equals(s_testSetting, deserialized[s_testSetting.Key]));
191191
Assert.IsNull(deserialized["null_key"]);
192192
}
193+
194+
[Test]
195+
public void ConfigurationSettingEtagConstructor()
196+
{
197+
var configurationSetting = new ConfigurationSetting("key", "value", "label", new ETag("etag"));
198+
Assert.AreEqual("key", configurationSetting.Key);
199+
Assert.AreEqual("value", configurationSetting.Value);
200+
Assert.AreEqual("label", configurationSetting.Label);
201+
Assert.AreEqual("etag", configurationSetting.ETag.ToString());
202+
}
193203
}
194204
}

sdk/appconfiguration/Azure.Data.AppConfiguration/tests/SessionRecords/ConfigurationLiveTests/GetIfChangedSettingNotModified.json

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

sdk/appconfiguration/Azure.Data.AppConfiguration/tests/SessionRecords/ConfigurationLiveTests/GetIfChangedSettingNotModifiedAsync.json

Lines changed: 144 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)