@@ -3,64 +3,129 @@ var path = require('path');
33var parser = require ( __dirname + '/../lib' ) ;
44var assert = require ( 'assert' ) ;
55
6- var fixturesPath = __dirname + '/fixtures' ;
7-
8- fs . readdir ( fixturesPath , function ( err , files ) {
9- for ( var i in files ) {
10- var file = files [ i ] ;
11- var ext = path . extname ( file ) ;
12-
13- if ( ext == '.xml' ) {
14- var basename = path . basename ( file , '.xml' ) ;
15-
16- var data = fs . readFileSync ( fixturesPath + '/' + file ) ;
17- var result = parser . toJson ( data , { reversible : true } ) ;
18-
19- var data2 = fs . readFileSync ( fixturesPath + '/' + file ) ;
20- if ( file . indexOf ( 'spacetext' ) >= 0 ) {
21- result = parser . toJson ( data2 , { trim : false , coerce : false } ) ;
22- } else if ( file . indexOf ( 'coerce' ) >= 0 ) {
23- result = parser . toJson ( data2 , { coerce : false } ) ;
24- } else if ( file . indexOf ( 'domain' ) >= 0 ) {
25- result = parser . toJson ( data2 , { coerce : false } ) ;
26- } else if ( file . indexOf ( 'large' ) >= 0 ) {
27- result = parser . toJson ( data2 , { coerce : false , trim : true , sanitize : false } ) ;
28- } else if ( file . indexOf ( 'array-notation' ) >= 0 ) {
29- result = parser . toJson ( data2 , { arrayNotation : true } ) ;
30- } else {
31- result = parser . toJson ( data2 , { trim : false } ) ;
32- }
33-
34- var jsonFile = basename + '.json' ;
35- var expected = fs . readFileSync ( fixturesPath + '/' + jsonFile ) + '' ;
36-
37- if ( expected ) {
38- expected = expected . trim ( ) ;
39- }
40- // console.log('============ Got ===============');
41- // console.log(result);
42- // console.log('============ Expected ===============');
43- // console.log(expected)
44- // console.log('=====================================');
45- assert . deepEqual ( result , expected , jsonFile + ' and ' + file + ' are different' ) ;
46- console . log ( '[xml2json: ' + file + '->' + jsonFile + '] passed!' ) ;
47- } else if ( ext == '.json' ) {
48- var basename = path . basename ( file , '.json' ) ;
49- if ( basename . match ( 'reversible' ) ) {
50- var data = fs . readFileSync ( fixturesPath + '/' + file ) ;
51- var result = parser . toXml ( data ) ;
52-
53- var xmlFile = basename . split ( '-' ) [ 0 ] + '.xml' ;
54- var expected = fs . readFileSync ( fixturesPath + '/' + xmlFile ) + '' ;
55-
56- if ( expected ) {
57- expected = expected . trim ( ) ;
58- }
59- //console.log(result + '<---');
60- assert . deepEqual ( result , expected , xmlFile + ' and ' + file + ' are different' ) ;
61- console . log ( '[json2xml: ' + file + '->' + xmlFile + '] passed!' ) ;
62- }
63- }
64- }
6+ var Code = require ( 'code' ) ;
7+ var Lab = require ( 'lab' ) ;
8+
9+
10+ // Test shortcuts
11+
12+ var lab = exports . lab = Lab . script ( ) ;
13+ var expect = Code . expect ;
14+ var describe = lab . describe ;
15+ var it = lab . test ;
16+
17+ var internals = { } ;
18+
19+
20+ describe ( 'xml2json' , function ( ) {
21+
22+ it ( 'converts with array-notation' , function ( done ) {
23+
24+ var xml = internals . readFixture ( 'array-notation.xml' ) ;
25+ var result = parser . toJson ( xml , { arrayNotation : true } ) ;
26+ var json = internals . readFixture ( 'array-notation.json' ) ;
27+
28+ expect ( result ) . to . deep . equal ( json ) ;
29+
30+ done ( ) ;
31+ } ) ;
32+
33+ it ( 'coerces' , function ( done ) {
34+
35+ var xml = internals . readFixture ( 'coerce.xml' ) ;
36+ var result = parser . toJson ( xml , { coerce : false } ) ;
37+ var json = internals . readFixture ( 'coerce.json' ) ;
38+
39+ expect ( result + '\n' ) . to . deep . equal ( json ) ;
40+
41+ done ( ) ;
42+ } ) ;
43+
44+ it ( 'handles domain' , function ( done ) {
45+
46+ var xml = internals . readFixture ( 'domain.xml' ) ;
47+ var result = parser . toJson ( xml , { coerce : false } ) ;
48+ var json = internals . readFixture ( 'domain.json' ) ;
49+
50+ expect ( result + '\n' ) . to . deep . equal ( json ) ;
51+
52+ done ( ) ;
53+ } ) ;
54+
55+ it ( 'does large file' , function ( done ) {
56+
57+ var xml = internals . readFixture ( 'large.xml' ) ;
58+ var result = parser . toJson ( xml , { coerce : false , trim : true , sanitize : false } ) ;
59+ var json = internals . readFixture ( 'large.json' ) ;
60+
61+ expect ( result + '\n' ) . to . deep . equal ( json ) ;
62+
63+ done ( ) ;
64+ } ) ;
65+
66+ it ( 'handles reorder' , function ( done ) {
67+
68+ var xml = internals . readFixture ( 'reorder.xml' ) ;
69+ var result = parser . toJson ( xml , { } ) ;
70+ var json = internals . readFixture ( 'reorder.json' ) ;
71+
72+ expect ( result ) . to . deep . equal ( json ) ;
73+
74+ done ( ) ;
75+ } ) ;
76+
77+ it ( 'handles text with space' , function ( done ) {
78+
79+ var xml = internals . readFixture ( 'spacetext.xml' ) ;
80+ var result = parser . toJson ( xml , { coerce : false , trim : false } ) ;
81+ var json = internals . readFixture ( 'spacetext.json' ) ;
82+
83+ expect ( result ) . to . deep . equal ( json ) ;
84+
85+ done ( ) ;
86+ } ) ;
87+
88+ it ( 'does xmlsanitize' , function ( done ) {
89+
90+ var xml = internals . readFixture ( 'xmlsanitize.xml' ) ;
91+ var result = parser . toJson ( xml , { } ) ;
92+ var json = internals . readFixture ( 'xmlsanitize.json' ) ;
93+
94+ expect ( result ) . to . deep . equal ( json ) ;
95+
96+ done ( ) ;
97+ } ) ;
98+
99+ it ( 'throws error on bad options' , function ( done ) {
100+
101+ var throws = function ( ) {
102+
103+ var result = parser . toJson ( xml , { derp : true } ) ;
104+ } ;
105+
106+ expect ( throws ) . to . throw ( ) ;
107+ done ( ) ;
108+ } ) ;
109+ } ) ;
110+
111+
112+ describe ( 'json2xml' , function ( ) {
113+
114+ it ( 'converts domain to json' , function ( done ) {
115+
116+ var json = internals . readFixture ( 'domain-reversible.json' ) ;
117+ var result = parser . toXml ( json ) ;
118+ var xml = internals . readFixture ( 'domain.xml' ) ;
119+
120+ expect ( result + '\n' ) . to . deep . equal ( xml ) ;
121+
122+ done ( ) ;
123+ } ) ;
124+
65125} ) ;
66126
127+
128+ internals . readFixture = function ( file ) {
129+
130+ return fs . readFileSync ( __dirname + '/fixtures/' + file , { encoding : 'utf-8' } ) ;
131+ } ;
0 commit comments