2
2
using System . Collections . Generic ;
3
3
using System . Collections . ObjectModel ;
4
4
using Exceptionless . Extensions ;
5
- using Exceptionless . Json ;
6
5
using Exceptionless . Models ;
7
6
using Exceptionless . Serializer ;
8
7
using Xunit ;
9
8
using System . Reflection ;
10
- using Exceptionless . Submission ;
11
- using Moq ;
12
9
using System . Linq ;
13
- using Exceptionless . Models . Data ;
14
- using Exceptionless . Dependency ;
10
+ using Exceptionless . Extras ;
15
11
16
12
namespace Exceptionless . Tests . Serializer {
17
13
public class SerializerTests {
@@ -21,15 +17,21 @@ protected virtual IJsonSerializer GetSerializer() {
21
17
22
18
[ Fact ]
23
19
public void CanSerialize ( ) {
24
- var data = new SampleModel { Date = DateTime . Now , Message = "Testing" } ;
20
+ var data = new SampleModel {
21
+ Date = DateTime . Now ,
22
+ Message = "Testing"
23
+ } ;
25
24
IJsonSerializer serializer = GetSerializer ( ) ;
26
25
string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
27
26
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
28
27
}
29
-
28
+
30
29
[ Fact ]
31
30
public void CanSerializeEvent ( ) {
32
- var ev = new Event { Date = DateTime . Now , Message = "Testing" } ;
31
+ var ev = new Event {
32
+ Date = DateTime . Now ,
33
+ Message = "Testing"
34
+ } ;
33
35
ev . Data [ "FirstName" ] = "Blake" ;
34
36
35
37
IJsonSerializer serializer = GetSerializer ( ) ;
@@ -40,23 +42,36 @@ public void CanSerializeEvent() {
40
42
41
43
[ Fact ]
42
44
public void CanExcludeProperties ( ) {
43
- var data = new SampleModel { Date = DateTime . Now , Message = "Testing" } ;
45
+ var data = new SampleModel {
46
+ Date = DateTime . Now ,
47
+ Message = "Testing"
48
+ } ;
44
49
IJsonSerializer serializer = GetSerializer ( ) ;
45
- string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
50
+ string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
46
51
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
47
52
}
48
53
49
54
[ Fact ]
50
55
public void CanExcludeNestedProperties ( ) {
51
- var data = new SampleModel { Date = DateTime . Now , Message = "Testing" , Nested = new SampleModel { Date = DateTime . Now , Message = "Nested" } } ;
56
+ var data = new SampleModel {
57
+ Date = DateTime . Now ,
58
+ Message = "Testing" ,
59
+ Nested = new SampleModel {
60
+ Date = DateTime . Now ,
61
+ Message = "Nested"
62
+ }
63
+ } ;
52
64
IJsonSerializer serializer = GetSerializer ( ) ;
53
65
string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
54
66
Assert . Equal ( @"{""message"":""Testing"",""nested"":{""message"":""Nested""}}" , json ) ;
55
67
}
56
68
57
69
[ Fact ]
58
70
public void WillIgnoreDefaultValues ( ) {
59
- var data = new SampleModel { Number = 0 , Bool = false } ;
71
+ var data = new SampleModel {
72
+ Number = 0 ,
73
+ Bool = false
74
+ } ;
60
75
IJsonSerializer serializer = GetSerializer ( ) ;
61
76
string json = serializer . Serialize ( data ) ;
62
77
Assert . Equal ( @"{}" , json ) ;
@@ -67,15 +82,27 @@ public void WillIgnoreDefaultValues() {
67
82
68
83
[ Fact ]
69
84
public void CanSetMaxDepth ( ) {
70
- var data = new SampleModel { Message = "Level 1" , Nested = new SampleModel { Message = "Level 2" , Nested = new SampleModel { Message = "Level 3" } } } ;
85
+ var data = new SampleModel {
86
+ Message = "Level 1" ,
87
+ Nested = new SampleModel {
88
+ Message = "Level 2" ,
89
+ Nested = new SampleModel {
90
+ Message = "Level 3"
91
+ }
92
+ }
93
+ } ;
71
94
IJsonSerializer serializer = GetSerializer ( ) ;
72
95
string json = serializer . Serialize ( data , maxDepth : 2 ) ;
73
96
Assert . Equal ( @"{""message"":""Level 1"",""nested"":{""message"":""Level 2""}}" , json ) ;
74
97
}
75
98
76
99
[ Fact ]
77
100
public void WillIgnoreEmptyCollections ( ) {
78
- var data = new SampleModel { Date = DateTime . Now , Message = "Testing" , Collection = new Collection < string > ( ) } ;
101
+ var data = new SampleModel {
102
+ Date = DateTime . Now ,
103
+ Message = "Testing" ,
104
+ Collection = new Collection < string > ( )
105
+ } ;
79
106
IJsonSerializer serializer = GetSerializer ( ) ;
80
107
string json = serializer . Serialize ( data , new [ ] { "Date" } ) ;
81
108
Assert . Equal ( @"{""message"":""Testing""}" , json ) ;
@@ -106,56 +133,35 @@ public void WillDeserializeReferenceIds() {
106
133
}
107
134
108
135
[ Fact ]
109
- public void WillSerializeDeepExceptionWithStackInformation ( )
110
- {
111
- try
112
- {
113
- try
114
- {
115
- try
116
- {
117
- throw new ArgumentException ( "This is the inner argument exception" , "wrongArg" ) ;
136
+ public void WillSerializeDeepExceptionWithStackInformation ( ) {
137
+ try {
138
+ try {
139
+ try {
140
+ throw new ArgumentException ( "This is the innermost argument exception" , "wrongArg" ) ;
141
+ } catch ( Exception e1 ) {
142
+ throw new TargetInvocationException ( "Target invocation exception." , e1 ) ;
118
143
}
119
- catch ( Exception e1 )
120
- {
121
- throw new TargetInvocationException ( "Target invocation exception. Blah blah blah blah." , e1 ) ;
122
- }
123
- }
124
- catch ( Exception e2 )
125
- {
144
+ } catch ( Exception e2 ) {
126
145
throw new TargetInvocationException ( "Outer Exception. This is some text of the outer exception." , e2 ) ;
127
146
}
147
+ } catch ( Exception ex ) {
148
+ var client = CreateClient ( ) ;
149
+ var error = ex . ToErrorModel ( client ) ;
150
+ var ev = new Event { Data = { [ Event . KnownDataKeys . Error ] = error } } ;
151
+
152
+ IJsonSerializer serializer = GetSerializer ( ) ;
153
+ string json = serializer . Serialize ( ev , maxDepth : 10 ) ;
154
+
155
+ Assert . Contains ( String . Format ( "\" line_number\" :{0}" , error . Inner . Inner . StackTrace . Single ( ) . LineNumber ) , json ) ;
128
156
}
129
- catch ( Exception exception )
130
- {
131
- Event e = null ;
132
- IJsonSerializer serializer = null ;
133
-
134
- var submissionMock = new Mock < ISubmissionClient > ( ) ;
135
- submissionMock . Setup ( c => c . PostEvents ( It . IsAny < IEnumerable < Event > > ( ) , It . IsAny < ExceptionlessConfiguration > ( ) , It . IsAny < IJsonSerializer > ( ) ) )
136
- . Returns ( ( IEnumerable < Event > a , ExceptionlessConfiguration b , IJsonSerializer c ) => {
137
- e = a . Single ( ) ;
138
- serializer = c ;
139
- return new SubmissionResponse ( 200 ) ;
140
- } ) ;
141
-
142
- ExceptionlessClient . Default . Configuration . Resolver . Register ( submissionMock . Object ) ;
143
- ExceptionlessClient . Default . Configuration . ApiKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ;
144
- ExceptionlessExtensions . Register ( ExceptionlessClient . Default ) ;
145
- exception . ToExceptionless ( ) . Submit ( ) ;
146
- ExceptionlessClient . Default . ProcessQueue ( ) ;
147
-
148
- var innerLineNumber = e . Data . GetValue < Error > ( Event . KnownDataKeys . Error )
149
- . Inner
150
- . Inner
151
- . StackTrace . Single ( )
152
- . LineNumber ;
153
-
154
- var serialized = serializer . Serialize ( e ) ;
155
- var expected = string . Format ( "\" line_number\" :{0}" , innerLineNumber ) ;
156
-
157
- Assert . Contains ( expected , serialized ) ;
158
- }
157
+ }
158
+
159
+ private ExceptionlessClient CreateClient ( ) {
160
+ return new ExceptionlessClient ( c => {
161
+ c . UseDebugLogger ( ) ;
162
+ c . ReadFromAttributes ( ) ;
163
+ c . UserAgent = "testclient/1.0.0.0" ;
164
+ } ) ;
159
165
}
160
166
}
161
167
0 commit comments