forked from lawrence-laz/Extensions.Configuration.Object
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStructObjectTest.cs
More file actions
69 lines (63 loc) · 2.2 KB
/
Copy pathStructObjectTest.cs
File metadata and controls
69 lines (63 loc) · 2.2 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using FluentAssertions;
using Microsoft.Extensions.Configuration;
using Xunit;
namespace Extensions.Configuration.Object.UnitTests
{
public class StructObjectTest
{
internal struct MyConfiguration
{
public PositionConfiguration Position;
public string MyKey;
public LoggingConfiguration Logging;
public string AllowedHosts;
}
internal struct PositionConfiguration
{
public string Title;
public string Name;
public int Age;
}
internal struct LoggingConfiguration
{
public LogLevelConfiguration LogLevel;
}
internal struct LogLevelConfiguration
{
public string Default;
public string Microsoft;
}
[Fact]
public void AddObject_WithStructObject_ShouldLoadFieldsIntoConfiguration()
{
var configuration = new ConfigurationBuilder()
.AddObject(new MyConfiguration
{
Position = new PositionConfiguration
{
Title = "Editor",
Name = "Joe Smith",
Age = 33
},
MyKey = "My appsettings.json Value",
Logging = new LoggingConfiguration
{
LogLevel = new LogLevelConfiguration
{
Default = "Information",
Microsoft = "Warning"
}
},
AllowedHosts = "*"
})
.Build();
configuration["Position:Title"].Should().Be("Editor");
configuration["Position:Name"].Should().Be("Joe Smith");
configuration["Position:Age"].Should().Be("33");
configuration["MyKey"].Should().Be("My appsettings.json Value");
configuration["Logging:LogLevel:Default"].Should().Be("Information");
configuration["Logging:LogLevel:Microsoft"].Should().Be("Warning");
configuration["AllowedHosts"].Should().Be("*");
}
}
}