summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js')
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js
new file mode 100644
index 0000000000..4805f5e724
--- /dev/null
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_non_mergeable_fields.js
@@ -0,0 +1,94 @@
+"use strict";
+
+async function expectSavedAddresses(expectedCount) {
+ const addresses = await getAddresses();
+ is(
+ addresses.length,
+ expectedCount,
+ `${addresses.length} address in the storage`
+ );
+ return addresses;
+}
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["extensions.formautofill.addresses.capture.enabled", true],
+ ["extensions.formautofill.addresses.supported", "on"],
+ ],
+ });
+});
+
+/**
+ * Submit a form with both mergeable and non-mergeable fields, we should only
+ * update address fields that are mergeable
+ */
+add_task(async function test_do_not_update_non_mergeable_fields() {
+ const TEST_ADDRESS = {
+ "address-level1": "New York",
+ "address-level2": "New York City",
+ "street-address": "32 Vassar Street 3F",
+ email: "john.doe@mozilla.com",
+ "postal-code": "12345-1234",
+ organization: "MOZILLA",
+ country: "US",
+ };
+ await setStorage(TEST_ADDRESS);
+
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url: ADDRESS_FORM_URL },
+ async browser => {
+ const onUpdatePopupShown = waitForPopupShown();
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: "#given-name",
+ newValues: {
+ "#given-name": "John",
+ "#family-name": "Doe",
+ "#address-level1": "NY", // NY == New York
+ "#address-level2": "New York", // non-mergeable
+ "#street-address": "32 Vassar Street", // non-mergeable
+ "#email": "", // non-mergeable
+ "#postal-code": "12345", // non-mergeable
+ "#organization": TEST_ADDRESS.organization.toLowerCase(),
+ "#country": "US",
+ },
+ });
+ await onUpdatePopupShown;
+
+ await clickAddressDoorhangerButton(MAIN_BUTTON);
+ }
+ );
+
+ const addresses = await expectSavedAddresses(1);
+
+ Assert.equal(addresses[0]["given-name"], "John", `given-name is added`);
+ Assert.equal(addresses[0]["family-name"], "Doe", `family-name is added`);
+ Assert.equal(
+ addresses[0]["street-address"],
+ TEST_ADDRESS["street-address"],
+ `street-address is not updated`
+ );
+ Assert.equal(
+ addresses[0]["address-level1"],
+ TEST_ADDRESS["address-level1"],
+ `address-level1 is not updated`
+ );
+ Assert.equal(
+ addresses[0]["address-level2"],
+ TEST_ADDRESS["address-level2"],
+ `address-level2 is not updated`
+ );
+ Assert.equal(addresses[0].email, TEST_ADDRESS.email, `email is not update`);
+ Assert.equal(
+ addresses[0]["postal-code"],
+ "12345-1234",
+ `postal-code not is update`
+ );
+ Assert.equal(
+ addresses[0].organization,
+ TEST_ADDRESS.organization.toLowerCase(),
+ `organization is update`
+ );
+
+ await removeAllRecords();
+});