Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(EMS-3828-3876): currency of agent charges - save and back, improve e2e assertions #3101

Merged
merged 16 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,12 @@ context(
const { rendering, formSubmission } = assertCurrencyFormFields({
gbpCurrencyCheckedByDefault: true,
errors: CURRENCY_ERROR_MESSAGES,
expectedRedirectUrl: AGENT_CHARGES,
});

rendering();

formSubmission().selectAltRadioButNoAltCurrency({});

formSubmission().submitASupportedCurrency({ url: AGENT_CHARGES });
formSubmission().submitAlternativeCurrency({ url: AGENT_CHARGES });
formSubmission({}).executeTests();
});

describe('form submission', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,18 +115,14 @@ context('Insurance - Policy - Multiple contract policy page - As an exporter, I
legend: CONTRACT_POLICY[CURRENCY_CODE].LEGEND,
hint: CONTRACT_POLICY[CURRENCY_CODE].HINT,
errors: CONTRACT_ERROR_MESSAGES,
errorIndex: 2,
expectedRedirectUrl: MULTIPLE_CONTRACT_POLICY_EXPORT_VALUE,
completeNonCurrencyFieldsFunction: () => cy.completeMultipleContractPolicyForm({ chooseCurrency: false }),
});

rendering();

formSubmission().selectAltRadioButNoAltCurrency({ errorIndex: 2 });

formSubmission().submitASupportedCurrency({
url: MULTIPLE_CONTRACT_POLICY_EXPORT_VALUE,
completeNonCurrencyFields: () => cy.completeMultipleContractPolicyForm({ chooseCurrency: false }),
});

formSubmission().submitAlternativeCurrency({ url: MULTIPLE_CONTRACT_POLICY_EXPORT_VALUE });
formSubmission({}).executeTests();
});

describe('form submission', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,18 +116,14 @@ context('Insurance - Policy - Single contract policy page - As an exporter, I wa
legend: CONTRACT_POLICY[CURRENCY_CODE].LEGEND,
hint: CONTRACT_POLICY[CURRENCY_CODE].HINT,
errors: CONTRACT_ERROR_MESSAGES,
errorIndex: 2,
expectedRedirectUrl: SINGLE_CONTRACT_POLICY_TOTAL_CONTRACT_VALUE,
completeNonCurrencyFieldsFunction: () => cy.completeSingleContractPolicyForm({ chooseCurrency: false }),
});

rendering();

formSubmission().selectAltRadioButNoAltCurrency({ errorIndex: 2 });

formSubmission().submitASupportedCurrency({
url: SINGLE_CONTRACT_POLICY_TOTAL_CONTRACT_VALUE,
completeNonCurrencyFields: () => cy.completeSingleContractPolicyForm({ chooseCurrency: false }),
});

formSubmission().submitAlternativeCurrency({ url: SINGLE_CONTRACT_POLICY_TOTAL_CONTRACT_VALUE });
formSubmission({}).executeTests();
});

describe('form submission', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,13 @@ context(

const { rendering, formSubmission } = assertCurrencyFormFields({
errors: ERRORS,
expectedRedirectUrl: TURNOVER_ROOT,
hasSaveAndBack: false,
});

rendering();

formSubmission().selectAltRadioButNoAltCurrency({});

formSubmission().submitASupportedCurrency({ url: TURNOVER_ROOT });
formSubmission().submitAlternativeCurrency({ url: TURNOVER_ROOT });
formSubmission({}).executeTests();
});
},
);
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,13 @@ context(

const { rendering, formSubmission } = assertCurrencyFormFields({
errors: ERRORS,
expectedRedirectUrl: OUTSTANDING_OR_OVERDUE_PAYMENTS,
hasSaveAndBack: false,
});

rendering();

formSubmission().selectAltRadioButNoAltCurrency({});

formSubmission().submitASupportedCurrency({ url: OUTSTANDING_OR_OVERDUE_PAYMENTS });
formSubmission().submitAlternativeCurrency({ url: OUTSTANDING_OR_OVERDUE_PAYMENTS });
formSubmission({}).executeTests();
});
},
);
42 changes: 30 additions & 12 deletions e2e-tests/shared-test-assertions/currency-form-fields/assertions.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,36 +111,50 @@ const assertCurrencyFormFields = ({
const expectedValue = `${NON_STANDARD_CURRENCY_NAME} (${NON_STANDARD_CURRENCY_CODE})`;
checkAutocompleteInput.allowsUserToRemoveCountryAndSearchAgain(alternativeCurrencyFieldId, DZA.NAME, NON_STANDARD_CURRENCY_NAME, expectedValue);
},
rendersAlternativeCurrencyValidationError: ({ errorIndex = 0 }) => {
rendersAlternativeCurrencyValidationError: ({ errorIndex = 0, viaSaveAndBack }) => {
cy.clickAlternativeCurrencyRadioOption();

cy.clickSubmitButton();
if (viaSaveAndBack) {
cy.clickSaveAndBackButton();
} else {
cy.clickSubmitButton();
}

cy.checkText(partials.errorSummaryListItems().eq(errorIndex), errors[alternativeCurrencyFieldId].IS_EMPTY);

cy.checkText(fieldSelector(alternativeCurrencyFieldId).errorMessage(), `Error: ${errors[alternativeCurrencyFieldId].IS_EMPTY}`);
},
submitRadioAndAssertUrl: ({ currency, url, completeNonCurrencyFields }) => {
if (completeNonCurrencyFields) {
completeNonCurrencyFields();
submitRadioAndAssertUrl: ({ currency, completeNonCurrencyFieldsFunction, url, viaSaveAndBack }) => {
if (completeNonCurrencyFieldsFunction) {
completeNonCurrencyFieldsFunction();
}

const option = currencyRadio({ fieldId, currency });

option.label().click();
cy.clickSubmitButton();

if (viaSaveAndBack) {
cy.clickSaveAndBackButton();
} else {
cy.clickSubmitButton();
}

cy.url().should('include', url);
},
submitAndAssertRadioIsChecked: ({ currency, completeNonCurrencyFields }) => {
if (completeNonCurrencyFields) {
completeNonCurrencyFields();
submitAndAssertRadioIsChecked: ({ currency, completeNonCurrencyFieldsFunction, viaSaveAndBack }) => {
if (completeNonCurrencyFieldsFunction) {
completeNonCurrencyFieldsFunction();
}

const option = currencyRadio({ fieldId, currency });

option.label().click();
cy.clickSubmitButton();

if (viaSaveAndBack) {
cy.clickSaveAndBackButton();
} else {
cy.clickSubmitButton();
}

cy.go('back');

Expand All @@ -154,7 +168,7 @@ const assertCurrencyFormFields = ({

cy.url().should('include', url);
},
submitAlternativeCurrencyAndAssertInput: () => {
submitAlternativeCurrencyAndAssertInput: ({ viaSaveAndBack }) => {
const option5 = currencyRadio({ alternativeCurrencyFieldId });

// clicks alternative currency radio
Expand All @@ -163,7 +177,11 @@ const assertCurrencyFormFields = ({
// search for currency
cy.autocompleteKeyboardInput(alternativeCurrencyFieldId, NON_STANDARD_CURRENCY_NAME);

cy.clickSubmitButton();
if (viaSaveAndBack) {
cy.clickSaveAndBackButton();
} else {
cy.clickSubmitButton();
}

cy.go('back');

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import { INSURANCE_ROUTES } from '../../../constants/routes/insurance';
import selectAltRadioButNoAltCurrency from './select-alt-radio-but-no-alt-currency';
import submitAlternativeCurrency from './submit-alternative-currency';
import submitASupportedCurrency from './submit-a-supported-currency';

const { ALL_SECTIONS } = INSURANCE_ROUTES;

/**
* formSubmissionAssertions
* Form submission assertions for currency form fields.
* @param {Number} errorIndex: Index of the currency field error.
* @param {String} expectedRedirectUrl: Page URL to assert after successful form submission
* @param {Function} rendersAlternativeCurrencyValidationError: Assert alternative currency input validation error.
* @param {Function} submitAndAssertRadioIsChecked: Submit a radio option and assert the radio is checked.
* @param {Function} submitRadioAndAssertUrl: Submit a radio option and assert the URL.
* @param {Function} submitAlternativeCurrencyAndAssertUrl: Submit an alternative currency and assert the URL.
* @param {Function} submitAlternativeCurrencyAndAssertInput: Submit an alternative currency and assert the input.
* @param {Function} completeNonCurrencyFieldsFunction: Optional function to complete non-currency form fields.
* @param {Boolean} hasSaveAndBack: Temporary Flag for if the form has "save and back" functionality
* @returns {Object} Object with Mocha describe blocks and assertions for particular scenarios.
*/
const formSubmissionAssertions = ({
errorIndex,
expectedRedirectUrl,
rendersAlternativeCurrencyValidationError,
submitAndAssertRadioIsChecked,
submitRadioAndAssertUrl,
submitAlternativeCurrencyAndAssertUrl,
submitAlternativeCurrencyAndAssertInput,
completeNonCurrencyFieldsFunction,
hasSaveAndBack,
}) => {
const executeTests = () => {
describe('currency form fields - form submission', () => {
describe('via `continue` button', () => {
selectAltRadioButNoAltCurrency({ errorIndex, rendersAlternativeCurrencyValidationError });

submitASupportedCurrency({
completeNonCurrencyFieldsFunction,
submitRadioAndAssertUrl,
submitAndAssertRadioIsChecked,
expectedRedirectUrl,
});

submitAlternativeCurrency({
expectedRedirectUrl,
submitAlternativeCurrencyAndAssertUrl,
submitAlternativeCurrencyAndAssertInput,
});
});

if (hasSaveAndBack) {
describe('via `save and back` button', () => {
submitASupportedCurrency({
completeNonCurrencyFieldsFunction,
submitRadioAndAssertUrl,
submitAndAssertRadioIsChecked,
expectedRedirectUrl: ALL_SECTIONS,
viaSaveAndBack: true,
});

submitAlternativeCurrency({
expectedRedirectUrl: ALL_SECTIONS,
submitAlternativeCurrencyAndAssertUrl,
submitAlternativeCurrencyAndAssertInput,
viaSaveAndBack: true,
});
});
}
});
};

return { executeTests };
};

export default formSubmissionAssertions;
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* selectAltRadioButNoAltCurrency
* Mocha describe block and assertion for selecting the "alternative currency" radio
* and then NOT entering a currency via the autocomplete input.
* @param {Number} errorIndex: Index of the currency field error.
* @param {Function} rendersAlternativeCurrencyValidationError: Assert alternative currency input validation error.
* @param {Boolean} viaSaveAndBack: Flag whether to submit the form via the "save and back" button.
* @returns {Object} Object with Mocha describe block and assertion
*/
const selectAltRadioButNoAltCurrency = ({ errorIndex = 0, rendersAlternativeCurrencyValidationError, viaSaveAndBack = false }) => {
describe('when selecting the alternative currency radio and NOT entering an alternative currency via the autocomplete input', () => {
it('should pre-select the alternative currency option and render validation errors', () => {
rendersAlternativeCurrencyValidationError({ errorIndex, viaSaveAndBack });
});
});
};

export default selectAltRadioButNoAltCurrency;
Loading