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

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

Issue 1947293002: Implement autofill Address and Credit Card lists. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 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/settings_autofill_section_browsertest.js
diff --git a/chrome/test/data/webui/settings/settings_autofill_section_browsertest.js b/chrome/test/data/webui/settings/settings_autofill_section_browsertest.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac82b06575c34cf15691ac7bee682cd3e282efe2
--- /dev/null
+++ b/chrome/test/data/webui/settings/settings_autofill_section_browsertest.js
@@ -0,0 +1,206 @@
+// Copyright 2016 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.
+
+/** @fileoverview Runs the Polymer Autofill Settings tests. */
+
+/** @const {string} Path to root from chrome/test/data/webui/settings/. */
+var ROOT_PATH = '../../../../../';
+
+// Polymer BrowserTest fixture.
+GEN_INCLUDE(
+ [ROOT_PATH + 'chrome/test/data/webui/polymer_browser_test_base.js']);
+
+/**
+ * @constructor
+ * @extends {PolymerTest}
+ */
+function SettingsAutofillSectionBrowserTest() {}
+
+SettingsAutofillSectionBrowserTest.prototype = {
+ __proto__: PolymerTest.prototype,
+
+ /** @override */
+ browsePreload:
+ 'chrome://md-settings/passwords_and_forms_page/autofill_section.html',
+
+ /** @override */
+ extraLibraries: PolymerTest.getLibraries(ROOT_PATH),
+
+ /** @override */
+ setUp: function() {
+ PolymerTest.prototype.setUp.call(this);
+
+ // Test is run on an individual element that won't have a page language.
+ this.accessibilityAuditConfig.auditRulesToIgnore.push('humanLangMissing');
+ },
+
+ /**
+ * Replaces any 'x' in a string with a random number of the base.
+ * @param {!string} pattern The pattern that should be used as an input.
+ * @param {!number} base The number base. ie: 16 for hex or 10 for decimal.
+ * @return {!string}
+ * @private
+ */
+ patternMaker_: function(pattern, base) {
+ return pattern.replace(/x/g, function() {
+ return Math.floor(Math.random() * base).toString(base);
+ });
+ },
+
+ /**
+ * Creates a new random GUID for testing.
+ * @return {!string}
+ * @private
+ */
+ makeGuid_: function() {
+ return this.patternMaker_('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 16);
+ },
+
+ /**
+ * Creates a fake address entry for testing.
+ * @return {!chrome.autofillPrivate.AddressEntry}
+ * @private
+ */
+ createFakeAddressEntry_: function() {
+ var ret = {};
+ ret.guid = this.makeGuid_();
+ ret.fullNames = ['John', 'Doe'];
+ ret.companyName = 'Google';
+ ret.addressLines = this.patternMaker_('xxxx Main St', 10);
+ ret.addressLevel1 = "CA";
+ ret.addressLevel2 = "Venice";
+ ret.postalCode = this.patternMaker_('xxxxx', 10);
+ ret.countryCode = 'US';
+ ret.phoneNumbers = [this.patternMaker_('(xxx) xxx-xxxx', 10)];
+ ret.emailAddresses = [this.patternMaker_('userxxxx@gmail.com', 16)];
+ ret.languageCode = 'EN-US';
+ ret.metadata = {isLocal: true};
+ ret.metadata.summaryLabel = ret.fullNames[0];
+ ret.metadata.summarySublabel = ' ' + ret.addressLines;
+ return ret;
+ },
+
+ /**
+ * Creates a new random credit card entry for testing.
+ * @return {!chrome.autofillPrivate.CreditCardEntry}
+ * @private
+ */
+ createFakeCreditCardEntry_: function() {
+ var ret = {};
+ ret.guid = this.makeGuid_();
+ ret.name = 'Jane Doe';
+ ret.cardNumber = this.patternMaker_('xxxx xxxx xxxx xxxx', 10);
+ ret.expirationMonth = Math.ceil(Math.random() * 11).toString();
+ ret.expirationYear = (2016 + Math.floor(Math.random() * 5)).toString();
+ ret.metadata = {isLocal: true};
+ var cards = ['Visa', 'Mastercard', 'Discover', 'Card'];
+ var card = cards[Math.floor(Math.random() * cards.length)];
+ ret.metadata.summaryLabel = card + ' ' + '****' + ret.cardNumber.substr(-4);
+ return ret;
+ },
+
+ /**
+ * Allow the iron-list to be sized properly.
+ * @param {!Object} autofillSection
+ * @private
+ */
+ flushAutofillSection_: function(autofillSection) {
+ autofillSection.$.addressList.notifyResize();
+ autofillSection.$.creditCardList.notifyResize();
+ Polymer.dom.flush();
+ },
+ /**
+ * Creates the autofill section for the given lists.
+ * @param {!Array<!chrome.passwordsPrivate.PasswordUiEntry>} passwordList
+ * @param {!Array<!chrome.passwordsPrivate.ExceptionPair>} exceptionList
+ * @return {!Object}
+ * @private
+ */
+ createAutofillSection_: function(addresses, creditCards) {
+ // Create a passwords-section to use for testing.
+ var section = document.createElement('settings-autofill-section');
+ section.addresses = addresses;
+ section.creditCards = creditCards;
+ document.body.appendChild(section);
+ this.flushAutofillSection_(section);
+ return section;
+ },
+};
+
+/**
+ * This test will validate that the section is loaded with data.
+ */
+TEST_F('SettingsAutofillSectionBrowserTest', 'uiTests', function() {
+ var self = this;
+
+ suite('AutofillSection', function() {
+ test('verifyCreditCardCount', function() {
+ var creditCards = [
+ self.createFakeCreditCardEntry_(),
+ self.createFakeCreditCardEntry_(),
+ self.createFakeCreditCardEntry_(),
+ self.createFakeCreditCardEntry_(),
+ self.createFakeCreditCardEntry_(),
+ self.createFakeCreditCardEntry_(),
+ ];
+
+ var section = self.createAutofillSection_([], creditCards);
+
+ assertTrue(!!section);
+ var creditCardList = section.$.creditCardList;
+ assertTrue(!!creditCardList);
+ assertEquals(creditCards, creditCardList.items);
+ // +1 for the template element.
+ assertEquals(creditCards.length + 1, creditCardList.children.length);
+ });
+
+ test('verifyCreditCardFields', function() {
+ var creditCard = self.createFakeCreditCardEntry_();
+ var section = self.createAutofillSection_([], [creditCard]);
+ var creditCardList = section.$.creditCardList;
+ var row = creditCardList.children[1]; // Skip over the template.
+ assertTrue(!!row);
+
+ assertEquals(creditCard.metadata.summaryLabel,
+ row.querySelector('#creditCardLabel').textContent);
+ assertEquals(creditCard.expirationMonth + '/' + creditCard.expirationYear,
+ row.querySelector('#creditCardExpiration').textContent);
+ });
+
+ test('verifyAddressCount', function() {
+ var addresses = [
+ self.createFakeAddressEntry_(),
+ self.createFakeAddressEntry_(),
+ self.createFakeAddressEntry_(),
+ self.createFakeAddressEntry_(),
+ self.createFakeAddressEntry_(),
+ ];
+
+ var section = self.createAutofillSection_(addresses, []);
+
+ assertTrue(!!section);
+ var addressList = section.$.addressList;
+ assertTrue(!!addressList);
+ assertEquals(addresses, addressList.items);
+ // +1 for the template element.
+ assertEquals(addresses.length + 1, addressList.children.length);
+ });
+
+ test('verifyAddressFields', function() {
+ var address = self.createFakeAddressEntry_();
+ var section = self.createAutofillSection_([address], []);
+ var addressList = section.$.addressList;
+ var row = addressList.children[1]; // Skip over the template.
+ assertTrue(!!row);
+
+ var addressSummary = address.metadata.summaryLabel +
+ address.metadata.summarySublabel;
+
+ assertEquals(addressSummary,
+ row.querySelector('#addressSummary').textContent);
+ });
+ });
+
+ mocha.run();
+});

Powered by Google App Engine
This is Rietveld 408576698