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 settings-languages-page. */ | 5 /** @fileoverview Suite of tests for settings-languages-page. */ |
6 | 6 |
7 /** @const {string} Path to root from chrome/test/data/webui/settings/. */ | 7 /** @const {string} Path to root from chrome/test/data/webui/settings/. */ |
8 var ROOT_PATH = '../../../../../'; | 8 var ROOT_PATH = '../../../../../'; |
9 | 9 |
10 // Polymer BrowserTest fixture. | 10 // Polymer BrowserTest fixture. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 // Runs languages page tests. | 43 // Runs languages page tests. |
44 TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() { | 44 TEST_F('SettingsLanguagesPageBrowserTest', 'MAYBE_LanguagesPage', function() { |
45 suite('languages page', function() { | 45 suite('languages page', function() { |
46 testing.Test.disableAnimationsAndTransitions(); | 46 testing.Test.disableAnimationsAndTransitions(); |
47 | 47 |
48 this.toggleAdvanced(); | 48 this.toggleAdvanced(); |
49 var advanced = this.getPage('advanced'); | 49 var advanced = this.getPage('advanced'); |
50 | 50 |
51 var languagesSection; | 51 var languagesSection; |
52 var languagesPage; | 52 var languagesPage; |
| 53 var languagesCollapse; |
| 54 var languageMenu; |
53 var languageHelper; | 55 var languageHelper; |
54 | 56 |
55 /** | 57 /** |
56 * @param {numExpected} Expected number of languages to eventually be | 58 * @param {numExpected} Expected number of languages to eventually be |
57 * enabled. | 59 * enabled. |
58 * @return {!Promise} Resolved when the number of enabled languages changes | 60 * @return {!Promise} Resolved when the number of enabled languages changes |
59 * to match expectations. | 61 * to match expectations. |
60 */ | 62 */ |
61 function whenNumEnabledLanguagesBecomes(numExpected) { | 63 function whenNumEnabledLanguagesBecomes(numExpected) { |
62 assert(!!languagesPage); | 64 assert(!!languagesPage); |
(...skipping 11 matching lines...) Expand all Loading... |
74 function getAvailableLanguage() { | 76 function getAvailableLanguage() { |
75 return languagesPage.languages.supported.find(function(language) { | 77 return languagesPage.languages.supported.find(function(language) { |
76 return !languageHelper.isLanguageEnabled(language.code); | 78 return !languageHelper.isLanguageEnabled(language.code); |
77 }); | 79 }); |
78 } | 80 } |
79 | 81 |
80 suiteSetup(function() { | 82 suiteSetup(function() { |
81 advanced.set('pageVisibility.languages', true); | 83 advanced.set('pageVisibility.languages', true); |
82 Polymer.dom.flush(); | 84 Polymer.dom.flush(); |
83 | 85 |
84 languagesSection = this.getSection(advanced, 'languages'); | 86 languagesSection = assert(this.getSection(advanced, 'languages')); |
85 assertTrue(!!languagesSection); | 87 languagesPage = assert( |
86 languagesPage = languagesSection.querySelector('settings-languages-page'); | 88 languagesSection.querySelector('settings-languages-page')); |
87 assertTrue(!!languagesPage); | 89 languagesCollapse = languagesPage.$.languagesCollapse; |
| 90 languageMenu = assert(languagesPage.$$('cr-shared-menu')); |
88 | 91 |
89 languageHelper = languagesPage.languageHelper; | 92 languageHelper = languagesPage.languageHelper; |
90 return languageHelper.whenReady(); | 93 return languageHelper.whenReady(); |
91 }.bind(this)); | 94 }.bind(this)); |
92 | 95 |
93 teardown(function(done) { | 96 teardown(function(done) { |
94 // Close the section if we're in a sub-page. | 97 // Close the section if we're in a sub-page. |
95 if (settings.getCurrentRoute().isSubpage()) { | 98 if (settings.getCurrentRoute().isSubpage()) { |
96 settings.navigateTo(settings.Route.BASIC); | 99 settings.navigateTo(settings.Route.BASIC); |
97 setTimeout(done); | 100 setTimeout(done); |
98 } else { | 101 } else { |
99 done(); | 102 done(); |
100 } | 103 } |
101 }); | 104 }); |
102 | 105 |
103 suite('add languages dialog', function() { | 106 suite('add languages dialog', function() { |
104 var dialog; | 107 var dialog; |
105 var dialogItems; | 108 var dialogItems; |
106 var cancelButton; | 109 var cancelButton; |
107 var actionButton; | 110 var actionButton; |
108 | 111 |
109 setup(function(done) { | 112 setup(function(done) { |
110 var addLanguagesButton = languagesPage.$.languagesCollapse | 113 var addLanguagesButton = |
111 .querySelector('.list-button:last-of-type'); | 114 languagesCollapse.querySelector('.list-button:last-of-type'); |
112 MockInteractions.tap(addLanguagesButton); | 115 MockInteractions.tap(addLanguagesButton); |
113 | 116 |
114 // The page stamps the dialog and registers listeners asynchronously. | 117 // The page stamps the dialog and registers listeners asynchronously. |
115 Polymer.Base.async(function() { | 118 Polymer.Base.async(function() { |
116 dialog = languagesPage.$$('settings-add-languages-dialog'); | 119 dialog = languagesPage.$$('settings-add-languages-dialog'); |
117 assertTrue(!!dialog); | 120 assertTrue(!!dialog); |
118 | 121 |
119 actionButton = assert(dialog.$$('.action-button')); | 122 actionButton = assert(dialog.$$('.action-button')); |
120 cancelButton = assert(dialog.$$('.cancel-button')); | 123 cancelButton = assert(dialog.$$('.cancel-button')); |
121 | 124 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 | 186 |
184 // The action button should close and remove the dialog, enabling the | 187 // The action button should close and remove the dialog, enabling the |
185 // checked languages. | 188 // checked languages. |
186 MockInteractions.tap(actionButton); | 189 MockInteractions.tap(actionButton); |
187 | 190 |
188 // Wait for the languages to be enabled by the browser. | 191 // Wait for the languages to be enabled by the browser. |
189 return whenNumEnabledLanguagesBecomes(numEnabled + 2); | 192 return whenNumEnabledLanguagesBecomes(numEnabled + 2); |
190 }); | 193 }); |
191 }); | 194 }); |
192 | 195 |
193 test('Should not set UI language', function() { | 196 test('should not set UI language', function() { |
194 var languagesCollapse = languagesPage.$.languagesCollapse; | |
195 var languageOptionsDropdownTrigger = languagesCollapse.querySelector( | 197 var languageOptionsDropdownTrigger = languagesCollapse.querySelector( |
196 'paper-icon-button'); | 198 'paper-icon-button'); |
197 assertTrue(!!languageOptionsDropdownTrigger); | 199 assertTrue(!!languageOptionsDropdownTrigger); |
198 | 200 |
199 // This shouldn't get called. | 201 // This shouldn't get called. |
200 languageHelper.setUILanguage = assertNotReached; | 202 languageHelper.setUILanguage = assertNotReached; |
201 | 203 |
| 204 // Tap the menu trigger twice to open and close the menu. |
202 MockInteractions.tap(languageOptionsDropdownTrigger); | 205 MockInteractions.tap(languageOptionsDropdownTrigger); |
| 206 MockInteractions.tap(languageOptionsDropdownTrigger); |
| 207 |
| 208 languageHelper.setUILanguage = languageHelper.__proto__.setUILanguage; |
203 }); | 209 }); |
204 | 210 |
205 test('remove language', function() { | 211 test('remove language', function() { |
206 var numEnabled = languagesPage.languages.enabled.length; | 212 var numEnabled = languagesPage.languages.enabled.length; |
207 | 213 |
208 // Enabled a language which we can then disable. | 214 // Enabled a language which we can then disable. |
209 var newLanguage = getAvailableLanguage(); | 215 var newLanguage = getAvailableLanguage(); |
210 languageHelper.enableLanguage(newLanguage.code); | 216 languageHelper.enableLanguage(newLanguage.code); |
211 | 217 |
212 // Wait for the language to be enabled. | 218 // Wait for the language to be enabled. |
213 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() { | 219 return whenNumEnabledLanguagesBecomes(numEnabled + 1).then(function() { |
214 // Populate the dom-repeat. | 220 // Populate the dom-repeat. |
215 Polymer.dom.flush(); | 221 Polymer.dom.flush(); |
216 | 222 |
217 // Find the new language item. | 223 // Find the new language item. |
218 var languagesCollapse = languagesPage.$.languagesCollapse; | |
219 var items = languagesCollapse.querySelectorAll('.list-item'); | 224 var items = languagesCollapse.querySelectorAll('.list-item'); |
220 var domRepeat = assert( | 225 var domRepeat = assert( |
221 languagesCollapse.querySelector('template[is="dom-repeat"]')); | 226 languagesCollapse.querySelector('template[is="dom-repeat"]')); |
222 var item = Array.from(items).find(function(el) { | 227 var item = Array.from(items).find(function(el) { |
223 return domRepeat.itemForElement(el) && | 228 return domRepeat.itemForElement(el) && |
224 domRepeat.itemForElement(el).language == newLanguage; | 229 domRepeat.itemForElement(el).language == newLanguage; |
225 }); | 230 }); |
226 | 231 |
227 // Open the menu and select Remove. | 232 // Open the menu and select Remove. |
228 MockInteractions.tap(item.querySelector('paper-icon-button')); | 233 MockInteractions.tap(item.querySelector('paper-icon-button')); |
229 var removeMenuItem = assert(item.querySelector( | 234 assertTrue(languageMenu.menuOpen); |
230 '.dropdown-content .dropdown-item:last-of-type')); | 235 var removeMenuItem = assert(languageMenu.querySelector( |
| 236 '.dropdown-item:last-of-type')); |
231 assertFalse(removeMenuItem.disabled); | 237 assertFalse(removeMenuItem.disabled); |
232 MockInteractions.tap(removeMenuItem); | 238 MockInteractions.tap(removeMenuItem); |
| 239 assertFalse(languageMenu.menuOpen); |
233 | 240 |
234 // We should go back down to the original number of enabled languages. | 241 // We should go back down to the original number of enabled languages. |
235 return whenNumEnabledLanguagesBecomes(numEnabled).then(function() { | 242 return whenNumEnabledLanguagesBecomes(numEnabled).then(function() { |
236 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code)); | 243 assertFalse(languageHelper.isLanguageEnabled(newLanguage.code)); |
237 }); | 244 }); |
238 }); | 245 }); |
239 }); | 246 }); |
240 | 247 |
241 test('language detail', function() { | 248 test('language detail', function() { |
242 var languagesCollapse = languagesPage.$.languagesCollapse; | 249 var languageOptionsDropdownTrigger = languagesCollapse.querySelector( |
243 var languageDetailMenuItem = languagesCollapse.querySelectorAll( | 250 'paper-icon-button'); |
244 '.dropdown-content .dropdown-item')[2]; | 251 MockInteractions.tap(languageOptionsDropdownTrigger); |
245 assertTrue(!!languageDetailMenuItem); | 252 var languageDetailMenuItem = assert( |
| 253 languageMenu.querySelectorAll('.dropdown-item')[2]); |
246 MockInteractions.tap(languageDetailMenuItem); | 254 MockInteractions.tap(languageDetailMenuItem); |
247 | 255 |
248 var languageDetailPage = | 256 var languageDetailPage = |
249 languagesPage.$$('settings-language-detail-page'); | 257 languagesPage.$$('settings-language-detail-page'); |
250 assertTrue(!!languageDetailPage); | 258 assertTrue(!!languageDetailPage); |
251 assertEquals('en-US', languageDetailPage.detail.language.code); | 259 assertEquals('en-US', languageDetailPage.detail.language.code); |
252 }); | 260 }); |
253 | 261 |
254 test('manage input methods', function() { | 262 test('manage input methods', function() { |
255 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse; | 263 var inputMethodsCollapse = languagesPage.$.inputMethodsCollapse; |
(...skipping 21 matching lines...) Expand all Loading... |
277 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page')); | 285 assertTrue(!!languagesPage.$$('settings-edit-dictionary-page')); |
278 } | 286 } |
279 }); | 287 }); |
280 }.bind(this)); | 288 }.bind(this)); |
281 | 289 |
282 // TODO(michaelpg): Test more aspects of the languages UI. | 290 // TODO(michaelpg): Test more aspects of the languages UI. |
283 | 291 |
284 // Run all registered tests. | 292 // Run all registered tests. |
285 mocha.run(); | 293 mocha.run(); |
286 }); | 294 }); |
OLD | NEW |