Chromium Code Reviews| 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 settings-change-picture. */ | 5 /** @fileoverview Suite of tests for settings-change-picture. */ |
| 6 | 6 |
| 7 GEN_INCLUDE(['settings_page_browsertest.js']); | 7 GEN_INCLUDE(['settings_page_browsertest.js']); |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * @constructor | 10 * @constructor |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 var basic = this.getPage('basic'); | 48 var basic = this.getPage('basic'); |
| 49 assertTrue(!!basic); | 49 assertTrue(!!basic); |
| 50 var peopleSection = this.getSection(basic, 'people'); | 50 var peopleSection = this.getSection(basic, 'people'); |
| 51 assertTrue(!!peopleSection); | 51 assertTrue(!!peopleSection); |
| 52 var peoplePage = peopleSection.querySelector('settings-people-page'); | 52 var peoplePage = peopleSection.querySelector('settings-people-page'); |
| 53 assertTrue(!!peoplePage); | 53 assertTrue(!!peoplePage); |
| 54 var changePicture = peoplePage.$$('settings-change-picture'); | 54 var changePicture = peoplePage.$$('settings-change-picture'); |
| 55 assertTrue(!!changePicture); | 55 assertTrue(!!changePicture); |
| 56 | 56 |
| 57 /** | 57 /** |
| 58 * Registers a callback to be called once when the selected image URL changes. | 58 * Returns a promise that resolves once the selected item is updated. |
| 59 * @param {!function()} callback | 59 * @param {!function()} action is executed after the listener is set up. |
|
dpapad
2016/01/22 02:35:32
@return missing
tommycli
2016/01/22 19:24:40
Done.
dpapad
2016/01/22 20:12:25
Nit: "function" is also implied non-null (unless y
tommycli
2016/01/22 21:37:53
Done.
| |
| 60 */ | 60 */ |
| 61 function whenSelectedImageUrlChanged() { | 61 function runAndResolveWhenSelectedItemChanged(action) { |
| 62 return new Promise(function(resolve, reject) { | 62 return new Promise(function(resolve, reject) { |
| 63 var handler = function() { | 63 var handler = function() { |
| 64 changePicture.removeEventListener('selected-image-url_-changed', | 64 changePicture.removeEventListener('selected-item_-changed', handler); |
| 65 handler); | |
| 66 resolve(); | 65 resolve(); |
| 67 }; | 66 }; |
| 68 changePicture.addEventListener('selected-image-url_-changed', handler); | 67 changePicture.addEventListener('selected-item_-changed', handler); |
| 68 action(); | |
| 69 }); | 69 }); |
| 70 } | 70 } |
| 71 | 71 |
| 72 suite('SettingsChangePicturePage', function() { | 72 suite('SettingsChangePicturePage', function() { |
| 73 setup(function() { | 73 setup(function() { |
| 74 // Reset the selected image to nothing. | 74 // Reset the selected image to nothing. |
| 75 changePicture.selectedImageUrl_ = ''; | 75 changePicture.$.selector.selected = -1; |
| 76 }); | 76 }); |
| 77 | 77 |
| 78 test('select camera image', function() { | 78 test('select camera image', function() { |
| 79 var cameraImage = changePicture.$$('#camera-image'); | 79 var cameraImage = changePicture.$$('img[data-type="camera"]'); |
| 80 assertTrue(!!cameraImage); | 80 assertTrue(!!cameraImage); |
| 81 | 81 |
| 82 assertFalse(changePicture.cameraActive_); | |
| 83 expectFalse(changePicture.$.previewImage.hidden); | 82 expectFalse(changePicture.$.previewImage.hidden); |
| 84 | 83 |
| 85 MockInteractions.tap(cameraImage); | 84 MockInteractions.tap(cameraImage); |
| 86 | 85 |
| 87 Polymer.dom.flush(); | 86 Polymer.dom.flush(); |
| 88 | 87 |
| 89 expectTrue(changePicture.cameraActive_); | 88 expectEquals('camera', changePicture.selectedItem_.dataset.type); |
| 90 expectTrue(changePicture.$.previewImage.hidden); | 89 expectTrue(changePicture.$.previewImage.hidden); |
| 91 }); | 90 }); |
| 92 | 91 |
| 93 test('select profile image', function() { | 92 test('select profile image', function() { |
| 94 var profileImage = changePicture.$$('#profile-image'); | 93 var profileImage = changePicture.$$('img[data-type="profile"]'); |
| 95 assertTrue(!!profileImage); | 94 assertTrue(!!profileImage); |
| 96 | 95 |
| 97 MockInteractions.tap(profileImage); | 96 return runAndResolveWhenSelectedItemChanged(function() { |
| 98 | 97 MockInteractions.tap(profileImage); |
| 99 return whenSelectedImageUrlChanged().then(function() { | 98 }).then(function() { |
| 100 expectEquals(changePicture.selectedImageUrl_, | |
| 101 changePicture.profileImageUrl_); | |
| 102 | |
| 103 Polymer.dom.flush(); | 99 Polymer.dom.flush(); |
| 104 expectTrue(profileImage.active); | 100 expectEquals('profile', changePicture.selectedItem_.dataset.type); |
| 105 expectFalse(changePicture.$.previewImage.hidden); | 101 expectFalse(changePicture.$.previewImage.hidden); |
| 106 }); | 102 }); |
| 107 }); | 103 }); |
| 108 | 104 |
| 109 test('select old images', function() { | 105 test('select old images', function() { |
| 110 // By default there is no old image. | 106 // By default there is no old image and the element is hidden. |
| 111 var oldImage = changePicture.$$('#old-image'); | 107 var oldImage = changePicture.$$('img[data-type="old"]'); |
| 112 assertFalse(!!oldImage); | 108 assertTrue(!!oldImage); |
| 109 assertTrue(oldImage.hidden); | |
| 113 | 110 |
| 114 // The promise must start listening for the property change before | 111 return runAndResolveWhenSelectedItemChanged(function() { |
| 115 // we make the fake API call. | 112 settings.ChangePicturePage.receiveOldImage('fake-old-image.jpg'); |
| 116 var promise = whenSelectedImageUrlChanged(); | 113 }).then(function() { |
| 114 Polymer.dom.flush(); | |
| 117 | 115 |
| 118 settings.ChangePicturePage.receiveOldImage('fake-old-image.jpg'); | |
| 119 | |
| 120 return promise.then(function() { | |
| 121 // Expect the old image to be selected once an old image is sent via | 116 // Expect the old image to be selected once an old image is sent via |
| 122 // the native interface. | 117 // the native interface. |
| 123 expectEquals(changePicture.selectedImageUrl_, | 118 expectEquals('old', changePicture.selectedItem_.dataset.type); |
| 124 changePicture.oldImageUrl_); | 119 expectFalse(oldImage.hidden); |
| 125 | |
| 126 Polymer.dom.flush(); | |
| 127 var oldImage = changePicture.$$('#old-image'); | |
| 128 assertTrue(!!oldImage); | |
| 129 expectTrue(oldImage.active); | |
| 130 expectFalse(changePicture.$.previewImage.hidden); | 120 expectFalse(changePicture.$.previewImage.hidden); |
| 131 }); | 121 }); |
| 132 }); | 122 }); |
| 133 | 123 |
| 134 test('select first default image', function() { | 124 test('select first default image', function() { |
| 135 var firstDefaultImage = changePicture.$$('.default-image'); | 125 var firstDefaultImage = changePicture.$$('img[data-type="default"]'); |
| 136 assertTrue(!!firstDefaultImage); | 126 assertTrue(!!firstDefaultImage); |
| 137 | 127 |
| 138 MockInteractions.tap(firstDefaultImage); | 128 return runAndResolveWhenSelectedItemChanged(function() { |
| 139 | 129 MockInteractions.tap(firstDefaultImage); |
| 140 return whenSelectedImageUrlChanged().then(function() { | 130 }).then(function() { |
| 141 // Expect the first default image to be selected. | |
| 142 expectEquals(changePicture.selectedImageUrl_, | |
| 143 changePicture.defaultImages_[0].url); | |
| 144 | |
| 145 Polymer.dom.flush(); | 131 Polymer.dom.flush(); |
| 146 expectTrue(firstDefaultImage.active); | 132 expectEquals('default', changePicture.selectedItem_.dataset.type); |
| 133 expectEquals(firstDefaultImage, changePicture.selectedItem_); | |
| 147 expectFalse(changePicture.$.previewImage.hidden); | 134 expectFalse(changePicture.$.previewImage.hidden); |
| 148 }); | 135 }); |
| 149 }); | 136 }); |
| 150 }); | 137 }); |
| 151 | 138 |
| 152 // Run all registered tests. | 139 // Run all registered tests. |
| 153 mocha.run(); | 140 mocha.run(); |
| 154 }); | 141 }); |
| OLD | NEW |