-
-
Notifications
You must be signed in to change notification settings - Fork 180
Expand file tree
/
Copy pathTests.cs
More file actions
125 lines (104 loc) · 4.18 KB
/
Tests.cs
File metadata and controls
125 lines (104 loc) · 4.18 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
public class Tests
{
static Tests()
{
VerifierSettings.AssignTargetAssembly(typeof(Tests).Assembly);
DirectoryReplacements.UseAssembly("C:/Code/TheSolution", "C:/Code/TheSolution/TheProject");
}
#region DisableScrubbers
[Fact]
public Task Instance()
{
var settings = new VerifySettings();
settings.DisableScrubbers();
return Verify(BuildTarget(), settings);
}
#endregion
#region DisableScrubbersFluent
[Fact]
public Task Fluent() =>
Verify(BuildTarget())
.DisableScrubbers();
#endregion
[Fact]
public Task ClonedSettings()
{
var settings = new VerifySettings();
settings.DisableScrubbers();
var cloned = new VerifySettings(settings);
return Verify(BuildTarget(), cloned);
}
[Fact]
public Task WithConverter()
{
var settings = new VerifySettings();
settings.AddExtraSettings(_ => _.Converters.Add(new Converter()));
settings.DisableScrubbers();
return Verify(BuildTarget(), settings);
}
class Converter :
WriteOnlyJsonConverter<Target>
{
public override void Write(VerifyJsonWriter writer, Target target)
{
writer.WriteStartObject();
writer.WriteMember(target, target.TheSolutionDir, "TheSolutionDir");
writer.WriteMember(target, target.TheProjectDir, "TheProjectDir");
writer.WriteMember(target, target.Date, "Date");
//writer.WriteMember(target, counter.Next(target.Date), "DateViaCounter");
writer.WriteMember(target, target.DateTime, "DateTime");
//writer.WriteMember(target, counter.Next(target.DateTime), "DateTimeViaCounter");
writer.WriteMember(target, target.DateTimeOffset, "DateTimeOffset");
//writer.WriteMember(target, counter.Next(target.DateTimeOffset), "DateTimeOffsetViaCounter");
writer.WriteMember(target, target.Guid, "Guid");
//writer.WriteMember(target, counter.Next(target.Guid), "GuidViaCounter");
writer.WritePropertyName("DateTimeMin");
writer.WriteValue(DateTime.MinValue);
writer.WritePropertyName("DateTimeMax");
writer.WriteValue(DateTime.MaxValue);
writer.WritePropertyName("DateTimeOffsetMin");
writer.WriteValue(DateTimeOffset.MinValue);
writer.WritePropertyName("DateTimeOffsetMax");
writer.WriteValue(DateTimeOffset.MaxValue);
writer.WritePropertyName("GuidEmpty");
writer.WriteValue(Guid.Empty);
writer.WriteEndObject();
}
}
[Fact]
public Task WithExtension()
{
var settings = new VerifySettings();
settings.ScrubInlineGuids();
settings.ScrubInlineDates("yyyy-MM-dd");
settings.ScrubInlineDateTimes("yyyy-MM-ddTHH:mm:ss");
settings.ScrubInlineDateTimeOffsets("yyyy-MM-ddTHH:mm:sszzz");
settings.DisableScrubbers();
var json = JsonConvert.SerializeObject(BuildTarget(), Formatting.Indented);
return Verify(json, extension: "json");
}
[Fact]
public Task WithExtensionFluent()
{
var json = JsonConvert.SerializeObject(BuildTarget(), Formatting.Indented);
return Verify(json, extension: "json")
.ScrubInlineGuids()
.ScrubInlineDates("yyyy-MM-dd")
.ScrubInlineDateTimes("yyyy-MM-ddTHH:mm:ss")
.ScrubInlineDateTimeOffsets("yyyy-MM-ddTHH:mm:sszzz")
.DisableScrubbers();
}
public record Target(string TheSolutionDir, string TheProjectDir, Date Date, DateTime DateTime, DateTimeOffset DateTimeOffset, Guid Guid);
// ReSharper disable ArrangeObjectCreationWhenTypeNotEvident
#region DisableScrubbersTarget
static object BuildTarget() =>
new Target(
"C:/Code/TheSolution",
"C:/Code/TheSolution/TheProject",
new Date(2020, 1, 1),
new DateTime(2020, 1, 1),
new DateTimeOffset(2020, 1, 1, 1, 1, 1, TimeSpan.FromHours(10)),
new Guid("ae8529a6-30a0-46e2-b7d6-9fcb7b23463c"));
#endregion
// ReSharper restore ArrangeObjectCreationWhenTypeNotEvident
}