@@ -15,17 +15,15 @@ protected virtual IJsonSerializer GetSerializer() {
15
15
return new DefaultJsonSerializer ( ) ;
16
16
}
17
17
18
- private string [ ] _sampleModelExcludes = { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , nameof ( SampleModel . Nested ) , "Date*" } ;
19
- private string [ ] _eventModelExcludes = { nameof ( Event . Type ) , nameof ( Event . Source ) , "Date" , nameof ( Event . Geo ) , nameof ( Event . Count ) , nameof ( Event . ReferenceId ) , nameof ( Event . Tags ) , nameof ( Event . Value ) } ;
20
-
21
18
[ Fact ]
22
19
public void CanSerialize ( ) {
23
20
var data = new SampleModel {
24
21
Date = DateTime . Now ,
25
22
Message = "Testing"
26
23
} ;
24
+
27
25
IJsonSerializer serializer = GetSerializer ( ) ;
28
- string json = serializer . Serialize ( data , _sampleModelExcludes ) ;
26
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Date ) } ) ;
29
27
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
30
28
}
31
29
@@ -37,8 +35,9 @@ public void CanSerializeEvent() {
37
35
} ;
38
36
ev . Data [ "FirstName" ] = "Blake" ;
39
37
38
+ var exclusions = new [ ] { nameof ( Event . Type ) , nameof ( Event . Source ) , "Date" , nameof ( Event . Geo ) , nameof ( Event . Count ) , nameof ( Event . ReferenceId ) , nameof ( Event . Tags ) , nameof ( Event . Value ) } ;
40
39
IJsonSerializer serializer = GetSerializer ( ) ;
41
- string json = serializer . Serialize ( ev , _eventModelExcludes ) ;
40
+ string json = serializer . Serialize ( ev , exclusions ) ;
42
41
Assert . Equal ( @"{""message"":""Testing"",""data"":{""FirstName"":""Blake""}}" , json ) ;
43
42
}
44
43
@@ -50,36 +49,32 @@ public void CanExcludeProperties() {
50
49
Message = "Testing"
51
50
} ;
52
51
IJsonSerializer serializer = GetSerializer ( ) ;
53
- string json = serializer . Serialize ( data , _sampleModelExcludes ) ;
52
+ string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Date ) } ) ;
54
53
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
55
54
}
56
55
57
56
[ Fact ]
58
57
public void CanExcludeNestedProperties ( ) {
59
- var data = new SampleModel {
60
- Date = DateTime . Now ,
58
+ var data = new NestedModel {
59
+ Number = 1 ,
61
60
Message = "Testing" ,
62
- Nested = new SampleModel {
63
- Date = DateTime . Now ,
64
- Message = "Nested"
61
+ Nested = new NestedModel {
62
+ Message = "Nested" ,
63
+ Number = 2
65
64
}
66
65
} ;
67
66
68
67
IJsonSerializer serializer = GetSerializer ( ) ;
69
- string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date*" } ) ;
68
+ string json = serializer . Serialize ( data , new [ ] { nameof ( NestedModel . Number ) } ) ;
70
69
Assert . Equal ( @"{""message"":""Testing"",""nested"":{""message"":""Nested"",""nested"":null}}" , json ) ;
71
70
}
72
71
73
72
[ Fact ]
74
73
public void ShouldIncludeNullObjects ( ) {
75
- var data = new SampleModel {
76
- Date = DateTime . Now ,
77
- Message = "Testing" ,
78
- Nested = null
79
- } ;
74
+ var data = new DefaultsModel ( ) ;
80
75
IJsonSerializer serializer = GetSerializer ( ) ;
81
- string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date*" } ) ;
82
- Assert . Equal ( @"{""message "":""Testing"" ,""nested "":null}" , json ) ;
76
+ string json = serializer . Serialize ( data ) ;
77
+ Assert . Equal ( @"{""number "":0,""bool"":false ,""message"":null,""collection "":null}" , json ) ;
83
78
}
84
79
85
80
[ Fact ]
@@ -104,44 +99,40 @@ public void CanExcludeMultiwordProperties() {
104
99
105
100
[ Fact ]
106
101
public void ShouldIncludeDefaultValues ( ) {
107
- var data = new SampleModel {
108
- Number = 0 ,
109
- Bool = false
110
- } ;
102
+ var data = new DefaultsModel ( ) ;
111
103
IJsonSerializer serializer = GetSerializer ( ) ;
112
- string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , nameof ( SampleModel . Nested ) , "Date*" } ) ;
113
- Assert . Equal ( @"{""number"":0,""bool"":false,""message"":null}" , json ) ;
114
- var model = serializer . Deserialize < SampleModel > ( json ) ;
104
+ string json = serializer . Serialize ( data ) ;
105
+ Assert . Equal ( @"{""number"":0,""bool"":false,""message"":null,""collection"":null }" , json ) ;
106
+ var model = serializer . Deserialize < DefaultsModel > ( json ) ;
115
107
Assert . Equal ( data . Number , model . Number ) ;
116
108
Assert . Equal ( data . Bool , model . Bool ) ;
117
109
}
118
110
119
111
[ Fact ]
120
112
public void CanSetMaxDepth ( ) {
121
- var data = new SampleModel {
113
+ var data = new NestedModel {
122
114
Message = "Level 1" ,
123
- Nested = new SampleModel {
115
+ Nested = new NestedModel {
124
116
Message = "Level 2" ,
125
- Nested = new SampleModel {
117
+ Nested = new NestedModel {
126
118
Message = "Level 3"
127
119
}
128
120
}
129
121
} ;
130
122
IJsonSerializer serializer = GetSerializer ( ) ;
131
- string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , nameof ( SampleModel . Collection ) , nameof ( SampleModel . Dictionary ) , "Date*" } , maxDepth : 2 ) ;
123
+ string json = serializer . Serialize ( data , new [ ] { nameof ( NestedModel . Number ) } , maxDepth : 2 ) ;
132
124
Assert . Equal ( @"{""message"":""Level 1"",""nested"":{""message"":""Level 2""}}" , json ) ;
133
125
}
134
126
135
127
[ Fact ]
136
128
public void WillIgnoreEmptyCollections ( ) {
137
- var data = new SampleModel {
138
- Date = DateTime . Now ,
129
+ var data = new DefaultsModel {
139
130
Message = "Testing" ,
140
131
Collection = new Collection < string > ( )
141
132
} ;
142
133
IJsonSerializer serializer = GetSerializer ( ) ;
143
- string json = serializer . Serialize ( data , new [ ] { nameof ( SampleModel . Nested ) , nameof ( SampleModel . Bool ) , nameof ( SampleModel . Number ) , "Date*" } ) ;
144
- Assert . Equal ( @"{""message"":""Testing"",""dictionary"":null }" , json ) ;
134
+ string json = serializer . Serialize ( data , new [ ] { nameof ( DefaultsModel . Bool ) , nameof ( DefaultsModel . Number ) } ) ;
135
+ Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
145
136
}
146
137
147
138
// TODO: Ability to deserialize objects without underscores
@@ -174,21 +165,24 @@ public void WillSerializeDeepExceptionWithStackInformation() {
174
165
try {
175
166
try {
176
167
throw new ArgumentException ( "This is the innermost argument exception" , "wrongArg" ) ;
177
- } catch ( Exception e1 ) {
168
+ }
169
+ catch ( Exception e1 ) {
178
170
throw new TargetInvocationException ( "Target invocation exception." , e1 ) ;
179
171
}
180
- } catch ( Exception e2 ) {
172
+ }
173
+ catch ( Exception e2 ) {
181
174
throw new TargetInvocationException ( "Outer Exception. This is some text of the outer exception." , e2 ) ;
182
175
}
183
- } catch ( Exception ex ) {
176
+ }
177
+ catch ( Exception ex ) {
184
178
var client = CreateClient ( ) ;
185
179
var error = ex . ToErrorModel ( client ) ;
186
180
var ev = new Event ( ) ;
187
181
ev . Data [ Event . KnownDataKeys . Error ] = error ;
188
182
189
183
IJsonSerializer serializer = GetSerializer ( ) ;
190
184
string json = serializer . Serialize ( ev ) ;
191
-
185
+
192
186
Assert . Contains ( String . Format ( "\" line_number\" :{0}" , error . Inner . Inner . StackTrace . Single ( ) . LineNumber ) , json ) ;
193
187
}
194
188
}
@@ -209,15 +203,22 @@ public class Blah {
209
203
public string BlahId { get ; set ; }
210
204
}
211
205
206
+ public class NestedModel {
207
+ public int Number { get ; set ; }
208
+ public string Message { get ; set ; }
209
+ public NestedModel Nested { get ; set ; }
210
+ }
211
+
212
212
public class SampleModel {
213
+ public DateTime Date { get ; set ; }
214
+ public string Message { get ; set ; }
215
+ }
216
+
217
+ public class DefaultsModel {
213
218
public int Number { get ; set ; }
214
219
public bool Bool { get ; set ; }
215
220
public string Message { get ; set ; }
216
- public DateTime Date { get ; set ; }
217
- public DateTimeOffset DateOffset { get ; set ; }
218
- public IDictionary < string , string > Dictionary { get ; set ; }
219
- public ICollection < string > Collection { get ; set ; }
220
- public SampleModel Nested { get ; set ; }
221
+ public ICollection < string > Collection { get ; set ; }
221
222
}
222
223
223
224
public class User {
0 commit comments