diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /browser/extensions/formautofill/test/browser/address/browser_edit_address_doorhanger_save_edited_fields.js | |
parent | Initial commit. (diff) | |
download | firefox-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.js | 114 |
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(); + } +}); |