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 |