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