summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js')
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js114
1 files changed, 114 insertions, 0 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js b/browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js
new file mode 100644
index 0000000000..d146a3b722
--- /dev/null
+++ b/browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js
@@ -0,0 +1,114 @@
+"use strict";
+
+const SUBMIT_RECORD = {
+ "given-name": "John",
+ "family-name": "Doe",
+ organization: "Mozilla",
+ "street-address": "123 Sesame Street",
+ tel: "+13453453456",
+};
+
+const TEST_CASE = [
+ {
+ description: "adding the email field",
+ editedFields: {
+ email: "test@mozilla.org",
+ },
+ },
+ {
+ description: "changing the given-name field",
+ editedFields: {
+ name: "Jane",
+ },
+ },
+ {
+ description: "appending the street-address field",
+ editedFields: {
+ "street-address": SUBMIT_RECORD["street-address"] + " 4F",
+ },
+ },
+ {
+ description: "removing some fields",
+ editedFields: {
+ name: "",
+ tel: "",
+ },
+ },
+ {
+ description: "doing all kinds of stuff",
+ editedFields: {
+ organization: SUBMIT_RECORD.organization.toLowerCase(),
+ "address-level1": "California",
+ tel: "",
+ "street-address": SUBMIT_RECORD["street-address"] + " Apt.6",
+ name: "Jane Doe",
+ },
+ },
+];
+
+async function expectSavedAddresses(expectedCount) {
+ const addresses = await getAddresses();
+ is(
+ addresses.length,
+ expectedCount,
+ `${addresses.length} address in the storage`
+ );
+ return addresses;
+}
+
+function recordToFormSelector(record) {
+ let obj = {};
+ for (const [key, value] of Object.entries(record)) {
+ obj[`#${key}`] = value;
+ }
+ return obj;
+}
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["extensions.formautofill.addresses.capture.enabled", true],
+ ["extensions.formautofill.addresses.supported", "on"],
+ ],
+ });
+});
+
+// Test different scenarios when we change something in the edit address dorhanger
+add_task(async function test_save_edited_fields() {
+ await expectSavedAddresses(0);
+
+ for (const TEST of TEST_CASE) {
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url: ADDRESS_FORM_URL },
+ async function (browser) {
+ info(`Test ${TEST.description}`);
+
+ const onSavePopupShown = waitForPopupShown();
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: "#given-name",
+ newValues: recordToFormSelector(SUBMIT_RECORD),
+ });
+ await onSavePopupShown;
+
+ const onEditPopupShown = waitForPopupShown();
+ await clickAddressDoorhangerButton(EDIT_ADDRESS_BUTTON);
+ await onEditPopupShown;
+
+ fillEditDoorhanger(TEST.editedFields);
+ await clickAddressDoorhangerButton(MAIN_BUTTON);
+ }
+ );
+
+ const expectedRecord = normalizeAddressFields({
+ ...SUBMIT_RECORD,
+ ...TEST.editedFields,
+ });
+
+ const addresses = await expectSavedAddresses(1);
+ for (const [key, value] of Object.entries(expectedRecord)) {
+ is(addresses[0][key] ?? "", value, `${key} field is saved`);
+ }
+
+ await removeAllRecords();
+ }
+});