@@ -3,62 +3,128 @@ var path = require('path');
3
3
var parser = require ( __dirname + '/../lib' ) ;
4
4
var assert = require ( 'assert' ) ;
5
5
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(result);
41
- // console.log('============ Expected ===============');
42
- // console.log(expected)
43
- assert . deepEqual ( result , expected , jsonFile + ' and ' + file + ' are different' ) ;
44
- console . log ( '[xml2json: ' + file + '->' + jsonFile + '] passed!' ) ;
45
- } else if ( ext == '.json' ) {
46
- var basename = path . basename ( file , '.json' ) ;
47
- if ( basename . match ( 'reversible' ) ) {
48
- var data = fs . readFileSync ( fixturesPath + '/' + file ) ;
49
- var result = parser . toXml ( data ) ;
50
-
51
- var xmlFile = basename . split ( '-' ) [ 0 ] + '.xml' ;
52
- var expected = fs . readFileSync ( fixturesPath + '/' + xmlFile ) + '' ;
53
-
54
- if ( expected ) {
55
- expected = expected . trim ( ) ;
56
- }
57
- //console.log(result + '<---');
58
- assert . deepEqual ( result , expected , xmlFile + ' and ' + file + ' are different' ) ;
59
- console . log ( '[json2xml: ' + file + '->' + xmlFile + '] passed!' ) ;
60
- }
61
- }
62
- }
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 ) . 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
+ } ) ;
63
109
} ) ;
64
110
111
+ describe ( 'json2xml' , function ( ) {
112
+
113
+ it ( 'converts domain to json' , function ( done ) {
114
+
115
+ var json = internals . readFixture ( 'domain-reversible.json' ) ;
116
+ var result = parser . toXml ( json ) ;
117
+ var xml = internals . readFixture ( 'domain.xml' ) ;
118
+
119
+ expect ( result + '\n' ) . to . deep . equal ( xml ) ;
120
+
121
+ done ( ) ;
122
+ } ) ;
123
+
124
+ } ) ;
125
+
126
+
127
+ internals . readFixture = function ( file ) {
128
+
129
+ return fs . readFileSync ( __dirname + '/fixtures/' + file , { encoding : 'utf-8' } ) ;
130
+ } ;
0 commit comments