This repository has been archived by the owner on Sep 22, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathtest.js
94 lines (83 loc) · 2.87 KB
/
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
describe('details-dialog-element', function() {
describe('element creation', function() {
it('creates from document.createElement', function() {
const el = document.createElement('details-dialog')
assert.equal('DETAILS-DIALOG', el.nodeName)
})
it('creates from constructor', function() {
const el = new window.DetailsDialogElement()
assert.equal('DETAILS-DIALOG', el.nodeName)
})
})
describe('after tree insertion', function() {
beforeEach(function() {
const container = document.createElement('div')
container.innerHTML = `
<details>
<summary>Click</summary>
<details-dialog>
<p>Hello</p>
</details-dialog>
</details>`
document.body.append(container)
})
afterEach(function() {
document.body.innerHTML = ''
})
it('creates a close button', function() {
assert(document.querySelector('details-dialog button[data-close-dialog]'))
})
it('toggles open', function() {
const details = document.querySelector('details')
const dialog = details.querySelector('details-dialog')
assert(!details.open)
dialog.toggle(true)
assert(details.open)
dialog.toggle(false)
assert(!details.open)
})
it('closes with close button', function() {
const details = document.querySelector('details')
const dialog = details.querySelector('details-dialog')
const close = dialog.querySelector('[data-close-dialog')
assert(!details.open)
dialog.toggle(true)
assert(details.open)
close.click()
assert(!details.open)
})
it('renders a single close button', function() {
const details = document.querySelector('details')
const dialog = details.querySelector('details-dialog')
assert.equal(1, dialog.querySelectorAll('[data-close-dialog').length)
dialog.remove()
details.append(dialog)
assert.equal(1, dialog.querySelectorAll('[data-close-dialog').length)
})
})
describe('custom close button', function() {
let customButton
beforeEach(function() {
const container = document.createElement('div')
container.innerHTML = `
<details>
<summary>Click</summary>
<details-dialog>
<p>Hello</p>
<button data-close-dialog>Say goodbye</button>
</details-dialog>
</details>`
customButton = container.querySelector('[data-close-dialog]')
document.body.append(container)
})
afterEach(function() {
document.body.innerHTML = ''
})
it('creates a close button', function() {
const buttons = document.querySelectorAll('[data-close-dialog]')
const [firstButton] = buttons
assert.equal(buttons.length, 1, `More than one button (${buttons.length})`)
assert.strictEqual(firstButton, customButton, `Wrong button: ${firstButton.outerHTML}`)
})
})
})