1
+ /*global Mocha, assert*/
1
2
var Sinon = require ( "sinon" )
2
- var stringify = require ( ".." )
3
+ var stringify = require ( '../../vendor/json-stringify-safe/stringify' ) ;
4
+
3
5
function jsonify ( obj ) { return JSON . stringify ( obj , null , 2 ) }
4
6
5
7
describe ( "Stringify" , function ( ) {
6
8
it ( "must stringify circular objects" , function ( ) {
7
9
var obj = { name : "Alice" }
8
10
obj . self = obj
9
11
var json = stringify ( obj , null , 2 )
10
- json . must . eql ( jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
12
+ assert . deepEqual ( json , jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
11
13
} )
12
14
13
15
it ( "must stringify circular objects with intermediaries" , function ( ) {
14
16
var obj = { name : "Alice" }
15
17
obj . identity = { self : obj }
16
18
var json = stringify ( obj , null , 2 )
17
- json . must . eql ( jsonify ( { name : "Alice" , identity : { self : "[Circular ~]" } } ) )
19
+ assert . deepEqual ( json , jsonify ( { name : "Alice" , identity : { self : "[Circular ~]" } } ) )
18
20
} )
19
21
20
22
it ( "must stringify circular objects deeper" , function ( ) {
21
23
var obj = { name : "Alice" , child : { name : "Bob" } }
22
24
obj . child . self = obj . child
23
25
24
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( {
26
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( {
25
27
name : "Alice" ,
26
28
child : { name : "Bob" , self : "[Circular ~.child]" }
27
29
} ) )
@@ -31,7 +33,7 @@ describe("Stringify", function() {
31
33
var obj = { name : "Alice" , child : { name : "Bob" } }
32
34
obj . child . identity = { self : obj . child }
33
35
34
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( {
36
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( {
35
37
name : "Alice" ,
36
38
child : { name : "Bob" , identity : { self : "[Circular ~.child]" } }
37
39
} ) )
@@ -41,7 +43,7 @@ describe("Stringify", function() {
41
43
var obj = { name : "Alice" }
42
44
obj . self = [ obj , obj ]
43
45
44
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( {
46
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( {
45
47
name : "Alice" , self : [ "[Circular ~]" , "[Circular ~]" ]
46
48
} ) )
47
49
} )
@@ -51,7 +53,7 @@ describe("Stringify", function() {
51
53
obj . children [ 0 ] . self = obj . children [ 0 ]
52
54
obj . children [ 1 ] . self = obj . children [ 1 ]
53
55
54
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( {
56
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( {
55
57
name : "Alice" ,
56
58
children : [
57
59
{ name : "Bob" , self : "[Circular ~.children.0]" } ,
@@ -65,15 +67,15 @@ describe("Stringify", function() {
65
67
obj . push ( obj )
66
68
obj . push ( obj )
67
69
var json = stringify ( obj , null , 2 )
68
- json . must . eql ( jsonify ( [ "[Circular ~]" , "[Circular ~]" ] ) )
70
+ assert . deepEqual ( json , jsonify ( [ "[Circular ~]" , "[Circular ~]" ] ) )
69
71
} )
70
72
71
73
it ( "must stringify circular arrays with intermediaries" , function ( ) {
72
74
var obj = [ ]
73
75
obj . push ( { name : "Alice" , self : obj } )
74
76
obj . push ( { name : "Bob" , self : obj } )
75
77
76
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( [
78
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( [
77
79
{ name : "Alice" , self : "[Circular ~]" } ,
78
80
{ name : "Bob" , self : "[Circular ~]" }
79
81
] ) )
@@ -85,7 +87,7 @@ describe("Stringify", function() {
85
87
obj . alice1 = alice
86
88
obj . alice2 = alice
87
89
88
- stringify ( obj , null , 2 ) . must . eql ( jsonify ( {
90
+ assert . deepEqual ( stringify ( obj , null , 2 ) , jsonify ( {
89
91
alice1 : { name : "Alice" } ,
90
92
alice2 : { name : "Alice" }
91
93
} ) )
@@ -95,7 +97,7 @@ describe("Stringify", function() {
95
97
var alice = { name : "Alice" }
96
98
var obj = [ alice , alice ]
97
99
var json = stringify ( obj , null , 2 )
98
- json . must . eql ( jsonify ( [ { name : "Alice" } , { name : "Alice" } ] ) )
100
+ assert . deepEqual ( json , jsonify ( [ { name : "Alice" } , { name : "Alice" } ] ) )
99
101
} )
100
102
101
103
it ( "must call given decycler and use its output" , function ( ) {
@@ -105,36 +107,36 @@ describe("Stringify", function() {
105
107
106
108
var decycle = Sinon . spy ( function ( ) { return decycle . callCount } )
107
109
var json = stringify ( obj , null , 2 , decycle )
108
- json . must . eql ( jsonify ( { a : 1 , b : 2 } , null , 2 ) )
110
+ assert . deepEqual ( json , jsonify ( { a : 1 , b : 2 } , null , 2 ) )
109
111
110
- decycle . callCount . must . equal ( 2 )
111
- decycle . thisValues [ 0 ] . must . equal ( obj )
112
- decycle . args [ 0 ] [ 0 ] . must . equal ( "a" )
113
- decycle . args [ 0 ] [ 1 ] . must . equal ( obj )
114
- decycle . thisValues [ 1 ] . must . equal ( obj )
115
- decycle . args [ 1 ] [ 0 ] . must . equal ( "b" )
116
- decycle . args [ 1 ] [ 1 ] . must . equal ( obj )
112
+ assert . strictEqual ( decycle . callCount , 2 )
113
+ assert . strictEqual ( decycle . thisValues [ 0 ] , obj )
114
+ assert . strictEqual ( decycle . args [ 0 ] [ 0 ] , "a" )
115
+ assert . strictEqual ( decycle . args [ 0 ] [ 1 ] , obj )
116
+ assert . strictEqual ( decycle . thisValues [ 1 ] , obj )
117
+ assert . strictEqual ( decycle . args [ 1 ] [ 0 ] , "b" )
118
+ assert . strictEqual ( decycle . args [ 1 ] [ 1 ] , obj )
117
119
} )
118
120
119
121
it ( "must call replacer and use its output" , function ( ) {
120
122
var obj = { name : "Alice" , child : { name : "Bob" } }
121
123
122
124
var replacer = Sinon . spy ( bangString )
123
125
var json = stringify ( obj , replacer , 2 )
124
- json . must . eql ( jsonify ( { name : "Alice!" , child : { name : "Bob!" } } ) )
125
-
126
- replacer . callCount . must . equal ( 4 )
127
- replacer . args [ 0 ] [ 0 ] . must . equal ( "" )
128
- replacer . args [ 0 ] [ 1 ] . must . equal ( obj )
129
- replacer . thisValues [ 1 ] . must . equal ( obj )
130
- replacer . args [ 1 ] [ 0 ] . must . equal ( "name" )
131
- replacer . args [ 1 ] [ 1 ] . must . equal ( "Alice" )
132
- replacer . thisValues [ 2 ] . must . equal ( obj )
133
- replacer . args [ 2 ] [ 0 ] . must . equal ( "child" )
134
- replacer . args [ 2 ] [ 1 ] . must . equal ( obj . child )
135
- replacer . thisValues [ 3 ] . must . equal ( obj . child )
136
- replacer . args [ 3 ] [ 0 ] . must . equal ( "name" )
137
- replacer . args [ 3 ] [ 1 ] . must . equal ( "Bob" )
126
+ assert . deepEqual ( json , jsonify ( { name : "Alice!" , child : { name : "Bob!" } } ) )
127
+
128
+ assert . strictEqual ( replacer . callCount , 4 )
129
+ assert . strictEqual ( replacer . args [ 0 ] [ 0 ] , "" )
130
+ assert . strictEqual ( replacer . args [ 0 ] [ 1 ] , obj )
131
+ assert . strictEqual ( replacer . thisValues [ 1 ] , obj )
132
+ assert . strictEqual ( replacer . args [ 1 ] [ 0 ] , "name" )
133
+ assert . strictEqual ( replacer . args [ 1 ] [ 1 ] , "Alice" )
134
+ assert . strictEqual ( replacer . thisValues [ 2 ] , obj )
135
+ assert . strictEqual ( replacer . args [ 2 ] [ 0 ] , "child" )
136
+ assert . strictEqual ( replacer . args [ 2 ] [ 1 ] , obj . child )
137
+ assert . strictEqual ( replacer . thisValues [ 3 ] , obj . child )
138
+ assert . strictEqual ( replacer . args [ 3 ] [ 0 ] , "name" )
139
+ assert . strictEqual ( replacer . args [ 3 ] [ 1 ] , "Bob" )
138
140
} )
139
141
140
142
it ( "must call replacer after describing circular references" , function ( ) {
@@ -143,17 +145,17 @@ describe("Stringify", function() {
143
145
144
146
var replacer = Sinon . spy ( bangString )
145
147
var json = stringify ( obj , replacer , 2 )
146
- json . must . eql ( jsonify ( { name : "Alice!" , self : "[Circular ~]!" } ) )
148
+ assert . deepEqual ( json , jsonify ( { name : "Alice!" , self : "[Circular ~]!" } ) )
147
149
148
- replacer . callCount . must . equal ( 3 )
149
- replacer . args [ 0 ] [ 0 ] . must . equal ( "" )
150
- replacer . args [ 0 ] [ 1 ] . must . equal ( obj )
151
- replacer . thisValues [ 1 ] . must . equal ( obj )
152
- replacer . args [ 1 ] [ 0 ] . must . equal ( "name" )
153
- replacer . args [ 1 ] [ 1 ] . must . equal ( "Alice" )
154
- replacer . thisValues [ 2 ] . must . equal ( obj )
155
- replacer . args [ 2 ] [ 0 ] . must . equal ( "self" )
156
- replacer . args [ 2 ] [ 1 ] . must . equal ( "[Circular ~]" )
150
+ assert . strictEqual ( replacer . callCount , 3 )
151
+ assert . strictEqual ( replacer . args [ 0 ] [ 0 ] , "" )
152
+ assert . strictEqual ( replacer . args [ 0 ] [ 1 ] , obj )
153
+ assert . strictEqual ( replacer . thisValues [ 1 ] , obj )
154
+ assert . strictEqual ( replacer . args [ 1 ] [ 0 ] , "name" )
155
+ assert . strictEqual ( replacer . args [ 1 ] [ 1 ] , "Alice" )
156
+ assert . strictEqual ( replacer . thisValues [ 2 ] , obj )
157
+ assert . strictEqual ( replacer . args [ 2 ] [ 0 ] , "self" )
158
+ assert . strictEqual ( replacer . args [ 2 ] [ 1 ] , "[Circular ~]" )
157
159
} )
158
160
159
161
it ( "must call given decycler and use its output for nested objects" ,
@@ -164,13 +166,13 @@ describe("Stringify", function() {
164
166
165
167
var decycle = Sinon . spy ( function ( ) { return decycle . callCount } )
166
168
var json = stringify ( obj , null , 2 , decycle )
167
- json . must . eql ( jsonify ( { a : 1 , b : { self : 2 } } ) )
169
+ assert . deepEqual ( json , jsonify ( { a : 1 , b : { self : 2 } } ) )
168
170
169
- decycle . callCount . must . equal ( 2 )
170
- decycle . args [ 0 ] [ 0 ] . must . equal ( "a" )
171
- decycle . args [ 0 ] [ 1 ] . must . equal ( obj )
172
- decycle . args [ 1 ] [ 0 ] . must . equal ( "self" )
173
- decycle . args [ 1 ] [ 1 ] . must . equal ( obj )
171
+ assert . strictEqual ( decycle . callCount , 2 )
172
+ assert . strictEqual ( decycle . args [ 0 ] [ 0 ] , "a" )
173
+ assert . strictEqual ( decycle . args [ 0 ] [ 1 ] , obj )
174
+ assert . strictEqual ( decycle . args [ 1 ] [ 0 ] , "self" )
175
+ assert . strictEqual ( decycle . args [ 1 ] [ 1 ] , obj )
174
176
} )
175
177
176
178
it ( "must use decycler's output when it returned null" , function ( ) {
@@ -179,7 +181,7 @@ describe("Stringify", function() {
179
181
obj . selves = [ obj , obj ]
180
182
181
183
function decycle ( ) { return null }
182
- stringify ( obj , null , 2 , decycle ) . must . eql ( jsonify ( {
184
+ assert . deepEqual ( stringify ( obj , null , 2 , decycle ) , jsonify ( {
183
185
a : "b" ,
184
186
self : null ,
185
187
selves : [ null , null ]
@@ -192,7 +194,7 @@ describe("Stringify", function() {
192
194
obj . selves = [ obj , obj ]
193
195
194
196
function decycle ( ) { }
195
- stringify ( obj , null , 2 , decycle ) . must . eql ( jsonify ( {
197
+ assert . deepEqual ( stringify ( obj , null , 2 , decycle ) , jsonify ( {
196
198
a : "b" ,
197
199
selves : [ null , null ]
198
200
} ) )
@@ -204,7 +206,7 @@ describe("Stringify", function() {
204
206
var err
205
207
function identity ( key , value ) { return value }
206
208
try { stringify ( obj , null , 2 , identity ) } catch ( ex ) { err = ex }
207
- err . must . be . an . instanceof ( TypeError )
209
+ assert . ok ( err instanceof TypeError )
208
210
} )
209
211
210
212
describe ( ".getSerialize" , function ( ) {
@@ -214,7 +216,7 @@ describe("Stringify", function() {
214
216
obj . list = [ obj , obj ]
215
217
216
218
var json = JSON . stringify ( obj , stringify . getSerialize ( ) , 2 )
217
- json . must . eql ( jsonify ( {
219
+ assert . deepEqual ( json , jsonify ( {
218
220
"a" : "b" ,
219
221
"circularRef" : "[Circular ~]" ,
220
222
"list" : [ "[Circular ~]" , "[Circular ~]" ]
@@ -233,10 +235,10 @@ describe("Stringify", function() {
233
235
var serializer = stringify . getSerialize ( )
234
236
235
237
json = JSON . stringify ( obj , serializer , 2 )
236
- json . must . eql ( jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
238
+ assert . deepEqual ( json , jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
237
239
238
240
json = JSON . stringify ( obj , serializer , 2 )
239
- json . must . eql ( jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
241
+ assert . deepEqual ( json , jsonify ( { name : "Alice" , self : "[Circular ~]" } ) )
240
242
} )
241
243
} )
242
244
} )
0 commit comments