corrade-nucleus-nucleons – Blame information for rev 37
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
37 | office | 1 | (function (root, factory) { |
2 | 'use strict'; |
||
3 | |||
4 | if (typeof module === 'object' && module.exports) { |
||
5 | // Node. Does not work with strict CommonJS, but only CommonJS-like
|
||
6 | // environments that support module.exports, like Node.
|
||
7 | factory(require('./x2js'), require('qunit-cli')); |
||
8 | } else { |
||
9 | // Browser globals (root is window)
|
||
10 | factory(root.X2JS, root.QUnit); |
||
11 | } |
||
12 | })(this, function (X2JS, QUnit) { |
||
13 | 'use strict'; |
||
14 | |||
15 | // Test cases are full of magic numbers and that's fine.
|
||
16 | /* eslint-disable no-magic-numbers */ |
||
17 | |||
18 | QUnit.module('Configuration options'); |
||
19 | |||
20 | QUnit.test('Default attribute prefix', function (assert) { |
||
21 | var xml = '<document><element attribute="value" /></document>'; |
||
22 | var x = new X2JS(); |
||
23 | var js = x.xml2js(xml); |
||
24 | |||
25 | assert.ok(js.document); |
||
26 | assert.ok(js.document.element); |
||
27 | assert.ok(js.document.element._attribute); |
||
28 | assert.strictEqual(js.document.element._attribute, 'value'); |
||
29 | }); |
||
30 | |||
31 | QUnit.test('Empty attribute prefix', function (assert) { |
||
32 | var xml = '<document><element attribute="value" /></document>'; |
||
33 | var x = new X2JS({ |
||
34 | 'attributePrefix': '' |
||
35 | }); |
||
36 | var js = x.xml2js(xml); |
||
37 | |||
38 | assert.ok(js.document); |
||
39 | assert.ok(js.document.element); |
||
40 | assert.ok(js.document.element.attribute); |
||
41 | assert.strictEqual(js.document.element.attribute, 'value'); |
||
42 | }); |
||
43 | |||
44 | QUnit.test('Custom nonempty attribute prefix', function (assert) { |
||
45 | var xml = '<document><element attribute="value" /></document>'; |
||
46 | var x = new X2JS({ |
||
47 | 'attributePrefix': '$$' |
||
48 | }); |
||
49 | var js = x.xml2js(xml); |
||
50 | |||
51 | assert.ok(js.document); |
||
52 | assert.ok(js.document.element); |
||
53 | assert.ok(js.document.element.$$attribute); |
||
54 | assert.strictEqual(js.document.element.$$attribute, 'value'); |
||
55 | }); |
||
56 | |||
57 | QUnit.test('Attribute converters run but only when appropriate', function (assert) { |
||
58 | var xml = '<Root><element test1="FAIL" test2="success 2.1">first</element><element test1="FAIL 1.2" test2="success 2.2">second</element></Root>'; |
||
59 | var x = new X2JS({ |
||
60 | 'attributeConverters': [ |
||
61 | { |
||
62 | 'test': function (name, value) { |
||
63 | return name === 'test1'; |
||
64 | }, |
||
65 | 'convert': function (name, value) { |
||
66 | return 'success 1.*'; |
||
67 | } |
||
68 | } |
||
69 | ] |
||
70 | }); |
||
71 | var js = x.xml2js(xml); |
||
72 | |||
73 | assert.ok(js.Root); |
||
74 | assert.ok(js.Root.element); |
||
75 | assert.ok(js.Root.element.length); |
||
76 | assert.ok(js.Root.element[0]); |
||
77 | assert.ok(js.Root.element[0]._test1); |
||
78 | assert.ok(js.Root.element[0]._test2); |
||
79 | assert.strictEqual(js.Root.element[0]._test1, 'success 1.*'); |
||
80 | assert.strictEqual(js.Root.element[0]._test2, 'success 2.1'); |
||
81 | assert.strictEqual(js.Root.element[1]._test1, 'success 1.*'); |
||
82 | assert.strictEqual(js.Root.element[1]._test2, 'success 2.2'); |
||
83 | }); |
||
84 | |||
85 | QUnit.test('Root element is dropped with ignoreRoot=true', function (assert) { |
||
86 | var xml = '<document><element attribute="value" /></document>'; |
||
87 | var x = new X2JS({ |
||
88 | 'ignoreRoot': true |
||
89 | }); |
||
90 | var js = x.xml2js(xml); |
||
91 | |||
92 | assert.notOk(js.document); |
||
93 | assert.ok(js.element); |
||
94 | }); |
||
95 | |||
96 | QUnit.test('Array access-form override via path', function (assert) { |
||
97 | var xml = '<document><element attribute="value" /></document>'; |
||
98 | var x = new X2JS({ |
||
99 | 'arrayAccessFormPaths': [ |
||
100 | 'document.element' |
||
101 | ] |
||
102 | }); |
||
103 | var js = x.xml2js(xml); |
||
104 | |||
105 | assert.ok(js.document); |
||
106 | assert.ok(js.document.element); |
||
107 | assert.ok(js.document.element.length); |
||
108 | assert.strictEqual(js.document.element.length, 1); |
||
109 | assert.ok(js.document.element[0], 'value'); |
||
110 | }); |
||
111 | |||
112 | QUnit.test('Array access-form override via regex', function (assert) { |
||
113 | var xml = '<document><element attribute="value" /></document>'; |
||
114 | var x = new X2JS({ |
||
115 | 'arrayAccessFormPaths': [ |
||
116 | /.*\.element$/ |
||
117 | ] |
||
118 | }); |
||
119 | var js = x.xml2js(xml); |
||
120 | |||
121 | assert.ok(js.document); |
||
122 | assert.ok(js.document.element); |
||
123 | assert.ok(js.document.element.length); |
||
124 | assert.strictEqual(js.document.element.length, 1); |
||
125 | assert.ok(js.document.element[0], 'value'); |
||
126 | }); |
||
127 | |||
128 | QUnit.test('Array access-form override via function', function (assert) { |
||
129 | var xml = '<document><element attribute="value" /></document>'; |
||
130 | var x = new X2JS({ |
||
131 | 'arrayAccessFormPaths': [ |
||
132 | function (elementName, elementPath) { |
||
133 | return elementName === 'element'; |
||
134 | } |
||
135 | ] |
||
136 | }); |
||
137 | var js = x.xml2js(xml); |
||
138 | |||
139 | assert.ok(js.document); |
||
140 | assert.ok(js.document.element); |
||
141 | assert.ok(js.document.element.length); |
||
142 | assert.strictEqual(js.document.element.length, 1); |
||
143 | assert.ok(js.document.element[0], 'value'); |
||
144 | }); |
||
145 | |||
146 | QUnit.test('Datetime parsing via path', function (assert) { |
||
147 | var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>'; |
||
148 | var x = new X2JS({ |
||
149 | 'datetimeAccessFormPaths': [ |
||
150 | 'document.datetimeElement' |
||
151 | ] |
||
152 | }); |
||
153 | var js = x.xml2js(xml); |
||
154 | |||
155 | assert.ok(js.document); |
||
156 | assert.ok(js.document.datetimeElement); |
||
157 | assert.ok(js.document.datetimeElement instanceof Date); |
||
158 | assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002); |
||
159 | }); |
||
160 | |||
161 | QUnit.test('Datetime parsing via regex', function (assert) { |
||
162 | var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>'; |
||
163 | var x = new X2JS({ |
||
164 | 'datetimeAccessFormPaths': [ |
||
165 | /.*\.datetimeElement$/ |
||
166 | ] |
||
167 | }); |
||
168 | var js = x.xml2js(xml); |
||
169 | |||
170 | assert.ok(js.document); |
||
171 | assert.ok(js.document.datetimeElement); |
||
172 | assert.ok(js.document.datetimeElement instanceof Date); |
||
173 | assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002); |
||
174 | }); |
||
175 | |||
176 | QUnit.test('Datetime parsing via function', function (assert) { |
||
177 | var xml = '<document><datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement></document>'; |
||
178 | var x = new X2JS({ |
||
179 | 'datetimeAccessFormPaths': [ |
||
180 | function (elementPath) { |
||
181 | return elementPath === 'document.datetimeElement'; |
||
182 | } |
||
183 | ] |
||
184 | }); |
||
185 | var js = x.xml2js(xml); |
||
186 | |||
187 | assert.ok(js.document); |
||
188 | assert.ok(js.document.datetimeElement); |
||
189 | assert.ok(js.document.datetimeElement instanceof Date); |
||
190 | assert.strictEqual(js.document.datetimeElement.getFullYear(), 2002); |
||
191 | }); |
||
192 | |||
193 | QUnit.test('Datetime parsing in different formats', function (assert) { |
||
194 | var xml = '<document>' + |
||
195 | '<datetimeElement>2002-10-10T12:00:00+04:00</datetimeElement>' + |
||
196 | '<datetimeElement>2002-10-10T12:00:00Z</datetimeElement>' + |
||
197 | '<datetimeElement>2002-10-10T12:00:00</datetimeElement>' + |
||
198 | '<datetimeElement>2002-10-10T12:00:00Z</datetimeElement>' + |
||
199 | '</document>'; |
||
200 | var x = new X2JS({ |
||
201 | 'datetimeAccessFormPaths': [ |
||
202 | 'document.datetimeElement' |
||
203 | ] |
||
204 | }); |
||
205 | var js = x.xml2js(xml); |
||
206 | |||
207 | assert.ok(js.document); |
||
208 | assert.ok(js.document.datetimeElement); |
||
209 | assert.ok(js.document.datetimeElement.length); |
||
210 | assert.strictEqual(js.document.datetimeElement.length, 4); |
||
211 | |||
212 | for (var i = 0; i < js.document.datetimeElement.length; i++) { |
||
213 | assert.ok(js.document.datetimeElement[i]); |
||
214 | assert.ok(js.document.datetimeElement[i] instanceof Date); |
||
215 | assert.strictEqual(js.document.datetimeElement[i].getFullYear(), 2002); |
||
216 | } |
||
217 | }); |
||
218 | }); |