@@ -2,7 +2,7 @@ import * as assert from 'assert';
2
2
import { DataError , InvalidAccessTokenError , UnknownError } from '../src/error' ;
3
3
4
4
describe ( 'Error' , ( ) => {
5
- it ( 'UnknownError' , ( done ) => {
5
+ it ( 'UnknownError' , ( ) => {
6
6
let e = new UnknownError ( new Error ( 'Error message.' ) ) ;
7
7
8
8
assert . equal ( e . message , 'Error message.' ) ;
@@ -25,62 +25,130 @@ describe('Error', () => {
25
25
26
26
assert . equal ( err . message , 'Error message.' ) ;
27
27
assert . equal ( err . something , true ) ;
28
-
29
- done ( ) ;
30
28
} ) ;
31
29
32
- it ( 'DataError' , ( done ) => {
30
+ it ( 'DataError' , ( ) => {
33
31
const e = new DataError ( 'Some message.' ) ;
34
32
35
33
assert . equal ( e . name , 'DataError' ) ;
36
34
assert . equal ( e . message , 'Some message.' ) ;
37
35
assert . ok ( / ^ D a t a E r r o r : S o m e m e s s a g e .\n / . test ( e . stack ! ) ) ;
38
-
39
- done ( ) ;
40
36
} ) ;
41
37
42
- it ( 'InvalidAccessTokenError' , ( done ) => {
38
+ it ( 'InvalidAccessTokenError' , ( ) => {
43
39
const e = new InvalidAccessTokenError ( 'Some message.' ) ;
44
40
45
41
assert . equal ( e . name , 'InvalidAccessTokenError' ) ;
46
42
assert . equal ( e . message , 'Some message.' ) ;
47
43
assert . ok ( / ^ I n v a l i d A c c e s s T o k e n E r r o r : S o m e m e s s a g e .\n / . test ( e . stack ! ) ) ;
44
+ } ) ;
45
+
46
+ it ( 'JSON serialization with sub-error' , ( ) => {
47
+ const error : any = new DataError ( 'Some message.' ) ;
48
+ const subError = new TypeError ( 'Type message.' ) ;
49
+
50
+ error . hash = 'im-hash' ;
51
+ error . external = true ;
52
+ error . something = 'donotserializeme' ;
53
+ error . suberrors = [ subError ] ;
54
+ error . imtInternalError = subError ;
48
55
49
- done ( ) ;
56
+ assert . deepStrictEqual ( JSON . parse ( JSON . stringify ( error ) ) , {
57
+ name : 'DataError' ,
58
+ message : 'Some message.' ,
59
+ stack : error . stack ,
60
+ hash : 'im-hash' ,
61
+ external : true ,
62
+ suberrors : [
63
+ {
64
+ name : 'TypeError' ,
65
+ message : 'Type message.' ,
66
+ stack : subError . stack ,
67
+ } ,
68
+ ] ,
69
+ imtInternalError : {
70
+ name : 'TypeError' ,
71
+ message : 'Type message.' ,
72
+ stack : subError . stack ,
73
+ } ,
74
+ imtExceptionHash : 'im-hash' ,
75
+ } ) ;
50
76
} ) ;
51
77
52
- it ( 'JSON serialization' , ( done ) => {
53
- const e : any = new DataError ( 'Some message.' ) ;
54
- const ee = new TypeError ( 'Type message.' ) ;
78
+ it ( 'JSON serialization with sub-error and sub-sub-error' , ( ) => {
79
+ const error : any = new DataError ( 'Some message.' ) ;
80
+ const subError = new TypeError ( 'Type message.' ) ;
81
+ const subSubError = new TypeError ( 'Type message.' ) ;
55
82
56
- e . hash = 'im-hash' ;
57
- e . external = true ;
58
- e . something = 'donotserializeme' ;
59
- e . suberrors = [ ee ] ;
60
- e . imtInternalError = ee ;
83
+ error . hash = 'im-hash' ;
84
+ error . external = true ;
85
+ error . something = 'donotserializeme' ;
86
+ error . suberrors = [ subError ] ;
87
+ error . imtInternalError = subError ;
88
+ subError . suberrors = [ subSubError ] ;
61
89
62
- assert . deepStrictEqual ( e . toJSON ( ) , {
90
+ assert . deepStrictEqual ( JSON . parse ( JSON . stringify ( error ) ) , {
63
91
name : 'DataError' ,
64
92
message : 'Some message.' ,
65
- stack : e . stack ,
93
+ stack : error . stack ,
66
94
hash : 'im-hash' ,
67
95
external : true ,
68
96
suberrors : [
69
97
{
70
98
name : 'TypeError' ,
71
99
message : 'Type message.' ,
72
- stack : ee . stack ,
100
+ stack : subError . stack ,
101
+ suberrors : [
102
+ {
103
+ name : 'TypeError' ,
104
+ message : 'Type message.' ,
105
+ stack : subSubError . stack ,
106
+ } ,
107
+ ] ,
73
108
} ,
74
109
] ,
75
110
imtInternalError : {
76
111
name : 'TypeError' ,
77
112
message : 'Type message.' ,
78
- stack : ee . stack ,
113
+ stack : subError . stack ,
114
+ suberrors : [
115
+ {
116
+ name : 'TypeError' ,
117
+ message : 'Type message.' ,
118
+ stack : subSubError . stack ,
119
+ } ,
120
+ ] ,
79
121
} ,
80
122
imtExceptionHash : 'im-hash' ,
81
123
} ) ;
124
+ } ) ;
125
+
126
+ it ( 'JSON serialization with sub-error that is not an Error class instance' , ( ) => {
127
+ const error : any = new DataError ( 'Some message.' ) ;
128
+ const subError = { message : 'Type message.' } ;
129
+
130
+ error . hash = 'im-hash' ;
131
+ error . external = true ;
132
+ error . something = 'donotserializeme' ;
133
+ error . suberrors = [ subError ] ;
134
+ error . imtInternalError = subError ;
82
135
83
- done ( ) ;
136
+ assert . deepStrictEqual ( JSON . parse ( JSON . stringify ( error ) ) , {
137
+ name : 'DataError' ,
138
+ message : 'Some message.' ,
139
+ stack : error . stack ,
140
+ hash : 'im-hash' ,
141
+ external : true ,
142
+ suberrors : [
143
+ {
144
+ message : 'Type message.' ,
145
+ } ,
146
+ ] ,
147
+ imtInternalError : {
148
+ message : 'Type message.' ,
149
+ } ,
150
+ imtExceptionHash : 'im-hash' ,
151
+ } ) ;
84
152
} ) ;
85
153
86
154
it ( 'should keep hash and imtExceptionHash in sync' , ( ) => {
0 commit comments