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

Unified Diff: chrome/test/data/webui/settings/people_page_change_picture_test.js

Issue 1871073004: Settings People Revamp: Simplify Change Picture browsertests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@0138-settings-people-manage-profile-browser-tests
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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/settings/people_page_change_picture_test.js
diff --git a/chrome/test/data/webui/settings/people_page_change_picture_test.js b/chrome/test/data/webui/settings/people_page_change_picture_test.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3230713a5dcc2414725dfc1c8d395bdf6836be2
--- /dev/null
+++ b/chrome/test/data/webui/settings/people_page_change_picture_test.js
@@ -0,0 +1,238 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+cr.define('settings_people_page_change_picture', function() {
+ /**
+ * @constructor
+ * @implements {settings.ChangePictureBrowserProxy}
+ * @extends {settings.TestBrowserProxy}
+ */
+ var TestChangePictureBrowserProxy = function() {
+ settings.TestBrowserProxy.call(this, [
+ 'initialize',
+ 'selectDefaultImage',
+ 'selectOldImage',
+ 'selectProfileImage',
+ 'photoTaken',
+ 'chooseFile',
+ ]);
+ };
+
+ TestChangePictureBrowserProxy.prototype = {
+ __proto__: settings.TestBrowserProxy.prototype,
+
+ /** @override */
+ initialize: function() {
+ cr.webUIListenerCallback('profile-image-changed',
+ 'fake-profile-image-url',
+ false /* selected */);
+
+ var fakeDefaultImages = [
+ {
+ author: 'Author1',
+ title: 'Title1',
+ url: 'chrome://theme/1.png',
+ website: 'http://foo1.com',
+ },
+ {
+ author: 'Author2',
+ title: 'Title2',
+ url: 'chrome://theme/2.png',
+ website: 'http://foo2.com',
+ },
+ ];
+ cr.webUIListenerCallback('default-images-changed', fakeDefaultImages);
+
+ this.methodCalled('initialize');
+ },
+
+ /** @override */
+ selectDefaultImage: function(imageUrl) {
+ cr.webUIListenerCallback('selected-image-changed', imageUrl);
+ this.methodCalled('selectDefaultImage', [imageUrl]);
+ },
+
+ /** @override */
+ selectOldImage: function() {
+ cr.webUIListenerCallback('old-image-changed', 'fake-old-image.jpg');
+ this.methodCalled('selectOldImage');
+ },
+
+ /** @override */
+ selectProfileImage: function() {
+ cr.webUIListenerCallback('profile-image-changed',
+ 'fake-profile-image-url',
+ true /* selected */);
+ this.methodCalled('selectProfileImage');
+ },
+
+ /** @override */
+ photoTaken: function() {
+ this.methodCalled('photoTaken');
+ },
+
+ /** @override */
+ chooseFile: function() {
+ this.methodCalled('chooseFile');
+ },
+ };
+
+ function registerChangePictureTests() {
+ suite('ChangePictureTests', function() {
+ var changePicture = null;
+ var browserProxy = null;
+ var settingsCamera = null;
+ var discardControlBar = null;
+
+ suiteSetup(function() {
+ loadTimeData.overrideValues({
+ profilePhoto: 'Fake Profile Photo description',
+ });
+ });
+
+ setup(function() {
+ browserProxy = new TestChangePictureBrowserProxy();
+ settings.ChangePictureBrowserProxyImpl.instance_ = browserProxy;
+ PolymerTest.clearBody();
+ changePicture = document.createElement('settings-change-picture');
+ document.body.appendChild(changePicture);
+
+ settingsCamera = changePicture.$$('settings-camera');
+ assertTrue(!!settingsCamera);
+ discardControlBar = changePicture.$.discardControlBar;
+ assertTrue(!!discardControlBar);
dpapad 2016/04/09 00:16:35 Could we move the following which is repeated at t
tommycli 2016/04/11 19:09:57 Done. I did not know that was even an option. The
+ });
+
+ teardown(function() { changePicture.remove(); });
+
+ test('ChangePictureSelectCamera', function() {
+ return browserProxy.whenCalled('initialize').then(function() {
+ Polymer.dom.flush();
+
+ var cameraIcon = changePicture.$.cameraImage;
+ assertTrue(!!cameraIcon);
+
+ // Force the camera to be absent, even if it's actually present.
+ cr.webUIListenerCallback('camera-presence-changed', false);
+ Polymer.dom.flush();
+
+ expectTrue(cameraIcon.hidden);
+ expectFalse(settingsCamera.cameraActive);
+
+ cr.webUIListenerCallback('camera-presence-changed', true);
+ Polymer.dom.flush();
+
+ expectFalse(cameraIcon.hidden);
+ expectFalse(settingsCamera.cameraActive);
+
+ MockInteractions.tap(cameraIcon);
+
+ Polymer.dom.flush();
+ expectFalse(cameraIcon.hidden);
+ expectTrue(settingsCamera.cameraActive);
+ expectEquals('camera', changePicture.selectedItem_.dataset.type);
dpapad 2016/04/09 00:16:35 Is there a way we can achieve the same assertion w
tommycli 2016/04/11 19:09:57 Done.
+ expectTrue(discardControlBar.hidden);
+ });
+ });
+
+ test('ChangePictureProfileImage', function() {
+ return browserProxy.whenCalled('initialize').then(function() {
+ Polymer.dom.flush();
+
+ var profileImage = changePicture.$.profileImage;
+ assertTrue(!!profileImage);
+
+ expectEquals(null, changePicture.selectedItem_);
+ MockInteractions.tap(profileImage);
+
+ return browserProxy.whenCalled('selectProfileImage').then(function() {
+ Polymer.dom.flush();
+
+ expectEquals('profile', changePicture.selectedItem_.dataset.type);
+ expectFalse(settingsCamera.cameraActive);
+ expectTrue(discardControlBar.hidden);
+ });
+ });
+ });
+
+ test('ChangePictureOldImage', function() {
+ return browserProxy.whenCalled('initialize').then(function() {
+ Polymer.dom.flush();
+
+ // By default there is no old image and the element is hidden.
+ var oldImage = changePicture.$.oldImage;
+ assertTrue(!!oldImage);
+ assertTrue(oldImage.hidden);
+
+ cr.webUIListenerCallback('old-image-changed', 'fake-old-image.jpg');
+ Polymer.dom.flush();
+
+ // Expect the old image to be selected once an old image is sent via
+ // the native interface.
+ expectEquals('old', changePicture.selectedItem_.dataset.type);
+ expectFalse(oldImage.hidden);
+ expectFalse(settingsCamera.cameraActive);
+ expectFalse(discardControlBar.hidden);
+ })
+ });
+
+ test('ChangePictureSelectFirstDefaultImage', function() {
+ return browserProxy.whenCalled('initialize').then(function() {
+ Polymer.dom.flush();
+
+ var firstDefaultImage = changePicture.$$('img[data-type="default"]');
+ assertTrue(!!firstDefaultImage);
+
+ MockInteractions.tap(firstDefaultImage);
+
+ return browserProxy.whenCalled('selectDefaultImage').then(
+ function(args) {
+ expectEquals('chrome://theme/1.png', args[0]);
+
+ Polymer.dom.flush();
+ expectEquals('default',
+ changePicture.selectedItem_.dataset.type);
+ expectEquals(firstDefaultImage, changePicture.selectedItem_);
+ expectFalse(settingsCamera.cameraActive);
+ expectTrue(discardControlBar.hidden);
+ });
+ });
+ });
+
+ test('ChangePictureRestoreImageAfterDiscard', function() {
+ return browserProxy.whenCalled('initialize').then(function() {
+ Polymer.dom.flush();
+
+ var firstDefaultImage = changePicture.$$('img[data-type="default"]');
+ assertTrue(!!firstDefaultImage);
+ var discardOldImage = changePicture.$.discardOldImage;
+ assertTrue(!!discardOldImage);
+
+ MockInteractions.tap(firstDefaultImage);
+
+ return browserProxy.whenCalled('selectDefaultImage').then(function() {
+ Polymer.dom.flush();
+ expectEquals(firstDefaultImage, changePicture.selectedItem_);
+
+ cr.webUIListenerCallback('old-image-changed', 'fake-old-image.jpg');
+
+ Polymer.dom.flush();
+ expectEquals('old', changePicture.selectedItem_.dataset.type);
+
+ MockInteractions.tap(discardOldImage);
+
+ Polymer.dom.flush();
+ expectEquals(firstDefaultImage, changePicture.selectedItem_);
+ });
+ });
+ });
+ });
+ }
+
+ return {
+ registerTests: function() {
+ registerChangePictureTests();
+ },
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698