-
Notifications
You must be signed in to change notification settings - Fork 83
/
parse-element.test.js
77 lines (65 loc) · 1.95 KB
/
parse-element.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'use strict'
const { getTestParser } = require('../get-test-parser')
const { DOMParser } = require('../../lib/dom-parser')
describe('XML Node Parse', () => {
describe('no attribute', () => {
it.each(['<xml ></xml>', '<xml></xml>', '<xml />'])('%s', (input) => {
const actual = new DOMParser()
.parseFromString(input, 'text/xml')
.toString()
expect(actual).toBe('<xml/>')
})
})
describe('simple attributes', () => {
describe('nothing special', () => {
it.each([
'<xml a="1" b="2"></xml>',
'<xml a="1" b="2" ></xml>',
'<xml a="1" b="2" />',
])('%s', (input) => {
const actual = new DOMParser()
.parseFromString(input, 'text/xml')
.toString()
expect(actual).toBe('<xml a="1" b="2"/>')
})
})
describe('empty b', () => {
it.each([
'<xml a="1" b=\'\'></xml>',
'<xml a="1" b=\'\' ></xml>',
'<xml a="1" b=\'\'/>',
'<xml a="1" b=\'\' />',
])('%s', (input) => {
expect(
new DOMParser().parseFromString(input, 'text/xml').toString()
).toBe('<xml a="1" b=""/>')
})
})
it('unclosed root tag will be closed', () => {
const { errors, parser } = getTestParser()
const actual = parser
.parseFromString('<xml a="1" b="2/">', 'text/xml')
.toString()
expect({ actual, ...errors }).toMatchSnapshot()
})
})
describe('namespaced attributes', () => {
it.each([
'<xml xmlns="1" xmlns:a="2" a:test="3"></xml>',
'<xml xmlns="1" xmlns:a="2" a:test="3" ></xml>',
'<xml xmlns="1" xmlns:a="2" a:test="3" />',
])('%s', (input) => {
const actual = new DOMParser()
.parseFromString(input, 'text/xml')
.toString()
expect(actual).toBe('<xml xmlns="1" xmlns:a="2" a:test="3"/>')
})
it('unclosed root tag will be closed', () => {
const { errors, parser } = getTestParser()
const actual = parser
.parseFromString('<xml xmlns="1" xmlns:a="2" a:test="3/">', 'text/xml')
.toString()
expect({ actual, ...errors }).toMatchSnapshot()
})
})
})