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

Side by Side Diff: chrome/test/data/webui/extensions/extension_manager_test.js

Issue 1913353002: [MD Extensions] Add a details subpage, move to one list (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
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 extension-sidebar. */ 5 /** @fileoverview Suite of tests for extension-sidebar. */
6 cr.define('extension_manager_tests', function() { 6 cr.define('extension_manager_tests', function() {
7 /** @enum {string} */ 7 /** @enum {string} */
8 var TestNames = { 8 var TestNames = {
9 SplitSections: 'split sections',
10 ItemOrder: 'item order', 9 ItemOrder: 'item order',
11 ExtensionSectionVisibility: 'extension section visibility', 10 ItemListVisibility: 'item list visibility',
12 AppSectionVisibility: 'app section visibility', 11 ShowItems: 'show items',
13 WebsiteSectionVisibility: 'website section visibility',
14 Scrolling: 'scrolling',
15 }; 12 };
16 13
17 function getDataByName(list, name) { 14 function getDataByName(list, name) {
18 return assert(list.find(function(el) { return el.name == name; })); 15 return assert(list.find(function(el) { return el.name == name; }));
19 } 16 }
20 17
21 function registerTests() { 18 function registerTests() {
22 suite('ExtensionManagerTest', function() { 19 suite('ExtensionManagerTest', function() {
23 /** @type {extensions.Manager} */ 20 /** @type {extensions.Manager} */
24 var manager; 21 var manager;
25 22
26 setup(function() { 23 setup(function() {
27 manager = document.querySelector('extensions-manager'); 24 manager = document.querySelector('extensions-manager');
28 }); 25 });
29 26
30 test(assert(TestNames.SplitSections), function() {
Devlin 2016/04/23 01:50:11 Relevant pieces of this test have moved to the Sho
31 var testManagerElementVisible =
32 extension_test_util.testVisible.bind(null, manager);
33 // All sections should be visible.
34 testManagerElementVisible('#extensions-list', true);
35 testManagerElementVisible('#apps-list', true);
36 testManagerElementVisible('#websites-list', true);
37
38 var sectionHasItemWithName = function(section, name) {
39 return !!manager[section].find(function(el) {
40 return el.name == name;
41 });
42 };
43
44 expectEquals(manager.extensions, manager.$['extensions-list'].items);
45 expectEquals(manager.apps, manager.$['apps-list'].items);
46 expectEquals(manager.websites, manager.$['websites-list'].items);
47
48 // We really just have to test for existence of the items within the
49 // given subsection of the manager, since they are bound to the iron
50 // list with Polymer (and we kind of have to trust that Polymer works).
51 expectTrue(sectionHasItemWithName('extensions', 'My extension 1'));
52 expectTrue(sectionHasItemWithName(
53 'apps', 'Platform App Test: minimal platform app'));
54 expectTrue(sectionHasItemWithName('websites', 'hosted_app'));
55 expectTrue(sectionHasItemWithName('websites', 'Packaged App Test'));
56 });
57
58 test(assert(TestNames.ItemOrder), function() { 27 test(assert(TestNames.ItemOrder), function() {
59 expectEquals(0, manager.extensions.length); 28 expectEquals(0, manager.extensions.length);
60 29
61 var alphaFromStore = extension_test_util.createExtensionInfo( 30 var alphaFromStore = extension_test_util.createExtensionInfo(
62 {location: 'FROM_STORE', name: 'Alpha', id: 'a'.repeat(32)}); 31 {location: 'FROM_STORE', name: 'Alpha', id: 'a'.repeat(32)});
63 manager.addItem(alphaFromStore); 32 manager.addItem(alphaFromStore);
64 33
65 expectEquals(1, manager.extensions.length); 34 expectEquals(1, manager.extensions.length);
66 expectEquals(alphaFromStore.id, manager.extensions[0].id); 35 expectEquals(alphaFromStore.id, manager.extensions[0].id);
67 36
(...skipping 30 matching lines...) Expand all
98 67
99 expectEquals(6, manager.extensions.length); 68 expectEquals(6, manager.extensions.length);
100 expectEquals(betaUnpacked.id, manager.extensions[0].id); 69 expectEquals(betaUnpacked.id, manager.extensions[0].id);
101 expectEquals(gammaUnpacked.id, manager.extensions[1].id); 70 expectEquals(gammaUnpacked.id, manager.extensions[1].id);
102 expectEquals(aaFromStore.id, manager.extensions[2].id); 71 expectEquals(aaFromStore.id, manager.extensions[2].id);
103 expectEquals(AaFromStore.id, manager.extensions[3].id); 72 expectEquals(AaFromStore.id, manager.extensions[3].id);
104 expectEquals(aAFromStore.id, manager.extensions[4].id); 73 expectEquals(aAFromStore.id, manager.extensions[4].id);
105 expectEquals(alphaFromStore.id, manager.extensions[5].id); 74 expectEquals(alphaFromStore.id, manager.extensions[5].id);
106 }); 75 });
107 76
108 test(assert(TestNames.ExtensionSectionVisibility), function() { 77 test(assert(TestNames.ItemListVisibility), function() {
109 var testVisible = extension_test_util.testVisible.bind(null, manager); 78 var testVisible = extension_test_util.testVisible.bind(null, manager);
110 var testSidebarVisible =
111 extension_test_util.testVisible.bind(null, manager.sidebar);
112
113 var extension = getDataByName(manager.extensions, 'My extension 1'); 79 var extension = getDataByName(manager.extensions, 'My extension 1');
114 80
115 testVisible('#extensions-list', true); 81 var listHasItemWithName = function(name) {
116 testSidebarVisible('#sections-extensions', true); 82 return !!manager.$['items-list'].items.find(function(el) {
83 return el.name == name;
84 });
85 };
86
87 expectEquals(manager.extensions, manager.$['items-list'].items);
88 testVisible('#items-list', true);
89 expectTrue(listHasItemWithName('My extension 1'));
90
117 manager.removeItem(extension); 91 manager.removeItem(extension);
118 Polymer.dom.flush(); 92 Polymer.dom.flush();
119 testVisible('#extensions-list', false); 93 testVisible('#items-list', false);
120 testSidebarVisible('#sections-extensions', false); 94 expectFalse(listHasItemWithName('My extension 1'));
121 95
122 manager.addItem(extension); 96 manager.addItem(extension);
123 Polymer.dom.flush(); 97 Polymer.dom.flush();
124 testVisible('#extensions-list', true); 98 testVisible('#items-list', true);
125 testSidebarVisible('#sections-extensions', true); 99 expectTrue(listHasItemWithName('My extension 1'));
126 }); 100 });
127 101
128 test(assert(TestNames.AppSectionVisibility), function() { 102 test(assert(TestNames.ShowItems), function() {
Devlin 2016/04/23 01:50:11 We can now combine these into one test, since ther
129 var testVisible = extension_test_util.testVisible.bind(null, manager); 103 var sectionHasItemWithName = function(section, name) {
130 var testSidebarVisible = 104 return !!manager[section].find(function(el) {
131 extension_test_util.testVisible.bind(null, manager.sidebar); 105 return el.name == name;
132 var platformApp = 106 });
133 getDataByName(manager.apps, 107 };
134 'Platform App Test: minimal platform app');
135 108
136 testVisible('#apps-list', true); 109 // Test that we properly split up the items into two sections.
137 testSidebarVisible('#sections-apps', true); 110 expectTrue(sectionHasItemWithName('extensions', 'My extension 1'));
138 manager.removeItem(platformApp); 111 expectTrue(sectionHasItemWithName(
139 Polymer.dom.flush(); 112 'apps', 'Platform App Test: minimal platform app'));
140 testVisible('#apps-list', false); 113 expectTrue(sectionHasItemWithName('apps', 'hosted_app'));
141 testSidebarVisible('#sections-apps', false); 114 expectTrue(sectionHasItemWithName('apps', 'Packaged App Test'));
142 115
143 manager.addItem(platformApp); 116 // Toggle between extensions and apps and back again.
144 Polymer.dom.flush(); 117 expectEquals(manager.extensions, manager.$['items-list'].items);
145 testVisible('#apps-list', true); 118 manager.listHelper_.showApps();
146 testSidebarVisible('#sections-apps', true); 119 expectEquals(manager.apps, manager.$['items-list'].items);
147 }); 120 manager.listHelper_.showExtensions();
148 121 expectEquals(manager.extensions, manager.$['items-list'].items);
149 test(assert(TestNames.WebsiteSectionVisibility), function() { 122 // Repeating a selection should have no change.
150 var testVisible = extension_test_util.testVisible.bind(null, manager); 123 manager.listHelper_.showExtensions();
151 var testSidebarVisible = 124 expectEquals(manager.extensions, manager.$['items-list'].items);
152 extension_test_util.testVisible.bind(null, manager.sidebar);
153
154 var hostedApp = getDataByName(manager.websites, 'hosted_app');
155 var packagedApp = getDataByName(manager.websites, 'Packaged App Test');
156
157 testVisible('#websites-list', true);
158 testSidebarVisible('#sections-websites', true);
159 expectEquals(2, manager.websites.length);
160 manager.removeItem(hostedApp);
161 Polymer.dom.flush();
162 expectEquals(1, manager.websites.length);
163 testVisible('#websites-list', true);
164 testSidebarVisible('#sections-websites', true);
165 manager.removeItem(packagedApp);
166 Polymer.dom.flush();
167 testVisible('#websites-list', false);
168 testSidebarVisible('#sections-websites', false);
169
170 manager.addItem(hostedApp);
171 Polymer.dom.flush();
172 testVisible('#websites-list', true);
173 testSidebarVisible('#sections-websites', true);
174 });
175
176 test(assert(TestNames.Scrolling), function() {
177 // TODO(devlin): This doesn't really test anything, because scrolling is
178 // so heavily dependent on viewport size (which is very unpredictable in
179 // browser tests). But we can at least exercise the code path and check
180 // for errors.
181 manager.scrollHelper_.scrollToExtensions();
182 manager.scrollHelper_.scrollToApps();
183 manager.scrollHelper_.scrollToWebsites();
184 }); 125 });
185 }); 126 });
186 } 127 }
187 128
188 return { 129 return {
189 registerTests: registerTests, 130 registerTests: registerTests,
190 TestNames: TestNames, 131 TestNames: TestNames,
191 }; 132 };
192 }); 133 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698