@@ -106,6 +106,50 @@ describe('xml2json', function () {
106
106
expect ( throws ) . to . throw ( ) ;
107
107
done ( ) ;
108
108
} ) ;
109
+
110
+ describe ( 'coercion' , function ( ) {
111
+
112
+ var file = __dirname + '/fixtures/coerce.xml' ;
113
+ var data = fs . readFileSync ( file ) ;
114
+
115
+ it ( 'works with coercion' , function ( done ) {
116
+
117
+ // With coercion
118
+ var result = parser . toJson ( data , { reversible : true , coerce : true , object : true } ) ;
119
+ expect ( result . itemRecord . value [ 0 ] . longValue [ '$t' ] ) . to . equal ( 12345 ) ;
120
+ expect ( result . itemRecord . value [ 1 ] . stringValue . number ) . to . equal ( false ) ;
121
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . number ) . to . equal ( true ) ;
122
+ expect ( result . itemRecord . value [ 2 ] . moneyValue [ '$t' ] ) . to . equal ( 104.95 ) ;
123
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . text ) . to . equal ( 123.45 ) ;
124
+ expect ( result . itemRecord . value [ 8 ] . text [ '$t' ] ) . to . equal ( 42.42 ) ;
125
+ done ( ) ;
126
+ } ) ;
127
+
128
+ it ( 'works without coercion' , function ( done ) {
129
+
130
+ var result = parser . toJson ( data , { reversible : true , coerce : false , object : true } ) ;
131
+ expect ( result . itemRecord . value [ 0 ] . longValue [ '$t' ] ) . to . equal ( '12345' ) ;
132
+ expect ( result . itemRecord . value [ 1 ] . stringValue . number ) . to . equal ( 'false' ) ;
133
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . number ) . to . equal ( 'true' ) ;
134
+ expect ( result . itemRecord . value [ 2 ] . moneyValue [ '$t' ] ) . to . equal ( '104.95' ) ;
135
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . text ) . to . equal ( '123.45' ) ;
136
+ expect ( result . itemRecord . value [ 8 ] . text [ '$t' ] ) . to . equal ( '42.42' ) ;
137
+ done ( ) ;
138
+ } ) ;
139
+
140
+ it ( 'works with coercion as an optional object' , function ( done ) {
141
+
142
+ var result = parser . toJson ( data , { reversible : true , coerce : { text :String } , object : true } ) ;
143
+ expect ( result . itemRecord . value [ 0 ] . longValue [ '$t' ] ) . to . equal ( 12345 ) ;
144
+ expect ( result . itemRecord . value [ 1 ] . stringValue . number ) . to . equal ( false ) ;
145
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . number ) . to . equal ( true ) ;
146
+ expect ( result . itemRecord . value [ 2 ] . moneyValue [ '$t' ] ) . to . equal ( 104.95 ) ;
147
+ expect ( result . itemRecord . value [ 2 ] . moneyValue . text ) . to . equal ( '123.45' ) ;
148
+ expect ( result . itemRecord . value [ 8 ] . text [ '$t' ] ) . to . equal ( '42.42' ) ;
149
+ done ( ) ;
150
+ } ) ;
151
+ } )
152
+
109
153
} ) ;
110
154
111
155
@@ -122,6 +166,17 @@ describe('json2xml', function () {
122
166
done ( ) ;
123
167
} ) ;
124
168
169
+ it ( 'works with array notation' , function ( done ) {
170
+
171
+ var xml = fs . readFileSync ( './test/fixtures/array-notation.xml' ) ;
172
+ var expectedJson = JSON . parse ( fs . readFileSync ( './test/fixtures/array-notation.json' ) ) ;
173
+
174
+ var json = parser . toJson ( xml , { object : true , arrayNotation : true } ) ;
175
+
176
+ expect ( json ) . to . deep . equal ( expectedJson ) ;
177
+
178
+ done ( ) ;
179
+ } ) ;
125
180
} ) ;
126
181
127
182
0 commit comments