OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 suite('cr-dialog', function() { | 5 suite('cr-dialog', function() { |
6 setup(function() { | 6 setup(function() { |
7 PolymerTest.clearBody(); | 7 PolymerTest.clearBody(); |
8 }); | 8 }); |
9 | 9 |
10 test('focuses title on show', function() { | 10 test('focuses title on show', function() { |
(...skipping 29 matching lines...) Expand all Loading... | |
40 var actionButton = document.body.querySelector('.action-button'); | 40 var actionButton = document.body.querySelector('.action-button'); |
41 | 41 |
42 dialog.showModal(); | 42 dialog.showModal(); |
43 | 43 |
44 // MockInteractions triggers event listeners synchronously. | 44 // MockInteractions triggers event listeners synchronously. |
45 var clickedCounter = 0; | 45 var clickedCounter = 0; |
46 actionButton.addEventListener('click', function() { | 46 actionButton.addEventListener('click', function() { |
47 clickedCounter += 1; | 47 clickedCounter += 1; |
48 }); | 48 }); |
49 | 49 |
50 // Enter key should ignore disabled buttons. | 50 // Enter key should ignore disabled buttons. |
dpapad
2017/04/04 17:10:17
Are lines 50-57 now redundant, meaning that the ne
tommycli
2017/04/04 17:44:10
Done.
| |
51 MockInteractions.keyEventOn(dialog, 'keypress', 13, undefined, 'Enter'); | 51 MockInteractions.keyEventOn(dialog, 'keypress', 13, undefined, 'Enter'); |
52 assertEquals(0, clickedCounter); | 52 assertEquals(0, clickedCounter); |
53 | 53 |
54 // Enter key should trigger enabled buttons. | 54 // Enter key should trigger enabled buttons. |
55 actionButton.disabled = false; | 55 actionButton.disabled = false; |
56 MockInteractions.keyEventOn(dialog, 'keypress', 13, undefined, 'Enter'); | 56 MockInteractions.keyEventOn(dialog, 'keypress', 13, undefined, 'Enter'); |
57 assertEquals(1, clickedCounter); | 57 assertEquals(1, clickedCounter); |
58 | 58 |
59 // Enter keys on other buttons should be ignored. | 59 // Enter keys on other buttons should be ignored. |
60 clickedCounter = 0; | 60 clickedCounter = 0; |
61 var otherButton = document.body.querySelector('#other-button'); | 61 var otherButton = document.body.querySelector('#other-button'); |
62 assertTrue(!!otherButton); | 62 assertTrue(!!otherButton); |
63 MockInteractions.keyEventOn( | 63 MockInteractions.keyEventOn( |
64 otherButton, 'keypress', 13, undefined, 'Enter'); | 64 otherButton, 'keypress', 13, undefined, 'Enter'); |
65 assertEquals(0, clickedCounter); | 65 assertEquals(0, clickedCounter); |
66 | 66 |
67 // Enter key on the action button should only fire the click handler once. | 67 // Enter key on the action button should only fire the click handler once. |
68 MockInteractions.tap(actionButton, 'keypress', 13, undefined, 'Enter'); | 68 MockInteractions.tap(actionButton, 'keypress', 13, undefined, 'Enter'); |
69 assertEquals(1, clickedCounter); | 69 assertEquals(1, clickedCounter); |
70 }); | 70 }); |
71 | 71 |
72 test('enter ignores hidden and disabled action buttons', function() { | |
73 document.body.innerHTML = ` | |
74 <dialog is="cr-dialog"> | |
75 <div class="title">title</div> | |
76 <div class="body"> | |
77 <button id="hidden" class="action-button" hidden>hidden</button> | |
78 <button class="action-button" disabled>disabled</button> | |
79 <button class="action-button" disabled hidden>disabled hidden</button> | |
80 <button id="active" class="action-button">active</button> | |
81 </div> | |
82 </dialog>`; | |
83 | |
84 var dialog = document.body.querySelector('dialog'); | |
85 var hiddenButton = document.body.querySelector('#hidden'); | |
86 var actionButton = document.body.querySelector('#active'); | |
87 dialog.showModal(); | |
88 | |
89 // MockInteractions triggers event listeners synchronously. | |
90 hiddenButton.addEventListener('click', function() { | |
91 throw new Error('Hidden button received a click.'); | |
dpapad
2017/04/04 17:10:17
Nit: Can we use assertNotReached() instead? We act
tommycli
2017/04/04 17:44:11
Done. And I can confirm this fails the test if I r
| |
92 }) | |
93 var clicked = false; | |
94 actionButton.addEventListener('click', function() { | |
95 clicked = true; | |
96 }); | |
97 | |
98 MockInteractions.keyEventOn(dialog, 'keypress', 13, undefined, 'Enter'); | |
99 assertTrue(clicked); | |
100 }); | |
101 | |
72 test('focuses [autofocus] instead of title when present', function() { | 102 test('focuses [autofocus] instead of title when present', function() { |
73 document.body.innerHTML = ` | 103 document.body.innerHTML = ` |
74 <dialog is="cr-dialog"> | 104 <dialog is="cr-dialog"> |
75 <div class="title">title</div> | 105 <div class="title">title</div> |
76 <div class="body"><button autofocus>button</button></div> | 106 <div class="body"><button autofocus>button</button></div> |
77 </dialog>`; | 107 </dialog>`; |
78 | 108 |
79 var dialog = document.body.querySelector('dialog'); | 109 var dialog = document.body.querySelector('dialog'); |
80 var button = document.body.querySelector('button'); | 110 var button = document.body.querySelector('button'); |
81 | 111 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 } | 145 } |
116 }); | 146 }); |
117 observer.observe(bodyContainer, {attributes: true}); | 147 observer.observe(bodyContainer, {attributes: true}); |
118 | 148 |
119 // Height is normally set via CSS, but mixin doesn't work with innerHTML. | 149 // Height is normally set via CSS, but mixin doesn't work with innerHTML. |
120 bodyContainer.style.height = '1px'; | 150 bodyContainer.style.height = '1px'; |
121 bodyContainer.scrollTop = 100; | 151 bodyContainer.scrollTop = 100; |
122 dialog.showModal(); // Attach the dialog for the first time here. | 152 dialog.showModal(); // Attach the dialog for the first time here. |
123 }); | 153 }); |
124 }); | 154 }); |
OLD | NEW |