summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js')
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js129
1 files changed, 129 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
new file mode 100644
index 0000000000..a247341fef
--- /dev/null
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
@@ -0,0 +1,129 @@
+"use strict";
+
+async function expectSavedAddresses(expectedAddresses) {
+ const addresses = await getAddresses();
+ is(
+ addresses.length,
+ expectedAddresses.length,
+ `${addresses.length} address in the storage`
+ );
+
+ for (let i = 0; i < expectedAddresses.length; i++) {
+ for (const [key, value] of Object.entries(expectedAddresses[i])) {
+ is(addresses[i][key] ?? "", value, `field ${key} should be equal`);
+ }
+ }
+ return addresses;
+}
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [["extensions.formautofill.addresses.capture.enabled", true]],
+ });
+});
+
+add_task(async function test_save_doorhanger_state_invalid() {
+ const DEFAULT = {
+ "given-name": "John",
+ "family-name": "Doe",
+ organization: "Mozilla",
+ "street-address": "123 Sesame Street",
+ country: "US",
+ };
+
+ const TEST_CASES = [
+ {
+ filled: { "address-level1": "floridaa" }, // typo
+ expected: { "address-level1": "" },
+ },
+ {
+ filled: { "address-level1": "AB" }, // non-exist region code
+ expected: { "address-level1": "" },
+ },
+ ];
+
+ for (const TEST of TEST_CASES) {
+ await expectSavedAddresses([]);
+
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url: ADDRESS_FORM_URL },
+ async function (browser) {
+ let onPopupShown = waitForPopupShown();
+
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: "#given-name",
+ newValues: {
+ "#given-name": DEFAULT["given-name"],
+ "#family-name": DEFAULT["family-name"],
+ "#organization": DEFAULT.organization,
+ "#street-address": DEFAULT["street-address"],
+ "#address-level1": TEST.filled["address-level1"],
+ },
+ });
+
+ await onPopupShown;
+ await clickDoorhangerButton(MAIN_BUTTON, 0);
+ }
+ );
+
+ await expectSavedAddresses([Object.assign(DEFAULT, TEST.expected)]);
+ await removeAllRecords();
+ }
+});
+
+add_task(async function test_save_doorhanger_state_valid() {
+ const DEFAULT = {
+ "given-name": "John",
+ "family-name": "Doe",
+ organization: "Mozilla",
+ "street-address": "123 Sesame Street",
+ country: "US",
+ };
+
+ const TEST_CASES = [
+ {
+ filled: { "address-level1": "ca" },
+ expected: { "address-level1": "ca" },
+ },
+ {
+ filled: { "address-level1": "CA" },
+ expected: { "address-level1": "CA" },
+ },
+ {
+ filled: { "address-level1": "california" },
+ expected: { "address-level1": "california" },
+ },
+ {
+ filled: { "address-level1": "California" },
+ expected: { "address-level1": "California" },
+ },
+ ];
+
+ for (const TEST of TEST_CASES) {
+ await expectSavedAddresses([]);
+
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url: ADDRESS_FORM_URL },
+ async function (browser) {
+ let onPopupShown = waitForPopupShown();
+
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: "#given-name",
+ newValues: {
+ "#given-name": DEFAULT["given-name"],
+ "#family-name": DEFAULT["family-name"],
+ "#organization": DEFAULT.organization,
+ "#street-address": DEFAULT["street-address"],
+ "#address-level1": TEST.filled["address-level1"],
+ },
+ });
+
+ await onPopupShown;
+ await clickDoorhangerButton(MAIN_BUTTON, 0);
+ }
+ );
+
+ await expectSavedAddresses([Object.assign(DEFAULT, TEST.expected)]);
+ await removeAllRecords();
+ }
+});