-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOptionsMutatorTests.Serialization.cs
More file actions
55 lines (49 loc) · 2.55 KB
/
Copy pathOptionsMutatorTests.Serialization.cs
File metadata and controls
55 lines (49 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace MutableOptions.Tests
{
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options.Mutable;
using MutableOptions.Tests.TestOptions;
using NUnit.Framework;
using System.Globalization;
public partial class OptionsMutatorTests
{
[Test]
public void SerializePrimitiveTypes()
{
var configData = new[]
{
new KeyValuePair<string, string>(nameof(ConvertibleOptions.IntValue), "0"),
new KeyValuePair<string, string>(nameof(ConvertibleOptions.DateTimeValue), DateTime.UnixEpoch.ToString(CultureInfo.InvariantCulture)),
new KeyValuePair<string, string>(nameof(ConvertibleOptions.DateTimeOffsetValue), DateTimeOffset.UnixEpoch.ToString(CultureInfo.InvariantCulture)),
new KeyValuePair<string, string>(nameof(ConvertibleOptions.TimeSpanValue), TimeSpan.FromDays(1.111).ToString()),
new KeyValuePair<string, string>(nameof(ConvertibleOptions.EnumValue), "Foo"),
};
using var host = Host.CreateDefaultBuilder(Array.Empty<string>())
.ConfigureAppConfiguration(builder => builder.AddInMemoryCollection(configData))
.ConfigureServices((context, services) =>
{
services.ConfigureMutable<ConvertibleOptions>(context.Configuration);
})
.Build();
var optionsMonitor = CreateOptionsMonitor<ConvertibleOptions>(host.Services);
var optionsMutator = CreateSut<ConvertibleOptions>(host.Services);
optionsMutator.Mutate(options => options with
{
IntValue = 42,
DateTimeValue = DateTime.UnixEpoch.AddDays(1),
});
optionsMutator.Mutate(options => options with
{
DateTimeOffsetValue = DateTimeOffset.UnixEpoch.AddDays(1),
TimeSpanValue = TimeSpan.FromDays(2.222),
EnumValue = MyEnum.Bar,
});
Assert.That(optionsMonitor.CurrentValue.IntValue, Is.EqualTo(42));
Assert.That(optionsMonitor.CurrentValue.DateTimeValue, Is.EqualTo(DateTime.UnixEpoch.AddDays(1)));
Assert.That(optionsMonitor.CurrentValue.DateTimeOffsetValue, Is.EqualTo(DateTimeOffset.UnixEpoch.AddDays(1)));
Assert.That(optionsMonitor.CurrentValue.TimeSpanValue, Is.EqualTo(TimeSpan.FromDays(2.222)));
Assert.That(optionsMonitor.CurrentValue.EnumValue, Is.EqualTo(MyEnum.Bar));
}
}
}