Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: third_party/polymer/components/paper-radio-group/test/basic.html

Issue 2960873002: WIP - Pinpoint - New Page.
Patch Set: . Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!doctype html>
2 <!--
3 @license
4 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
5 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
6 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
7 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
8 Code distributed by Google as part of the polymer project is also
9 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
10 -->
11 <html>
12 <head>
13 <meta charset="UTF-8">
14 <title>paper-radio-group basic tests</title>
15 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximu m-scale=1.0">
16
17 <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
18 <script src="../../web-component-tester/browser.js"></script>
19 <script src="../../iron-test-helpers/mock-interactions.js"></script>
20 <link rel="import" href="../paper-radio-group.html">
21
22 </head>
23 <body>
24
25 <test-fixture id="NoSelection">
26 <template>
27 <paper-radio-group>
28 <paper-radio-button name="r1">r1</paper-radio-button>
29 <paper-radio-button name="r2">r2</paper-radio-button>
30 <paper-radio-button name="r3">r3</paper-radio-button>
31 </paper-radio-group>
32 </template>
33 </test-fixture>
34
35 <test-fixture id="WithSelection">
36 <template>
37 <paper-radio-group selected="r1">
38 <paper-radio-button name="r1">r1</paper-radio-button>
39 <paper-radio-button name="r2">r2</paper-radio-button>
40 <paper-radio-button name="r3">r3</paper-radio-button>
41 </paper-radio-group>
42 </template>
43 </test-fixture>
44
45 <test-fixture id="WithDisabled">
46 <template>
47 <paper-radio-group selected="r1">
48 <paper-radio-button name="r1">r1</paper-radio-button>
49 <paper-radio-button name="r2" disabled>r2</paper-radio-button>
50 <paper-radio-button name="r3">r3</paper-radio-button>
51 </paper-radio-group>
52 </template>
53 </test-fixture>
54
55 <script>
56 suite('defaults', function() {
57 var LEFT_ARROW = 37;
58 var RIGHT_ARROW = 39;
59
60 test('group can have no selection', function (done) {
61 var g = fixture('NoSelection');
62
63 // Needs to be async since the underlying iron-selector uses observeNo des.
64 Polymer.Base.async(function() {
65 expect(g.selected).to.not.be.ok;
66 var items = g.items;
67 expect(items.length).to.be.equal(3);
68
69 expect(items[0].checked).to.be.equal(false);
70 expect(items[1].checked).to.be.equal(false);
71 expect(items[2].checked).to.be.equal(false);
72
73 done();
74 }, 1);
75
76 });
77
78 test('group can have a selection', function (done) {
79 var g = fixture('WithSelection');
80
81 // Needs to be async since the underlying iron-selector uses observeNo des.
82 Polymer.Base.async(function() {
83 expect(g.selected).to.be.ok;
84 var items = g.items;
85 expect(items.length).to.be.equal(3);
86
87 expect(items[0].checked).to.be.equal(true);
88 expect(items[1].checked).to.be.equal(false);
89 expect(items[2].checked).to.be.equal(false);
90 expect(items[0].getAttribute('name')).to.be.equal(g.selected);
91
92 done();
93 }, 1);
94 });
95
96 test('right arrow advances the selection', function (done) {
97 var g = fixture('WithSelection');
98 MockInteractions.focus(g);
99
100 // Needs to be async since the underlying iron-selector uses observeNo des.
101 Polymer.Base.async(function() {
102 var items = g.items;
103 expect(items[0].checked).to.be.equal(true);
104
105 g.addEventListener('paper-radio-group-changed', function () {
106 expect(items[0].checked).to.be.equal(false);
107 expect(items[1].checked).to.be.equal(true);
108 expect(items[2].checked).to.be.equal(false);
109 done();
110 });
111 MockInteractions.keyDownOn(g, RIGHT_ARROW);
112 }, 1);
113 });
114
115 test('left arrow reverses the selection', function (done) {
116 var g = fixture('WithSelection');
117 MockInteractions.focus(g);
118
119 // Needs to be async since the underlying iron-selector uses observeNo des.
120 Polymer.Base.async(function() {
121 var items = g.items;
122 expect(items[0].checked).to.be.equal(true);
123
124 g.addEventListener('paper-radio-group-changed', function () {
125 expect(items[0].checked).to.be.equal(false);
126 expect(items[1].checked).to.be.equal(false);
127 expect(items[2].checked).to.be.equal(true);
128 done();
129 });
130 MockInteractions.keyDownOn(g, LEFT_ARROW);
131 }, 1);
132 });
133
134 test('selection should skip disabled items', function (done) {
135 var g = fixture('WithDisabled');
136 MockInteractions.focus(g);
137
138 // Needs to be async since the underlying iron-selector uses observeNo des.
139 Polymer.Base.async(function() {
140 var items = g.items;
141 expect(items[0].checked).to.be.equal(true);
142
143 g.addEventListener('paper-radio-group-changed', function () {
144 expect(items[0].checked).to.be.equal(false);
145 expect(items[1].checked).to.be.equal(false);
146 expect(items[2].checked).to.be.equal(true);
147 done();
148 });
149 MockInteractions.keyDownOn(g, RIGHT_ARROW);
150 }, 1);
151 });
152
153 test('clicking should change the selection', function (done) {
154 var g = fixture('WithSelection');
155 MockInteractions.focus(g);
156
157 // Needs to be async since the underlying iron-selector uses observeNo des.
158 Polymer.Base.async(function() {
159 var items = g.items;
160 expect(items[0].checked).to.be.equal(true);
161
162 g.addEventListener('paper-radio-group-changed', function () {
163 expect(items[0].checked).to.be.equal(false);
164 expect(items[1].checked).to.be.equal(true);
165 expect(items[2].checked).to.be.equal(false);
166 done();
167 });
168 MockInteractions.tap(items[1]);
169 }, 1);
170 });
171
172 test('clicking the selected item should not deselect', function (done) {
173 var g = fixture('WithSelection');
174 MockInteractions.focus(g);
175
176 // Needs to be async since the underlying iron-selector uses observeNo des.
177 Polymer.Base.async(function() {
178 var items = g.items;
179 expect(items[0].checked).to.be.equal(true);
180
181 // The selection should not change, but wait for a little bit just
182 // in case it would and an event would be fired.
183 setTimeout(function() {
184 expect(items[0].checked).to.be.equal(true);
185 expect(items[1].checked).to.be.equal(false);
186 expect(items[2].checked).to.be.equal(false);
187 done();
188 }, 1);
189 MockInteractions.tap(items[0]);
190 }, 1);
191 });
192
193 test('clicking the selected item should deselect if allow-empty-selectio n is set', function (done) {
194 var g = fixture('WithSelection');
195 g.allowEmptySelection = true;
196
197 // Needs to be async since the underlying iron-selector uses observeNo des.
198 Polymer.Base.async(function() {
199 var items = g.items;
200 expect(items[0].checked).to.be.equal(true);
201
202 // The selection should not change, but wait for a little bit just
203 // in case it would and an event would be fired.
204 setTimeout(function() {
205 expect(items[0].checked).to.be.equal(false);
206 expect(items[1].checked).to.be.equal(false);
207 expect(items[2].checked).to.be.equal(false);
208 done();
209 }, 1);
210 MockInteractions.tap(items[0]);
211 }, 1);
212 });
213
214 test('arrow keys cause iron-activate events', function(done) {
215 var g = fixture('WithSelection');
216 MockInteractions.focus(g);
217
218 // Needs to be async since the underlying iron-selector uses observeNo des.
219 Polymer.Base.async(function() {
220 g.items[0].focus();
221
222 var i = 0;
223 g.addEventListener('iron-activate', function() {
224 switch (i++) {
225 case 0:
226 MockInteractions.pressAndReleaseKeyOn(g, 38);
227 break;
228
229 case 1:
230 MockInteractions.pressAndReleaseKeyOn(g, 39);
231 break;
232
233 case 2:
234 MockInteractions.pressAndReleaseKeyOn(g, 40);
235 break;
236
237 default:
238 done();
239 }
240 });
241
242 MockInteractions.pressAndReleaseKeyOn(g, 37);
243 }, 1);
244 });
245
246 });
247 </script>
248 </body>
249 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698