@@ -4,7 +4,7 @@ describe('json', function() {
4
4
5
5
describe ( 'fromJson' , function ( ) {
6
6
7
- it ( 'should delegate to native parser ' , function ( ) {
7
+ it ( 'should delegate to JSON.parse ' , function ( ) {
8
8
var spy = spyOn ( JSON , 'parse' ) . andCallThrough ( ) ;
9
9
10
10
expect ( fromJson ( '{}' ) ) . toEqual ( { } ) ;
@@ -13,125 +13,46 @@ describe('json', function() {
13
13
} ) ;
14
14
15
15
16
- it ( 'should serialize primitives' , function ( ) {
17
- expect ( toJson ( 0 / 0 ) ) . toEqual ( 'null' ) ;
18
- expect ( toJson ( null ) ) . toEqual ( 'null' ) ;
19
- expect ( toJson ( true ) ) . toEqual ( 'true' ) ;
20
- expect ( toJson ( false ) ) . toEqual ( 'false' ) ;
21
- expect ( toJson ( 123.45 ) ) . toEqual ( '123.45' ) ;
22
- expect ( toJson ( 'abc' ) ) . toEqual ( '"abc"' ) ;
23
- expect ( toJson ( 'a \t \n \r b \\' ) ) . toEqual ( '"a \\t \\n \\r b \\\\"' ) ;
24
- } ) ;
25
-
26
- it ( 'should not serialize $$properties' , function ( ) {
27
- expect ( toJson ( { $$some :'value' , 'this' :1 , '$parent' :1 } , false ) ) . toEqual ( '{}' ) ;
28
- } ) ;
29
-
30
- it ( 'should not serialize this or $parent' , function ( ) {
31
- expect ( toJson ( { 'this' :'value' , $parent :'abc' } , false ) ) . toEqual ( '{}' ) ;
32
- } ) ;
16
+ describe ( 'toJson' , function ( ) {
33
17
34
- it ( 'should serialize strings with escaped characters' , function ( ) {
35
- expect ( toJson ( "7\\\"7" ) ) . toEqual ( "\"7\\\\\\\"7\"" ) ;
36
- } ) ;
37
-
38
- it ( 'should serialize objects' , function ( ) {
39
- expect ( toJson ( { a : 1 , b : 2 } ) ) . toEqual ( '{"a":1,"b":2}' ) ;
40
- expect ( toJson ( { a : { b : 2 } } ) ) . toEqual ( '{"a":{"b":2}}' ) ;
41
- expect ( toJson ( { a : { b : { c : 0 } } } ) ) . toEqual ( '{"a":{"b":{"c":0}}}' ) ;
42
- expect ( toJson ( { a : { b : 0 / 0 } } ) ) . toEqual ( '{"a":{"b":null}}' ) ;
43
- } ) ;
44
-
45
- it ( 'should format objects pretty' , function ( ) {
46
- expect ( toJson ( { a : 1 , b : 2 } , true ) ) . toEqual ( '{\n "a":1,\n "b":2}' ) ;
47
- expect ( toJson ( { a : { b : 2 } } , true ) ) . toEqual ( '{\n "a":{\n "b":2}}' ) ;
48
- } ) ;
18
+ it ( 'should delegate to JSON.stringify' , function ( ) {
19
+ var spy = spyOn ( JSON , 'stringify' ) . andCallThrough ( ) ;
49
20
50
- it ( 'should serialize array' , function ( ) {
51
- expect ( toJson ( [ ] ) ) . toEqual ( '[]' ) ;
52
- expect ( toJson ( [ 1 , 'b' ] ) ) . toEqual ( '[1,"b"]' ) ;
53
- } ) ;
54
-
55
- it ( 'should serialize RegExp' , function ( ) {
56
- expect ( toJson ( / f o o / ) ) . toEqual ( '"/foo/"' ) ;
57
- expect ( toJson ( [ 1 , new RegExp ( 'foo' ) ] ) ) . toEqual ( '[1,"/foo/"]' ) ;
58
- } ) ;
59
-
60
- it ( 'should ignore functions' , function ( ) {
61
- expect ( toJson ( [ function ( ) { } , 1 ] ) ) . toEqual ( '[null,1]' ) ;
62
- expect ( toJson ( { a :function ( ) { } } ) ) . toEqual ( '{}' ) ;
63
- } ) ;
64
-
65
- it ( 'should serialize array with empty items' , function ( ) {
66
- var a = [ ] ;
67
- a [ 1 ] = 'X' ;
68
- expect ( toJson ( a ) ) . toEqual ( '[null,"X"]' ) ;
69
- } ) ;
70
-
71
- it ( 'should escape unicode' , function ( ) {
72
- expect ( '\u00a0' . length ) . toEqual ( 1 ) ;
73
- expect ( toJson ( '\u00a0' ) . length ) . toEqual ( 8 ) ;
74
- expect ( fromJson ( toJson ( '\u00a0' ) ) . length ) . toEqual ( 1 ) ;
75
- } ) ;
76
-
77
- it ( 'should serialize UTC dates' , function ( ) {
78
- var date = new angular . mock . TzDate ( - 1 , '2009-10-09T01:02:03.027Z' ) ;
79
- expect ( toJson ( date ) ) . toEqual ( '"2009-10-09T01:02:03.027Z"' ) ;
80
- } ) ;
81
-
82
- it ( 'should prevent recursion' , function ( ) {
83
- var obj = { a : 'b' } ;
84
- obj . recursion = obj ;
85
- expect ( angular . toJson ( obj ) ) . toEqual ( '{"a":"b","recursion":RECURSION}' ) ;
86
- } ) ;
21
+ expect ( toJson ( { } ) ) . toEqual ( '{}' ) ;
22
+ expect ( spy ) . toHaveBeenCalled ( ) ;
23
+ } ) ;
87
24
88
- it ( 'should serialize $ properties' , function ( ) {
89
- var obj = { $a : 'a' } ;
90
- expect ( angular . toJson ( obj ) ) . toEqual ( '{"$a":"a"}' ) ;
91
- } ) ;
92
25
93
- it ( 'should NOT serialize inherited properties ' , function ( ) {
94
- // This is what native Browser does
95
- var obj = inherit ( { p : 'p' } ) ;
96
- obj . a = 'a' ;
97
- expect ( angular . toJson ( obj ) ) . toEqual ( '{ "a":"a" }') ;
98
- } ) ;
26
+ it ( 'should format objects pretty ' , function ( ) {
27
+ expect ( toJson ( { a : 1 , b : 2 } , true ) ) .
28
+ toBeOneOf ( '{\n "a": 1,\n "b": 2\n}' , '{\n "a":1,\n "b":2\n}' ) ;
29
+ expect ( toJson ( { a : { b : 2 } } , true ) ) .
30
+ toBeOneOf ( '{\n "a": {\n "b": 2\n }\n}' , '{\n "a":{\n "b":2\n }\n }') ;
31
+ } ) ;
99
32
100
- it ( 'should serialize same objects multiple times' , function ( ) {
101
- var obj = { a :'b' } ;
102
- expect ( angular . toJson ( { A :obj , B :obj } ) ) . toEqual ( '{"A":{"a":"b"},"B":{"a":"b"}}' ) ;
103
- } ) ;
104
33
105
- it ( 'should not serialize undefined values ' , function ( ) {
106
- expect ( angular . toJson ( { A : undefined } ) ) . toEqual ( '{}' ) ;
107
- } ) ;
34
+ it ( 'should not serialize properties starting with $ ' , function ( ) {
35
+ expect ( toJson ( { $few : 'v' , $$some : 'value' } , false ) ) . toEqual ( '{}' ) ;
36
+ } ) ;
108
37
109
- it ( 'should not serialize $window object' , function ( ) {
110
- expect ( toJson ( window ) ) . toEqual ( 'WINDOW' ) ;
111
- } ) ;
112
38
113
- it ( 'should not serialize $document object ' , function ( ) {
114
- expect ( toJson ( document ) ) . toEqual ( 'DOCUMENT ' ) ;
115
- } ) ;
39
+ it ( 'should not serialize undefined values ' , function ( ) {
40
+ expect ( angular . toJson ( { A : undefined } ) ) . toEqual ( '{} ' ) ;
41
+ } ) ;
116
42
117
43
118
- describe ( 'string' , function ( ) {
119
- it ( 'should quote' , function ( ) {
120
- expect ( quoteUnicode ( 'a' ) ) . toBe ( '"a"' ) ;
121
- expect ( quoteUnicode ( '\\' ) ) . toBe ( '"\\\\"' ) ;
122
- expect ( quoteUnicode ( "'a'" ) ) . toBe ( '"\'a\'"' ) ;
123
- expect ( quoteUnicode ( '"a"' ) ) . toBe ( '"\\"a\\""' ) ;
124
- expect ( quoteUnicode ( '\n\f\r\t' ) ) . toBe ( '"\\n\\f\\r\\t"' ) ;
44
+ it ( 'should not serialize $window object' , function ( ) {
45
+ expect ( toJson ( window ) ) . toEqual ( '"$WINDOW"' ) ;
125
46
} ) ;
126
47
127
- it ( 'should quote slashes' , function ( ) {
128
- expect ( quoteUnicode ( "7\\\"7" ) ) . toBe ( '"7\\\\\\\"7"' ) ;
129
- } ) ;
130
48
131
- it ( 'should quote unicode ' , function ( ) {
132
- expect ( quoteUnicode ( 'abc\u00A0def' ) ) . toBe ( '"abc\\u00a0def "' ) ;
49
+ it ( 'should not serialize $document object ' , function ( ) {
50
+ expect ( toJson ( document ) ) . toEqual ( '"$DOCUMENT "' ) ;
133
51
} ) ;
134
52
135
- } ) ;
136
53
54
+ it ( 'should not serialize scope instances' , inject ( function ( $rootScope ) {
55
+ expect ( toJson ( { key : $rootScope } ) ) . toEqual ( '{"key":"$SCOPE"}' ) ;
56
+ } ) ) ;
57
+ } ) ;
137
58
} ) ;
0 commit comments