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 media-router-container. */ | 5 /** @fileoverview Suite of tests for media-router-container. */ |
6 cr.define('media_router_container', function() { | 6 cr.define('media_router_container', function() { |
7 function registerTests() { | 7 function registerTests() { |
8 suite('MediaRouterContainer', function() { | 8 suite('MediaRouterContainer', function() { |
9 /** | 9 /** |
10 * Media Router Container created before each test. | 10 * Media Router Container created before each test. |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
81 | 81 |
82 // Checks the visibility of an element with |elementId| in |container|. | 82 // Checks the visibility of an element with |elementId| in |container|. |
83 // An element is considered visible if it exists and its |hidden| property | 83 // An element is considered visible if it exists and its |hidden| property |
84 // is |false|. | 84 // is |false|. |
85 var checkElementVisibleWithId = function(visible, elementId) { | 85 var checkElementVisibleWithId = function(visible, elementId) { |
86 var element = container.$$('#' + elementId); | 86 var element = container.$$('#' + elementId); |
87 var elementVisible = !!element && !element.hidden; | 87 var elementVisible = !!element && !element.hidden; |
88 assertEquals(visible, elementVisible); | 88 assertEquals(visible, elementVisible); |
89 }; | 89 }; |
90 | 90 |
91 // Checks whether |element| is hidden. | |
92 var checkElementHidden = function(hidden, element) { | |
93 assertEquals(hidden, element.hidden); | |
94 }; | |
95 | |
96 // Checks whether |expected| and the text in the |element| are equal. | 91 // Checks whether |expected| and the text in the |element| are equal. |
97 var checkElementText = function(expected, element) { | 92 var checkElementText = function(expected, element) { |
98 assertEquals(expected.trim(), element.textContent.trim()); | 93 assertEquals(expected.trim(), element.textContent.trim()); |
99 }; | 94 }; |
100 | 95 |
101 // Checks whether |expected| and the |property| in |container| are equal. | 96 // Checks whether |expected| and the |property| in |container| are equal. |
102 var checkPropertyValue = function(expected, property) { | 97 var checkPropertyValue = function(expected, property) { |
103 assertEquals(expected.trim(), container.property); | 98 assertEquals(expected.trim(), container.property); |
104 } | 99 } |
105 | 100 |
(...skipping 29 matching lines...) Expand all Loading... | |
135 ]; | 130 ]; |
136 | 131 |
137 fakeRouteListWithLocalRoutesOnly = [ | 132 fakeRouteListWithLocalRoutesOnly = [ |
138 new media_router.Route('id 1', 'sink id 1', 'Title 1', 0, true), | 133 new media_router.Route('id 1', 'sink id 1', 'Title 1', 0, true), |
139 new media_router.Route('id 2', 'sink id 2', 'Title 2', 1, true), | 134 new media_router.Route('id 2', 'sink id 2', 'Title 2', 1, true), |
140 ]; | 135 ]; |
141 | 136 |
142 // Note: These need to be in-order by name to prevent shuffling. | 137 // Note: These need to be in-order by name to prevent shuffling. |
143 // Sorting of sinks by name is tested separately. | 138 // Sorting of sinks by name is tested separately. |
144 fakeSinkList = [ | 139 fakeSinkList = [ |
145 new media_router.Sink('sink id 1', 'Sink 1', | 140 new media_router.Sink('sink id 1', 'Sink 1', null, |
146 media_router.SinkIconType.CAST, | 141 media_router.SinkIconType.CAST, |
147 media_router.SinkStatus.ACTIVE, [1, 2, 3]), | 142 media_router.SinkStatus.ACTIVE, [1, 2, 3]), |
148 new media_router.Sink('sink id 2', 'Sink 2', | 143 new media_router.Sink('sink id 2', 'Sink 2', null, |
149 media_router.SinkIconType.CAST, | 144 media_router.SinkIconType.CAST, |
150 media_router.SinkStatus.ACTIVE, [1, 2, 3]), | 145 media_router.SinkStatus.ACTIVE, [1, 2, 3]), |
151 new media_router.Sink('sink id 3', 'Sink 3', | 146 new media_router.Sink('sink id 3', 'Sink 3', null, |
152 media_router.SinkIconType.CAST, | 147 media_router.SinkIconType.CAST, |
153 media_router.SinkStatus.PENDING, [1, 2, 3]), | 148 media_router.SinkStatus.PENDING, [1, 2, 3]), |
154 ]; | 149 ]; |
155 | 150 |
156 fakeBlockingIssue = new media_router.Issue( | 151 fakeBlockingIssue = new media_router.Issue( |
157 'issue id 1', 'Issue Title 1', 'Issue Message 1', 0, 1, | 152 'issue id 1', 'Issue Title 1', 'Issue Message 1', 0, 1, |
158 'route id 1', true, 1234); | 153 'route id 1', true, 1234); |
159 | 154 |
160 fakeNonBlockingIssue = new media_router.Issue( | 155 fakeNonBlockingIssue = new media_router.Issue( |
161 'issue id 2', 'Issue Title 2', 'Issue Message 2', 0, 1, | 156 'issue id 2', 'Issue Title 2', 'Issue Message 2', 0, 1, |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 var sinkList = | 299 var sinkList = |
305 container.$['sink-list'].querySelectorAll('paper-item'); | 300 container.$['sink-list'].querySelectorAll('paper-item'); |
306 assertEquals(fakeSinkList.length, sinkList.length); | 301 assertEquals(fakeSinkList.length, sinkList.length); |
307 for (var i = 0; i < fakeSinkList.length; i++) { | 302 for (var i = 0; i < fakeSinkList.length; i++) { |
308 checkElementText(fakeSinkList[i].name, sinkList[i]); | 303 checkElementText(fakeSinkList[i].name, sinkList[i]); |
309 } | 304 } |
310 done(); | 305 done(); |
311 }); | 306 }); |
312 }); | 307 }); |
313 | 308 |
309 | |
apacible
2015/11/25 23:05:41
nit: remove newline.
imcheng
2015/12/01 19:29:27
Done.
| |
314 // Tests the text shown for the sink list. | 310 // Tests the text shown for the sink list. |
315 test('initial sink list route text', function(done) { | 311 test('initial sink list route text', function(done) { |
316 container.allSinks = fakeSinkList; | 312 container.allSinks = [ |
apacible
2015/11/25 23:05:41
Could we just update |fakeSinkList| to have some d
imcheng
2015/12/01 19:29:27
Done. In general, I prefer having separate test da
apacible
2015/12/02 23:27:26
Acknowledged.
| |
317 container.routeList = fakeRouteList; | 313 new media_router.Sink('sink id 1', 'Sink 1', null, |
314 media_router.SinkIconType.CAST, | |
315 media_router.SinkStatus.ACTIVE, [1, 2, 3]), | |
316 new media_router.Sink('sink id 2', 'Sink 2', 'Sink 2 description', | |
317 media_router.SinkIconType.CAST, | |
318 media_router.SinkStatus.ACTIVE, [1, 2, 3]), | |
319 new media_router.Sink('sink id 3', 'Sink 3', null, | |
320 media_router.SinkIconType.CAST, | |
321 media_router.SinkStatus.PENDING, [1, 2, 3]), | |
322 new media_router.Sink('sink id 4', 'Sink 4', 'Sink 4 description', | |
323 media_router.SinkIconType.CAST, | |
324 media_router.SinkStatus.PENDING, [1, 2, 3]) | |
325 ]; | |
326 | |
327 container.routeList = [ | |
328 new media_router.Route('id 3', 'sink id 3', 'Title 3', 0, true), | |
329 new media_router.Route('id 4', 'sink id 4', 'Title 4', 1, false), | |
330 ]; | |
318 | 331 |
319 setTimeout(function() { | 332 setTimeout(function() { |
320 var routeList = | 333 var sinkSubtextList = |
321 container.$['sink-list'].querySelectorAll('.route'); | 334 container.$['sink-list'].querySelectorAll('.sink-subtext'); |
322 assertEquals(fakeSinkList.length, routeList.length); | 335 |
323 checkElementText(fakeRouteList[0].description, routeList[0]); | 336 // There will only be 3 sink subtext entries, because Sink 1 does not |
324 checkElementText(fakeRouteList[1].description, routeList[1]); | 337 // have any subtext. |
325 checkElementText('', routeList[2]); | 338 assertEquals(3, sinkSubtextList.length); |
339 | |
340 checkElementText(container.allSinks[1].description, | |
341 sinkSubtextList[0]); | |
342 | |
343 // Route description overrides sink description for subtext. | |
344 checkElementText(container.routeList[0].description, | |
345 sinkSubtextList[1]); | |
346 | |
347 checkElementText(container.routeList[1].description, | |
348 sinkSubtextList[2]); | |
326 done(); | 349 done(); |
327 }); | 350 }); |
328 }); | 351 }); |
329 | |
330 // Tests the visibility of routes in the sink list. | |
331 test('initial route visibility', function(done) { | |
332 container.allSinks = fakeSinkList; | |
333 container.routeList = fakeRouteList; | |
334 | |
335 setTimeout(function() { | |
336 var routeList = | |
337 container.$['sink-list'].querySelectorAll('.route'); | |
338 | |
339 checkElementHidden(false, routeList[0]); | |
340 checkElementHidden(false, routeList[1]); | |
341 checkElementHidden(true, routeList[2]); | |
342 done(); | |
343 }); | |
344 }); | |
345 | 352 |
346 // Tests the expected view when there is only one local active route and | 353 // Tests the expected view when there is only one local active route and |
347 // media_router_container is created for the first time. | 354 // media_router_container is created for the first time. |
348 test('initial view with one local route', function() { | 355 test('initial view with one local route', function() { |
349 container.allSinks = fakeSinkList; | 356 container.allSinks = fakeSinkList; |
350 container.routeList = fakeRouteList; | 357 container.routeList = fakeRouteList; |
351 | 358 |
352 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS); | 359 checkCurrentView(media_router.MediaRouterView.ROUTE_DETAILS); |
353 }); | 360 }); |
354 | 361 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
491 'sink-list']); | 498 'sink-list']); |
492 done(); | 499 done(); |
493 }); | 500 }); |
494 }); | 501 }); |
495 | 502 |
496 // Tests that the sink list does not contain any sinks that are not | 503 // Tests that the sink list does not contain any sinks that are not |
497 // compatible with the current cast mode and are not associated with a | 504 // compatible with the current cast mode and are not associated with a |
498 // route. | 505 // route. |
499 test('sink list filtering based on initial cast mode', function(done) { | 506 test('sink list filtering based on initial cast mode', function(done) { |
500 var newSinks = [ | 507 var newSinks = [ |
501 new media_router.Sink('sink id 10', 'Sink 10', | 508 new media_router.Sink('sink id 10', 'Sink 10', null, |
502 media_router.SinkIconType.CAST, | 509 media_router.SinkIconType.CAST, |
503 media_router.SinkStatus.ACTIVE, [2, 3]), | 510 media_router.SinkStatus.ACTIVE, [2, 3]), |
504 new media_router.Sink('sink id 20', 'Sink 20', | 511 new media_router.Sink('sink id 20', 'Sink 20', null, |
505 media_router.SinkIconType.CAST, | 512 media_router.SinkIconType.CAST, |
506 media_router.SinkStatus.ACTIVE, [1, 2, 3]), | 513 media_router.SinkStatus.ACTIVE, [1, 2, 3]), |
507 new media_router.Sink('sink id 30', 'Sink 30', | 514 new media_router.Sink('sink id 30', 'Sink 30', null, |
508 media_router.SinkIconType.CAST, | 515 media_router.SinkIconType.CAST, |
509 media_router.SinkStatus.PENDING, [2, 3]), | 516 media_router.SinkStatus.PENDING, [2, 3]), |
510 ]; | 517 ]; |
511 | 518 |
512 container.allSinks = newSinks; | 519 container.allSinks = newSinks; |
513 container.routeList = [ | 520 container.routeList = [ |
514 new media_router.Route('id 1', 'sink id 30', 'Title 1', 1, false), | 521 new media_router.Route('id 1', 'sink id 30', 'Title 1', 1, false), |
515 ]; | 522 ]; |
516 | 523 |
517 setTimeout(function() { | 524 setTimeout(function() { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
561 assertEquals(3, sinkList.length); | 568 assertEquals(3, sinkList.length); |
562 done(); | 569 done(); |
563 }); | 570 }); |
564 }); | 571 }); |
565 }); | 572 }); |
566 | 573 |
567 // Tests that sinks provided in some random order will be sorted by name | 574 // Tests that sinks provided in some random order will be sorted by name |
568 // when shown to the user. | 575 // when shown to the user. |
569 test('sinks are shown sorted by name', function(done) { | 576 test('sinks are shown sorted by name', function(done) { |
570 var outOfOrderSinks = [ | 577 var outOfOrderSinks = [ |
571 new media_router.Sink('6543', 'Sleepy', | 578 new media_router.Sink('6543', 'Sleepy', null, |
572 media_router.SinkIconType.CAST, | 579 media_router.SinkIconType.CAST, |
573 media_router.SinkStatus.ACTIVE, [1]), | 580 media_router.SinkStatus.ACTIVE, [1]), |
574 new media_router.Sink('543', 'Happy', | 581 new media_router.Sink('543', 'Happy', null, |
575 media_router.SinkIconType.CAST, | 582 media_router.SinkIconType.CAST, |
576 media_router.SinkStatus.ACTIVE, [1]), | 583 media_router.SinkStatus.ACTIVE, [1]), |
577 new media_router.Sink('43', 'Bashful', | 584 new media_router.Sink('43', 'Bashful', null, |
578 media_router.SinkIconType.CAST, | 585 media_router.SinkIconType.CAST, |
579 media_router.SinkStatus.ACTIVE, [1]), | 586 media_router.SinkStatus.ACTIVE, [1]), |
580 new media_router.Sink('2', 'George', | 587 new media_router.Sink('2', 'George', null, |
581 media_router.SinkIconType.CAST_AUDIO, | 588 media_router.SinkIconType.CAST_AUDIO, |
582 media_router.SinkStatus.ACTIVE, [1]), | 589 media_router.SinkStatus.ACTIVE, [1]), |
583 new media_router.Sink('1', 'George', | 590 new media_router.Sink('1', 'George', null, |
584 media_router.SinkIconType.CAST, | 591 media_router.SinkIconType.CAST, |
585 media_router.SinkStatus.ACTIVE, [1]), | 592 media_router.SinkStatus.ACTIVE, [1]), |
586 new media_router.Sink('3', 'George', | 593 new media_router.Sink('3', 'George', null, |
587 media_router.SinkIconType.HANGOUT, | 594 media_router.SinkIconType.HANGOUT, |
588 media_router.SinkStatus.ACTIVE, [1]), | 595 media_router.SinkStatus.ACTIVE, [1]), |
589 ]; | 596 ]; |
590 | 597 |
591 container.allSinks = outOfOrderSinks; | 598 container.allSinks = outOfOrderSinks; |
592 | 599 |
593 setTimeout(function() { | 600 setTimeout(function() { |
594 var sinkList = | 601 var sinkList = |
595 container.$['sink-list'].querySelectorAll('paper-item'); | 602 container.$['sink-list'].querySelectorAll('paper-item'); |
596 | 603 |
(...skipping 21 matching lines...) Expand all Loading... | |
618 done(); | 625 done(); |
619 }); | 626 }); |
620 }); | 627 }); |
621 }); | 628 }); |
622 } | 629 } |
623 | 630 |
624 return { | 631 return { |
625 registerTests: registerTests, | 632 registerTests: registerTests, |
626 }; | 633 }; |
627 }); | 634 }); |
OLD | NEW |