forked from Dogfalo/materialize
-
-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathmodalSpec.js
128 lines (103 loc) · 4.12 KB
/
modalSpec.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
describe( 'Modal:', function() {
var trigger1, modal1;
beforeEach(async function() {
await XloadFixtures(['modal/modalFixture.html']);
trigger1 = document.querySelector('.btn[href="#modal1"]');
triggerIcon1 = document.querySelector('.btn[data-target="modal1"] i');
trigger2 = document.querySelector('.btn[href="#modal2"]');
trigger3 = document.querySelector('.btn[href="#modal3"]');
modal1 = document.querySelector('#modal1');
modal2 = document.querySelector('#modal2');
modal3 = document.querySelector('#modal3');
});
afterEach(function(){
XunloadFixtures();
});
describe('Modals', function() {
it('Should open and close correctly', function(done) {
M.Modal.init(modal1);
expect(modal1).toBeHidden('Modal should be hidden');
click(trigger1);
setTimeout(function() {
expect(modal1).toBeVisible('Modal should be shown');
expect(modal1).toHaveClass('open', 'Modal should have class open');
// Check overlay is attached
let overlay = M.Modal.getInstance(modal1)._overlay;
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(true, 'Overlay should be attached on open');
click(overlay);
setTimeout(function() {
expect(modal1).toNotHaveClass('open', 'Modal should have class open removed');
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(false, 'Overlay should be removed on close');
done();
}, 500);
}, 500);
});
it('Should open and close correctly with children elements in trigger', function(done) {
M.Modal.init(modal1);
expect(modal1).toBeHidden('Modal should be hidden');
click(triggerIcon1);
setTimeout(function() {
expect(modal1).toBeVisible('Modal should be shown');
expect(modal1).toHaveClass('open', 'Modal should have class open');
// Check overlay is attached
let overlay = M.Modal.getInstance(modal1)._overlay;
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(true, 'Overlay should be attached on open');
click(overlay);
setTimeout(function() {
expect(modal1).toNotHaveClass('open', 'Modal should have class open removed');
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(false, 'Overlay should be removed on close');
done();
}, 500);
}, 500);
});
it('Should have a dismissible option', function(done) {
M.Modal.init(modal1, {
dismissible: false
});
click(trigger1);
setTimeout(function() {
expect(modal1).toBeVisible('Modal should be shown');
let overlay = M.Modal.getInstance(modal1)._overlay;
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(true, 'Overlay should be attached on open');
click(overlay);
setTimeout(function() {
expect(modal1).toBeVisible('Modal should be shown');
let overlayInDOM = document.contains(overlay);
expect(overlayInDOM).toEqual(true, 'modal should not be dismissable');
done();
}, 500);
}, 500);
});
it('Should have callbacks', function(done) {
let readyTest = false;
let completeTest = false;
M.Modal.init(modal1, {
onOpenStart: function() {
readyTest = true;
},
onCloseStart: function() {
completeTest = true;
}
});
expect(readyTest).toEqual(false, 'callback not yet fired');
expect(completeTest).toEqual(false, 'callback not yet fired');
click(trigger1);
setTimeout(function() {
expect(readyTest).toEqual(true, 'callback fired');
expect(completeTest).toEqual(false, 'callback not yet fired');
let overlay = M.Modal.getInstance(modal1)._overlay;
click(overlay);
setTimeout(function() {
expect(readyTest).toEqual(true, 'callback fired');
expect(completeTest).toEqual(true, 'callback fired');
done();
}, 500);
}, 500);
});
});
});