diff options
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.js | 129 |
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(); + } +}); |