| 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 /** @fileoverview Suite of tests for media-router-container that focus on | 5 /** @fileoverview Suite of tests for media-router-container that focus on |
| 6 * the MRPM search feature. | 6 * the MRPM search feature. |
| 7 */ | 7 */ |
| 8 cr.define('media_router_container_search', function() { | 8 cr.define('media_router_container_search', function() { |
| 9 function registerTests() { | 9 function registerTests() { |
| 10 suite('MediaRouterContainerSearch', function() { | 10 suite('MediaRouterContainerSearch', function() { |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 }); | 160 }); |
| 161 | 161 |
| 162 test('pseudo sink hidden without filter input', function(done) { | 162 test('pseudo sink hidden without filter input', function(done) { |
| 163 container.allSinks = fakeSinkListWithPseudoSink; | 163 container.allSinks = fakeSinkListWithPseudoSink; |
| 164 | 164 |
| 165 setTimeout(function() { | 165 setTimeout(function() { |
| 166 var sinkList = | 166 var sinkList = |
| 167 container.$$('#sink-list').querySelectorAll('paper-item'); | 167 container.$$('#sink-list').querySelectorAll('paper-item'); |
| 168 assertEquals(fakeSinkList.length, sinkList.length); | 168 assertEquals(fakeSinkList.length, sinkList.length); |
| 169 MockInteractions.tap(container.$['sink-search-icon']); | 169 MockInteractions.tap(container.$['sink-search-icon']); |
| 170 setTimeout(function() { | 170 chainOnAnimationPromise(function() { |
| 171 var searchResults = | 171 var searchResults = |
| 172 container.$$('#search-results').querySelectorAll('paper-item'); | 172 container.$$('#search-results').querySelectorAll('paper-item'); |
| 173 assertEquals(fakeSinkList.length, searchResults.length); | 173 assertEquals(fakeSinkList.length, searchResults.length); |
| 174 done(); | 174 done(); |
| 175 }); | 175 }); |
| 176 }); | 176 }); |
| 177 }); | 177 }); |
| 178 | 178 |
| 179 test('filter input adds pseudo sink', function(done) { | 179 test('filter input adds pseudo sink', function(done) { |
| 180 container.allSinks = fakeSinkListWithPseudoSink; | 180 container.allSinks = fakeSinkListWithPseudoSink; |
| 181 | 181 |
| 182 var searchInput = container.$['sink-search-input']; | 182 var searchInput = container.$['sink-search-input']; |
| 183 searchInput.value = 'no existing sink'; | 183 searchInput.value = 'no existing sink'; |
| 184 setTimeout(function() { | 184 chainOnAnimationPromise(function() { |
| 185 var searchResults = | 185 var searchResults = |
| 186 container.$$('#search-results').querySelectorAll('paper-item'); | 186 container.$$('#search-results').querySelectorAll('paper-item'); |
| 187 assertEquals(1, searchResults.length); | 187 assertEquals(1, searchResults.length); |
| 188 var item = | 188 var item = |
| 189 container.$$('#searchResults').itemForElement(searchResults[0]); | 189 container.$$('#searchResults').itemForElement(searchResults[0]); |
| 190 assertEquals(pseudoSink.id, item.sinkItem.id); | 190 assertEquals(pseudoSink.id, item.sinkItem.id); |
| 191 done(); | 191 done(); |
| 192 }); | 192 }); |
| 193 }); | 193 }); |
| 194 | 194 |
| 195 test('filter exact match real sink hides pseudo sink', function(done) { | 195 test('filter exact match real sink hides pseudo sink', function(done) { |
| 196 container.allSinks = fakeSinkListWithPseudoSink; | 196 container.allSinks = fakeSinkListWithPseudoSink; |
| 197 | 197 |
| 198 var searchInput = container.$['sink-search-input']; | 198 var searchInput = container.$['sink-search-input']; |
| 199 searchInput.value = fakeSinkList[0].name; | 199 searchInput.value = fakeSinkList[0].name; |
| 200 setTimeout(function() { | 200 chainOnAnimationPromise(function() { |
| 201 var searchResults = | 201 var searchResults = |
| 202 container.$$('#search-results').querySelectorAll('paper-item'); | 202 container.$$('#search-results').querySelectorAll('paper-item'); |
| 203 assertEquals(1, searchResults.length); | 203 assertEquals(1, searchResults.length); |
| 204 var item = | 204 var item = |
| 205 container.$$('#searchResults').itemForElement(searchResults[0]); | 205 container.$$('#searchResults').itemForElement(searchResults[0]); |
| 206 assertEquals(fakeSinkList[0].id, item.sinkItem.id); | 206 assertEquals(fakeSinkList[0].id, item.sinkItem.id); |
| 207 done(); | 207 done(); |
| 208 }); | 208 }); |
| 209 }); | 209 }); |
| 210 | 210 |
| 211 test('clicking pseudo sink starts search', function(done) { | 211 test('clicking pseudo sink starts search', function(done) { |
| 212 container.allSinks = fakeSinkListWithPseudoSink; | 212 container.allSinks = fakeSinkListWithPseudoSink; |
| 213 | 213 |
| 214 var searchInput = container.$['sink-search-input']; | 214 var searchInput = container.$['sink-search-input']; |
| 215 searchInput.value = 'no existing sink'; | 215 searchInput.value = 'no existing sink'; |
| 216 setTimeout(function() { | 216 chainOnAnimationPromise(function() { |
| 217 var searchResults = | 217 var searchResults = |
| 218 container.$$('#search-results').querySelectorAll('paper-item'); | 218 container.$$('#search-results').querySelectorAll('paper-item'); |
| 219 container.addEventListener( | 219 container.addEventListener( |
| 220 'search-sinks-and-create-route', function(data) { | 220 'search-sinks-and-create-route', function(data) { |
| 221 assertEquals(pseudoSink.id, data.detail.id); | 221 assertEquals(pseudoSink.id, data.detail.id); |
| 222 assertEquals(pseudoSink.name, data.detail.name); | 222 assertEquals(pseudoSink.name, data.detail.name); |
| 223 assertEquals(pseudoSink.domain, data.detail.domain); | 223 assertEquals(pseudoSink.domain, data.detail.domain); |
| 224 done(); | 224 done(); |
| 225 }); | 225 }); |
| 226 MockInteractions.tap(searchResults[0]); | 226 MockInteractions.tap(searchResults[0]); |
| 227 }); | 227 }); |
| 228 }); | 228 }); |
| 229 | 229 |
| 230 test('spinner starts on pseudo sink', function(done) { | 230 test('spinner starts on pseudo sink', function(done) { |
| 231 container.allSinks = fakeSinkListWithPseudoSink; | 231 container.allSinks = fakeSinkListWithPseudoSink; |
| 232 | 232 |
| 233 var searchInput = container.$['sink-search-input']; | 233 var searchInput = container.$['sink-search-input']; |
| 234 searchInput.value = foundSink.name; | 234 searchInput.value = foundSink.name; |
| 235 setTimeout(function() { | 235 chainOnAnimationPromise(function() { |
| 236 var searchResults = | 236 var searchResults = |
| 237 container.$$('#search-results').querySelectorAll('paper-item'); | 237 container.$$('#search-results').querySelectorAll('paper-item'); |
| 238 MockInteractions.tap(searchResults[0]); | 238 MockInteractions.tap(searchResults[0]); |
| 239 setTimeout(function() { | 239 setTimeout(function() { |
| 240 searchResults = | 240 searchResults = |
| 241 container.$$('#search-results').querySelectorAll('paper-item'); | 241 container.$$('#search-results').querySelectorAll('paper-item'); |
| 242 assertEquals(1, searchResults.length); | 242 assertEquals(1, searchResults.length); |
| 243 checkSpinningSinkInFilter(pseudoSink); | 243 checkSpinningSinkInFilter(pseudoSink); |
| 244 | 244 |
| 245 searchInput.value = foundSink.name[0]; | 245 searchInput.value = foundSink.name[0]; |
| 246 setTimeout(function() { | 246 setTimeout(function() { |
| 247 checkSpinningSinkInFilter(pseudoSink); | 247 checkSpinningSinkInFilter(pseudoSink); |
| 248 | 248 |
| 249 searchInput.value = ''; | 249 searchInput.value = ''; |
| 250 setTimeout(function() { | 250 setTimeout(function() { |
| 251 checkSpinningSinkInFilter(pseudoSink); | 251 checkSpinningSinkInFilter(pseudoSink); |
| 252 done(); | 252 done(); |
| 253 }); | 253 }); |
| 254 }); | 254 }); |
| 255 }); | 255 }); |
| 256 }); | 256 }); |
| 257 }); | 257 }); |
| 258 | 258 |
| 259 test('pseudo sink shown in sink list before real sink', function(done) { | 259 test('pseudo sink shown in sink list before real sink', function(done) { |
| 260 container.allSinks = fakeSinkListWithPseudoSink; | 260 container.allSinks = fakeSinkListWithPseudoSink; |
| 261 | 261 |
| 262 var searchInput = container.$['sink-search-input']; | 262 var searchInput = container.$['sink-search-input']; |
| 263 searchInput.value = foundSink.name; | 263 searchInput.value = foundSink.name; |
| 264 setTimeout(function() { | 264 chainOnAnimationPromise(function() { |
| 265 var searchResults = | 265 var searchResults = |
| 266 container.$$('#search-results').querySelectorAll('paper-item'); | 266 container.$$('#search-results').querySelectorAll('paper-item'); |
| 267 MockInteractions.tap(searchResults[0]); | 267 MockInteractions.tap(searchResults[0]); |
| 268 MockInteractions.tap( | 268 MockInteractions.tap( |
| 269 container.$['container-header'].$$('#back-button')); | 269 container.$['container-header'].$$('#back-button')); |
| 270 setTimeout(function() { | 270 chainOnAnimationPromise(function() { |
| 271 checkCurrentView(media_router.MediaRouterView.SINK_LIST); | 271 checkCurrentView(media_router.MediaRouterView.SINK_LIST); |
| 272 checkSpinningSinkInSinkList( | 272 checkSpinningSinkInSinkList( |
| 273 pseudoSink, fakeSinkListWithPseudoSink.length); | 273 pseudoSink, fakeSinkListWithPseudoSink.length); |
| 274 done(); | 274 done(); |
| 275 }); | 275 }); |
| 276 }); | 276 }); |
| 277 }); | 277 }); |
| 278 | 278 |
| 279 test('onReceiveSearchResult updates spinner', function(done) { | 279 test('onReceiveSearchResult updates spinner', function(done) { |
| 280 container.allSinks = fakeSinkListWithPseudoSink; | 280 container.allSinks = fakeSinkListWithPseudoSink; |
| 281 | 281 |
| 282 var searchInput = container.$['sink-search-input']; | 282 var searchInput = container.$['sink-search-input']; |
| 283 searchInput.value = foundSink.name; | 283 searchInput.value = foundSink.name; |
| 284 setTimeout(function() { | 284 chainOnAnimationPromise(function() { |
| 285 var searchResults = | 285 var searchResults = |
| 286 container.$$('#search-results').querySelectorAll('paper-item'); | 286 container.$$('#search-results').querySelectorAll('paper-item'); |
| 287 MockInteractions.tap(searchResults[0]); | 287 MockInteractions.tap(searchResults[0]); |
| 288 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); | 288 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); |
| 289 container.onReceiveSearchResult(foundSink.id); | 289 container.onReceiveSearchResult(foundSink.id); |
| 290 setTimeout(function() { | 290 setTimeout(function() { |
| 291 searchResults = | 291 searchResults = |
| 292 container.$$('#search-results').querySelectorAll('paper-item'); | 292 container.$$('#search-results').querySelectorAll('paper-item'); |
| 293 assertEquals(1, searchResults.length); | 293 assertEquals(1, searchResults.length); |
| 294 checkSpinningSinkInFilter(foundSink); | 294 checkSpinningSinkInFilter(foundSink); |
| 295 done(); | 295 done(); |
| 296 }); | 296 }); |
| 297 }); | 297 }); |
| 298 }); | 298 }); |
| 299 | 299 |
| 300 test('sink list updates spinner', function(done) { | 300 test('sink list updates spinner', function(done) { |
| 301 container.allSinks = fakeSinkListWithPseudoSink; | 301 container.allSinks = fakeSinkListWithPseudoSink; |
| 302 | 302 |
| 303 var searchInput = container.$['sink-search-input']; | 303 var searchInput = container.$['sink-search-input']; |
| 304 searchInput.value = foundSink.name; | 304 searchInput.value = foundSink.name; |
| 305 setTimeout(function() { | 305 chainOnAnimationPromise(function() { |
| 306 var searchResults = | 306 var searchResults = |
| 307 container.$$('#search-results').querySelectorAll('paper-item'); | 307 container.$$('#search-results').querySelectorAll('paper-item'); |
| 308 MockInteractions.tap(searchResults[0]); | 308 MockInteractions.tap(searchResults[0]); |
| 309 setTimeout(function() { | 309 setTimeout(function() { |
| 310 container.onReceiveSearchResult(foundSink.id); | 310 container.onReceiveSearchResult(foundSink.id); |
| 311 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); | 311 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); |
| 312 setTimeout(function() { | 312 setTimeout(function() { |
| 313 searchResults = container.$$('#search-results') | 313 searchResults = container.$$('#search-results') |
| 314 .querySelectorAll('paper-item'); | 314 .querySelectorAll('paper-item'); |
| 315 assertEquals(1, searchResults.length); | 315 assertEquals(1, searchResults.length); |
| 316 checkSpinningSinkInFilter(foundSink); | 316 checkSpinningSinkInFilter(foundSink); |
| 317 done(); | 317 done(); |
| 318 }); | 318 }); |
| 319 }); | 319 }); |
| 320 }); | 320 }); |
| 321 }); | 321 }); |
| 322 | 322 |
| 323 test('route received clears spinner and search state', function(done) { | 323 test('route received clears spinner and search state', function(done) { |
| 324 var route = new media_router.Route( | 324 var route = new media_router.Route( |
| 325 'id 1', foundSink.id, 'Title 1', 0, true, false); | 325 'id 1', foundSink.id, 'Title 1', 0, true, false); |
| 326 container.allSinks = fakeSinkListWithPseudoSink; | 326 container.allSinks = fakeSinkListWithPseudoSink; |
| 327 | 327 |
| 328 var searchInput = container.$['sink-search-input']; | 328 var searchInput = container.$['sink-search-input']; |
| 329 searchInput.value = foundSink.name; | 329 searchInput.value = foundSink.name; |
| 330 setTimeout(function() { | 330 chainOnAnimationPromise(function() { |
| 331 var searchResults = | 331 var searchResults = |
| 332 container.$$('#search-results').querySelectorAll('paper-item'); | 332 container.$$('#search-results').querySelectorAll('paper-item'); |
| 333 MockInteractions.tap(searchResults[0]); | 333 MockInteractions.tap(searchResults[0]); |
| 334 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); | 334 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); |
| 335 container.onReceiveSearchResult(foundSink.id); | 335 container.onReceiveSearchResult(foundSink.id); |
| 336 container.onCreateRouteResponseReceived(foundSink.id, route, true); | 336 container.onCreateRouteResponseReceived(foundSink.id, route, true); |
| 337 assertEquals(null, container.pseudoSinkSearchState_); | 337 assertEquals(null, container.pseudoSinkSearchState_); |
| 338 setTimeout(function() { | 338 setTimeout(function() { |
| 339 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS); | 339 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS); |
| 340 MockInteractions.tap( | 340 MockInteractions.tap( |
| 341 container.$['container-header'].$$('#back-button')); | 341 container.$['container-header'].$$('#back-button')); |
| 342 setTimeout(function() { | 342 chainOnAnimationPromise(function() { |
| 343 checkCurrentView(media_router.MediaRouterView.SINK_LIST); | 343 checkCurrentView(media_router.MediaRouterView.SINK_LIST); |
| 344 sinkList = | 344 sinkList = |
| 345 container.$$('#sink-list').querySelectorAll('paper-item'); | 345 container.$$('#sink-list').querySelectorAll('paper-item'); |
| 346 sinkList.forEach(function(sink) { | 346 sinkList.forEach(function(sink) { |
| 347 var spinner = sink.querySelector('paper-spinner'); | 347 var spinner = sink.querySelector('paper-spinner'); |
| 348 checkElementVisible(spinner, false); | 348 checkElementVisible(spinner, false); |
| 349 }); | 349 }); |
| 350 done(); | 350 done(); |
| 351 }); | 351 }); |
| 352 }); | 352 }); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 }); | 403 }); |
| 404 }); | 404 }); |
| 405 }); | 405 }); |
| 406 }); | 406 }); |
| 407 | 407 |
| 408 test('route creation failure clears spinner and search', function(done) { | 408 test('route creation failure clears spinner and search', function(done) { |
| 409 container.allSinks = fakeSinkListWithPseudoSink; | 409 container.allSinks = fakeSinkListWithPseudoSink; |
| 410 | 410 |
| 411 var searchInput = container.$['sink-search-input']; | 411 var searchInput = container.$['sink-search-input']; |
| 412 searchInput.value = foundSink.name; | 412 searchInput.value = foundSink.name; |
| 413 setTimeout(function() { | 413 chainOnAnimationPromise(function() { |
| 414 var searchResults = | 414 var searchResults = |
| 415 container.$$('#search-results').querySelectorAll('paper-item'); | 415 container.$$('#search-results').querySelectorAll('paper-item'); |
| 416 MockInteractions.tap(searchResults[0]); | 416 MockInteractions.tap(searchResults[0]); |
| 417 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); | 417 container.allSinks = fakeSinkListWithPseudoSink.concat([foundSink]); |
| 418 container.onReceiveSearchResult(foundSink.id); | 418 container.onReceiveSearchResult(foundSink.id); |
| 419 container.onCreateRouteResponseReceived(pseudoSink.id, null, true); | 419 container.onCreateRouteResponseReceived(pseudoSink.id, null, true); |
| 420 assertEquals(null, container.pseudoSinkSearchState_); | 420 assertEquals(null, container.pseudoSinkSearchState_); |
| 421 setTimeout(function() { | 421 setTimeout(function() { |
| 422 checkCurrentView(media_router.MediaRouterView.FILTER); | 422 checkCurrentView(media_router.MediaRouterView.FILTER); |
| 423 searchResults = | 423 searchResults = |
| 424 container.$$('#search-results').querySelectorAll('paper-item'); | 424 container.$$('#search-results').querySelectorAll('paper-item'); |
| 425 searchResults.forEach(function(sink) { | 425 searchResults.forEach(function(sink) { |
| 426 var spinner = sink.querySelector('paper-spinner'); | 426 var spinner = sink.querySelector('paper-spinner'); |
| 427 checkElementVisible(spinner, false); | 427 checkElementVisible(spinner, false); |
| 428 }); | 428 }); |
| 429 done(); | 429 done(); |
| 430 }); | 430 }); |
| 431 }); | 431 }); |
| 432 }); | 432 }); |
| 433 | 433 |
| 434 test('pseudo sink with empty domain is not shown', function(done) { | 434 test('pseudo sink with empty domain is not shown', function(done) { |
| 435 pseudoSink.domain = ''; | 435 pseudoSink.domain = ''; |
| 436 container.allSinks = fakeSinkListWithPseudoSink; | 436 container.allSinks = fakeSinkListWithPseudoSink; |
| 437 | 437 |
| 438 var searchInput = container.$['sink-search-input']; | 438 var searchInput = container.$['sink-search-input']; |
| 439 searchInput.value = foundSink.name; | 439 searchInput.value = foundSink.name; |
| 440 setTimeout(function() { | 440 chainOnAnimationPromise(function() { |
| 441 var noMatches = container.$$('#no-search-matches'); | 441 var noMatches = container.$$('#no-search-matches'); |
| 442 var searchResults = container.$$('#search-results'); | 442 var searchResults = container.$$('#search-results'); |
| 443 checkElementVisible(noMatches, true); | 443 checkElementVisible(noMatches, true); |
| 444 checkElementVisible(searchResults, false); | 444 checkElementVisible(searchResults, false); |
| 445 done(); | 445 done(); |
| 446 }); | 446 }); |
| 447 }); | 447 }); |
| 448 | 448 |
| 449 test('pseudo sink search state launching sink id', function() { | 449 test('pseudo sink search state launching sink id', function() { |
| 450 var searchState = new PseudoSinkSearchState(pseudoSink); | 450 var searchState = new PseudoSinkSearchState(pseudoSink); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 462 searchState.checkForRealSink(fakeSinkList.concat([foundSink]))); | 462 searchState.checkForRealSink(fakeSinkList.concat([foundSink]))); |
| 463 assertEquals(foundSink.id, searchState.checkForRealSink(fakeSinkList)); | 463 assertEquals(foundSink.id, searchState.checkForRealSink(fakeSinkList)); |
| 464 }); | 464 }); |
| 465 }); | 465 }); |
| 466 } | 466 } |
| 467 | 467 |
| 468 return { | 468 return { |
| 469 registerTests: registerTests, | 469 registerTests: registerTests, |
| 470 }; | 470 }; |
| 471 }); | 471 }); |
| OLD | NEW |