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

Unified Diff: chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js

Issue 1766473002: [Media Router] Further split media_router_container tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed function param docs Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js
diff --git a/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js b/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js
new file mode 100644
index 0000000000000000000000000000000000000000..91ad26fd11a02cdce3eea61ace5168e3f736b5ab
--- /dev/null
+++ b/chrome/test/data/webui/media_router/media_router_container_sink_list_tests.js
@@ -0,0 +1,286 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/** @fileoverview Suite of tests for media-router-container that focus on the
+ * sink list.
+ */
+cr.define('media_router_container_sink_list', function() {
+ function registerTests() {
+ suite('MediaRouterContainerSinkList', function() {
+ /**
+ * Checks whether the elements specified in |elementIdList| are visible.
+ * Checks whether all other elements are not visible. Throws an assertion
+ * error if this is not true.
+ *
+ * @param {!Array<!string>} elementIdList List of id's of elements that
+ * should be visible.
+ */
+ var checkElementsVisibleWithId;
+
+ /**
+ * Checks whether |expected| and the text in the |element| are equal.
+ *
+ * @param {!string} expected Expected text.
+ * @param {!Element} element Element whose text will be checked.
+ */
+ var checkElementText;
+
+ /**
+ * Media Router Container created before each test.
+ * @type {?MediaRouterContainer}
+ */
+ var container;
+
+ /**
+ * The blocking issue to show.
+ * @type {?media_router.Issue}
+ */
+ var fakeBlockingIssue;
+
+ /**
+ * The list of CastModes to show.
+ * @type {!Array<!media_router.CastMode>}
+ */
+ var fakeCastModeList = [];
+
+ /**
+ * The blocking issue to show.
+ * @type {?media_router.Issue}
+ */
+ var fakeNonBlockingIssue;
+
+ /**
+ * The list of available sinks.
+ * @type {!Array<!media_router.Sink>}
+ */
+ var fakeSinkList = [];
+
+ // Import media_router_container.html before running suite.
+ suiteSetup(function() {
+ return PolymerTest.importHtml(
+ 'chrome://media-router/elements/media_router_container/' +
+ 'media_router_container.html');
+ });
+
+ setup(function(done) {
+ PolymerTest.clearBody();
+ // Initialize a media-router-container before each test.
+ container = document.createElement('media-router-container');
+ document.body.appendChild(container);
+
+ // Get common functions and variables.
+ var test_base = media_router_container_test_base.init(container);
+
+ checkElementsVisibleWithId = test_base.checkElementsVisibleWithId;
+ checkElementText = test_base.checkElementText;
+ fakeBlockingIssue = test_base.fakeBlockingIssue;
+ fakeCastModeList = test_base.fakeCastModeList;
+ fakeNonBlockingIssue = test_base.fakeNonBlockingIssue;
+ fakeSinkList = test_base.fakeSinkList;
+
+ container.castModeList = test_base.fakeCastModeList;
+
+ // Allow for the media router container to be created and attached.
+ setTimeout(done);
+ });
+
+ // Tests that text shown for each sink matches their names.
+ test('sink list text', function(done) {
+ container.allSinks = fakeSinkList;
+
+ setTimeout(function() {
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+ assertEquals(fakeSinkList.length, sinkList.length);
+ for (var i = 0; i < fakeSinkList.length; i++) {
+ checkElementText(fakeSinkList[i].name, sinkList[i]);
+ }
+ done();
+ });
+ });
+
+ // Tests that text shown for sink with domain matches the name and domain.
+ test('sink with domain text', function(done) {
+ // Sink 1 - sink, no domain -> text = name
+ // Sink 2 - sink, domain -> text = sink + domain
+ container.allSinks = [
+ new media_router.Sink('sink id 1', 'Sink 1', null, null,
+ media_router.SinkIconType.HANGOUT,
+ media_router.SinkStatus.ACTIVE, [1, 2, 3]),
+ new media_router.Sink('sink id 2', 'Sink 2',
+ null, 'example.com',
+ media_router.SinkIconType.HANGOUT,
+ media_router.SinkStatus.ACTIVE, [1, 2, 3]),
+ ];
+
+ container.showDomain = true;
+
+ setTimeout(function() {
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+ assertEquals(2, sinkList.length);
+
+ // |sinkList[0]| has sink name only.
+ checkElementText(container.allSinks[0].name, sinkList[0]);
+ // |sinkList[1]| contains sink name and domain.
+ assertTrue(sinkList[1].textContent.trim().startsWith(
+ container.allSinks[1].name.trim()));
+ assertTrue(sinkList[1].textContent.trim().indexOf(
+ container.allSinks[1].domain.trim()) != -1);
+ done();
+ });
+ });
+
+ // Tests that domain text is not shown when |showDomain| is false.
+ test('sink with domain text', function(done) {
+ // Sink 1 - sink, no domain -> text = name
+ // Sink 2 - sink, domain -> text = sink + domain
+ container.allSinks = [
+ new media_router.Sink('sink id 1', 'Sink 1', null, null,
+ media_router.SinkIconType.HANGOUT,
+ media_router.SinkStatus.ACTIVE, [1, 2, 3]),
+ new media_router.Sink('sink id 2', 'Sink 2',
+ null, 'example.com',
+ media_router.SinkIconType.HANGOUT,
+ media_router.SinkStatus.ACTIVE, [1, 2, 3]),
+ ];
+
+ container.showDomain = false;
+
+ setTimeout(function() {
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+ assertEquals(2, sinkList.length);
+
+ // |sinkList[0]| has sink name only.
+ checkElementText(container.allSinks[0].name, sinkList[0]);
+ // |sinkList[1]| has sink name but domain should be hidden.
+ checkElementText(container.allSinks[1].name, sinkList[1]);
+ assertTrue(sinkList[1].textContent.trim().indexOf(
+ container.allSinks[1].domain.trim()) == -1);
+ done();
+ });
+ });
+
+ // Tests for expected visible UI when the view is SINK_LIST.
+ test('sink list state visibility', function() {
+ container.showSinkList_();
+ checkElementsVisibleWithId(['container-header',
+ 'device-missing',
+ 'sink-list-view']);
+
+ // Set an non-empty sink list.
+ container.allSinks = fakeSinkList;
+ checkElementsVisibleWithId(['container-header',
+ 'sink-list',
+ 'sink-list-view']);
+ });
+
+ // Tests for expected visible UI when the view is SINK_LIST, and there is
+ // a non blocking issue.
+ test('sink list visibility non blocking issue', function(done) {
+ container.showSinkList_();
+
+ // Set an non-empty sink list.
+ container.allSinks = fakeSinkList;
+
+ // Set a non-blocking issue. The issue should be shown.
+ container.issue = fakeNonBlockingIssue;
+ setTimeout(function() {
+ checkElementsVisibleWithId(['container-header',
+ 'issue-banner',
+ 'sink-list',
+ 'sink-list-view']);
+ done();
+ });
+ });
+
+ // Tests for expected visible UI when the view is SINK_LIST, and there is
+ // a blocking issue.
+ test('sink list visibility blocking issue', function(done) {
+ container.showSinkList_();
+
+ // Set an non-empty sink list.
+ container.allSinks = fakeSinkList;
+
+ // Set a blocking issue. The issue should be shown, and everything
+ // else, hidden.
+ container.issue = fakeBlockingIssue;
+ setTimeout(function() {
+ checkElementsVisibleWithId(['container-header',
+ 'issue-banner',
+ 'sink-list']);
+ done();
+ });
+ });
+
+ // Tests all sinks are always shown in auto mode, and that the mode will
+ // switch if the sinks support only 1 cast mode.
+ test('sink list in auto mode', function(done) {
+ container.allSinks = fakeSinkList;
+ setTimeout(function() {
+ // Container is initially in auto mode since a cast mode has not been
+ // selected.
+ assertEquals(media_router.AUTO_CAST_MODE.description,
+ container.headerText);
+ assertEquals(media_router.CastModeType.AUTO,
+ container.shownCastModeValue_);
+ assertFalse(container.userHasSelectedCastMode_);
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+
+ // All sinks are shown in auto mode.
+ assertEquals(3, sinkList.length);
+
+ // When sink list changes to only 1 compatible cast mode, the mode is
+ // switched, and all sinks are shown.
+ container.allSinks = [
+ new media_router.Sink('sink id 10', 'Sink 10', null, null,
+ media_router.SinkIconType.CAST,
+ media_router.SinkStatus.ACTIVE, 0x4),
+ new media_router.Sink('sink id 20', 'Sink 20', null, null,
+ media_router.SinkIconType.CAST,
+ media_router.SinkStatus.ACTIVE, 0x4),
+ new media_router.Sink('sink id 30', 'Sink 30', null, null,
+ media_router.SinkIconType.CAST,
+ media_router.SinkStatus.PENDING, 0x4),
+ ];
+
+ setTimeout(function() {
+ assertEquals(fakeCastModeList[2].description, container.headerText);
+ assertEquals(fakeCastModeList[2].type,
+ container.shownCastModeValue_);
+ assertFalse(container.userHasSelectedCastMode_);
+
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+ assertEquals(3, sinkList.length);
+
+ // When compatible cast modes size is no longer exactly 1, switch
+ // back to auto mode, and all sinks are shown.
+ container.allSinks = fakeSinkList;
+ setTimeout(function() {
+ assertEquals(media_router.AUTO_CAST_MODE.description,
+ container.headerText);
+ assertEquals(media_router.CastModeType.AUTO,
+ container.shownCastModeValue_);
+ assertFalse(container.userHasSelectedCastMode_);
+ var sinkList =
+ container.$['sink-list'].querySelectorAll('paper-item');
+
+ // All sinks are shown in auto mode.
+ assertEquals(3, sinkList.length);
+
+ done();
+ });
+ });
+ });
+ });
+ });
+ }
+
+ return {
+ registerTests: registerTests,
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698