OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 /** @fileoverview Suite of tests for route-details. */ | 5 /** @fileoverview Suite of tests for route-details. */ |
6 cr.define('route_details', function() { | 6 cr.define('route_details', function() { |
7 function registerTests() { | 7 function registerTests() { |
8 suite('RouteDetails', function() { | 8 suite('RouteDetails', function() { |
9 /** | 9 /** |
10 * Route Details created before each test. | 10 * Route Details created before each test. |
11 * @type {RouteDetails} | 11 * @type {RouteDetails} |
12 */ | 12 */ |
13 var details; | 13 var details; |
14 | 14 |
15 /** | 15 /** |
16 * First fake route created before each test. | 16 * First fake route created before each test. |
17 * @type {media_router.Route} | 17 * @type {media_router.Route} |
18 */ | 18 */ |
19 var fakeRouteOne; | 19 var fakeRouteOne; |
20 | 20 |
21 /** | 21 /** |
22 * Second fake route created before each test. | 22 * Second fake route created before each test. |
23 * @type {media_router.Route} | 23 * @type {media_router.Route} |
24 */ | 24 */ |
25 var fakeRouteTwo; | 25 var fakeRouteTwo; |
26 | 26 |
27 /** | |
28 * First fake sink created before each test. | |
29 * @type {media_router.Sink} | |
30 */ | |
31 var fakeSinkOne; | |
32 | |
33 /** | |
34 * Second fake sink created before each test. | |
35 * @type {media_router.Sink} | |
36 */ | |
37 var fakeSinkTwo; | |
38 | |
39 // Checks whether |expected| and the text in the span element in | 27 // Checks whether |expected| and the text in the span element in |
40 // the |elementId| element are equal. | 28 // the |elementId| element are equal. |
41 var checkSpanText = function(expected, elementId) { | 29 var checkSpanText = function(expected, elementId) { |
42 assertEquals(expected, | 30 assertEquals(expected, |
43 details.$[elementId].querySelector('span').innerText); | 31 details.$[elementId].querySelector('span').innerText); |
44 }; | 32 }; |
45 | 33 |
46 // Checks the default route view is shown. | 34 // Checks the default route view is shown. |
47 var checkDefaultViewIsShown = function() { | 35 var checkDefaultViewIsShown = function() { |
48 assertFalse(details.$['route-information'].hasAttribute('hidden')); | 36 assertFalse(details.$['route-information'].hasAttribute('hidden')); |
(...skipping 23 matching lines...) Expand all Loading... |
72 setup(function(done) { | 60 setup(function(done) { |
73 PolymerTest.clearBody(); | 61 PolymerTest.clearBody(); |
74 details = document.createElement('route-details'); | 62 details = document.createElement('route-details'); |
75 document.body.appendChild(details); | 63 document.body.appendChild(details); |
76 | 64 |
77 // Initialize routes and sinks. | 65 // Initialize routes and sinks. |
78 fakeRouteOne = new media_router.Route('route id 1', 'sink id 1', | 66 fakeRouteOne = new media_router.Route('route id 1', 'sink id 1', |
79 'Video 1', 1, true, 'chrome-extension://123/custom_view.html'); | 67 'Video 1', 1, true, 'chrome-extension://123/custom_view.html'); |
80 fakeRouteTwo = new media_router.Route('route id 2', 'sink id 2', | 68 fakeRouteTwo = new media_router.Route('route id 2', 'sink id 2', |
81 'Video 2', 2, false); | 69 'Video 2', 2, false); |
82 fakeSinkOne = new media_router.Sink('sink id 1', 'Living Room', | |
83 media_router.SinkIconType.CAST, | |
84 media_router.SinkStatus.ACTIVE, [0, 1, 2]); | |
85 fakeSinkTwo = new media_router.Sink('sink id 2', 'my device', | |
86 media_router.SinkIconType.CAST, | |
87 media_router.SinkStatus.ACTIVE, [0, 1, 2]); | |
88 | 70 |
89 // Allow for the route details to be created and attached. | 71 // Allow for the route details to be created and attached. |
90 setTimeout(done); | 72 setTimeout(done); |
91 }); | 73 }); |
92 | 74 |
93 // Tests for 'close-route-click' event firing when the | 75 // Tests for 'close-route-click' event firing when the |
94 // 'close-route-button' button is clicked. | 76 // 'close-route-button' button is clicked. |
95 test('close route button click', function(done) { | 77 test('close route button click', function(done) { |
96 details.addEventListener('close-route-click', function() { | 78 details.addEventListener('close-route-click', function() { |
97 done(); | 79 done(); |
98 }); | 80 }); |
99 MockInteractions.tap(details.$['close-route-button']); | 81 MockInteractions.tap(details.$['close-route-button']); |
100 }); | 82 }); |
101 | 83 |
102 // Tests the initial expected text. | 84 // Tests the initial expected text. |
103 test('initial text setting', function() { | 85 test('initial text setting', function() { |
104 // <paper-button> text is styled as upper case. | 86 // <paper-button> text is styled as upper case. |
105 checkSpanText(loadTimeData.getString('stopCastingButton') | 87 checkSpanText(loadTimeData.getString('stopCastingButton') |
106 .toUpperCase(), 'close-route-button'); | 88 .toUpperCase(), 'close-route-button'); |
107 checkSpanText('', 'route-information'); | 89 checkSpanText('', 'route-information'); |
108 }); | 90 }); |
109 | 91 |
110 // Tests when |route| exists but |sink| is null. | 92 // Tests when |route| is null or set. |
111 test('route is set', function() { | 93 test('route is null or set', function() { |
112 // |route| is null. | 94 // |route| is null. |
113 assertEquals(null, details.route); | 95 assertEquals(null, details.route); |
114 checkDefaultViewIsShown(); | 96 checkDefaultViewIsShown(); |
115 | 97 |
116 // Set |route| to be non-null. | 98 // Set |route| to be non-null. |
117 details.route = fakeRouteOne; | 99 details.route = fakeRouteOne; |
118 assertEquals(fakeRouteOne, details.route); | 100 assertEquals(fakeRouteOne, details.route); |
119 checkSpanText(loadTimeData.getStringF('castingActivityStatus', | 101 checkSpanText(loadTimeData.getStringF('castingActivityStatus', |
120 fakeRouteOne.description), 'route-information'); | 102 fakeRouteOne.description), 'route-information'); |
121 assertEquals(null, details.sink); | |
122 checkDefaultViewIsShown(); | 103 checkDefaultViewIsShown(); |
123 | 104 |
124 // Set |route| to a different route. | 105 // Set |route| to a different route. |
125 details.route = fakeRouteTwo; | 106 details.route = fakeRouteTwo; |
126 assertEquals(fakeRouteTwo, details.route); | 107 assertEquals(fakeRouteTwo, details.route); |
127 checkSpanText(loadTimeData.getStringF('castingActivityStatus', | 108 checkSpanText(loadTimeData.getStringF('castingActivityStatus', |
128 fakeRouteTwo.description), 'route-information'); | 109 fakeRouteTwo.description), 'route-information'); |
129 checkDefaultViewIsShown(); | 110 checkDefaultViewIsShown(); |
130 }); | 111 }); |
131 | 112 |
132 // Tests when |sink| exists but |route| is null. | 113 // Tests when |route| exists, has a custom controller, and it loads. |
133 test('sink is set', function() { | |
134 // |sink| is null. | |
135 assertEquals(null, details.sink); | |
136 checkSpanText('', 'route-information'); | |
137 | |
138 // Set |sink| to be non-null. 'route-information' should be updated. | |
139 details.sink = fakeSinkOne; | |
140 assertEquals(fakeSinkOne, details.sink); | |
141 assertEquals(null, details.route); | |
142 checkSpanText('', 'route-information'); | |
143 | |
144 // Set |sink| to be a different sink. 'route-information' text should | |
145 // be updated. | |
146 details.sink = fakeSinkTwo; | |
147 assertEquals(fakeSinkTwo, details.sink); | |
148 checkSpanText('', 'route-information'); | |
149 }); | |
150 | |
151 // Tests when |route| and |sink| both exist. | |
152 test('sink and route are set', function() { | |
153 details.route = fakeRouteOne; | |
154 details.sink = fakeSinkOne; | |
155 assertEquals(fakeSinkOne, details.sink); | |
156 assertEquals(fakeRouteOne, details.route); | |
157 checkSpanText(loadTimeData.getStringF('castingActivityStatus', | |
158 fakeRouteOne.description), 'route-information'); | |
159 }); | |
160 | |
161 // Tests when |route| and |sink| are both null. | |
162 test('sink and route are null', function() { | |
163 assertEquals(null, details.route); | |
164 assertEquals(null, details.sink); | |
165 checkSpanText('', 'route-information'); | |
166 }); | |
167 | |
168 // Tests when |route| and |sink| both exist and |route| has custom | |
169 // controller and it loads. | |
170 test('route has custom controller and loading succeeds', function(done) { | 114 test('route has custom controller and loading succeeds', function(done) { |
171 var loadInvoked = false; | 115 var loadInvoked = false; |
172 details.$['custom-controller'].load = function(url) { | 116 details.$['custom-controller'].load = function(url) { |
173 loadInvoked = true; | 117 loadInvoked = true; |
174 assertEquals('chrome-extension://123/custom_view.html', url); | 118 assertEquals('chrome-extension://123/custom_view.html', url); |
175 return Promise.resolve(); | 119 return Promise.resolve(); |
176 }; | 120 }; |
177 | 121 |
178 details.route = fakeRouteOne; | 122 details.route = fakeRouteOne; |
179 details.sink = fakeSinkOne; | |
180 setTimeout(function() { | 123 setTimeout(function() { |
181 assertTrue(loadInvoked); | 124 assertTrue(loadInvoked); |
182 checkCustomControllerIsShown(); | 125 checkCustomControllerIsShown(); |
183 done(); | 126 done(); |
184 }); | 127 }); |
185 }); | 128 }); |
186 | 129 |
187 // Tests when |route| and |sink| both exist and |route| has custom | 130 // Tests when |route| exists, has a custom controller, but fails to load. |
188 // controller but it fails to load. | |
189 test('route has custom controller but loading fails', function(done) { | 131 test('route has custom controller but loading fails', function(done) { |
190 var loadInvoked = false; | 132 var loadInvoked = false; |
191 details.$['custom-controller'].load = function(url) { | 133 details.$['custom-controller'].load = function(url) { |
192 loadInvoked = true; | 134 loadInvoked = true; |
193 return Promise.reject(); | 135 return Promise.reject(); |
194 }; | 136 }; |
195 | 137 |
196 details.route = fakeRouteOne; | 138 details.route = fakeRouteOne; |
197 details.sink = fakeSinkOne; | |
198 setTimeout(function() { | 139 setTimeout(function() { |
199 assertTrue(loadInvoked); | 140 assertTrue(loadInvoked); |
200 checkDefaultViewIsShown(); | 141 checkDefaultViewIsShown(); |
201 done(); | 142 done(); |
202 }); | 143 }); |
203 }); | 144 }); |
204 }); | 145 }); |
205 } | 146 } |
206 | 147 |
207 return { | 148 return { |
208 registerTests: registerTests, | 149 registerTests: registerTests, |
209 }; | 150 }; |
210 }); | 151 }); |
OLD | NEW |