Skip to content

Commit

Permalink
feat(EMS-3826-3829): export contract - agent charges/currency - user …
Browse files Browse the repository at this point in the history
…flow
  • Loading branch information
ttbarnes committed Sep 19, 2024
1 parent 27d7174 commit 6ab9d9a
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 317 deletions.
13 changes: 5 additions & 8 deletions e2e-tests/commands/insurance/complete-export-contract-section.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,15 @@ const completeExportContractSection = ({
if (agentIsCharging) {
cy.completeAndSubmitAgentChargesForm({
fixedSumMethod: agentChargeMethodFixedSum,
fixedSumAmount: agentChargeFixedSumAmount,
percentageMethod: agentChargeMethodPercentage,
});

if (alternativeCurrency) {
cy.clickBackLink();
if (agentChargeMethodFixedSum) {
cy.completeAndSubmitAlternativeCurrencyForm({ alternativeCurrency });

cy.clickProvideAlternativeCurrencyLink();

cy.clickAlternativeCurrencyRadioAndSubmitCurrency({});

cy.clickSubmitButton();
cy.completeAndSubmitHowMuchIsTheAgentChargingForm({
fixedSumAmount: agentChargeFixedSumAmount,
});
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* @param {Boolean} isUsingAgent: if the exporter is using an agent
* @param {Boolean} agentIsCharging: if the agent is charging
* @param {Boolean} fixedSumMethod: if the agent is charging using fixed sum method
* @param {String} fixedSumAmount: Fixed sum amount
*/
const completeAndSubmitExportContractForms = ({
formToStopAt,
Expand All @@ -20,6 +21,7 @@ const completeAndSubmitExportContractForms = ({
isUsingAgent,
agentIsCharging,
fixedSumMethod,
fixedSumAmount,
}) => {
cy.startInsuranceExportContractSection({ viaTaskList });

Expand All @@ -36,14 +38,22 @@ const completeAndSubmitExportContractForms = ({
initialSteps.push({ name: 'privateMarket', action: () => cy.completeAndSubmitPrivateMarketForm({ attemptedPrivateMarketCover }) });
}

const steps = [
let steps = [
...initialSteps,
{ name: 'agent', action: () => cy.completeAndSubmitAgentForm({ isUsingAgent }) },
{ name: 'agentDetails', action: () => cy.completeAndSubmitAgentDetailsForm({}) },
{ name: 'agentService', action: () => cy.completeAndSubmitAgentServiceForm({ agentIsCharging }) },
{ name: 'agentCharges', action: () => cy.completeAgentChargesForm({ fixedSumMethod }) },
{ name: 'agentCharges', action: () => cy.completeAndSubmitAgentChargesForm({ fixedSumMethod }) },
];

if (fixedSumMethod) {
steps = [
...steps,
{ name: 'currencyOfAgentCharges', action: () => cy.completeAndSubmitAlternativeCurrencyForm({}) },
{ name: 'howMuchAgentIsCharging', action: () => cy.completeAndSubmitHowMuchIsTheAgentChargingForm({ fixedSumAmount }) },
];
}

/**
* carries out steps in steps array
* if the step name matches the form to stop at, it breaks out of the loop
Expand Down
13 changes: 7 additions & 6 deletions e2e-tests/constants/routes/insurance/export-contract.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const AGENT_ROOT = `${ROOT}/agent`;
const AGENT_DETAILS_ROOT = `${ROOT}/agent-details`;
const AGENT_SERVICE_ROOT = `${ROOT}/agent-service`;
const AGENT_CHARGES_ROOT = `${ROOT}/agent-charges`;
const AGENT_CHARGES_CURRENCY_ROOT = `${ROOT}/currency-of-agents-charge`;
const HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT = `${ROOT}/how-much-is-the-agent-charging`;

export const EXPORT_CONTRACT = {
Expand Down Expand Up @@ -49,12 +50,12 @@ export const EXPORT_CONTRACT = {
AGENT_CHARGES_CHANGE: `${AGENT_CHARGES_ROOT}/change`,
AGENT_CHARGES_CHECK_AND_CHANGE: `${AGENT_CHARGES_ROOT}/check-and-change`,
AGENT_CHARGES_CURRENCY_SAVE_AND_BACK: `${AGENT_CHARGES_ROOT}/save-and-go-back`,
AGENT_CHARGES_CURRENCY: `${AGENT_CHARGES_ROOT}/alternative-currency`,
AGENT_CHARGES_CURRENCY_CHANGE: `${AGENT_CHARGES_ROOT}/alternative-currency/change`,
AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE: `${AGENT_CHARGES_ROOT}/alternative-currency/check-and-change`,
AGENT_CHARGES_CURRENCY: AGENT_CHARGES_CURRENCY_ROOT,
AGENT_CHARGES_CURRENCY_CHANGE: `${AGENT_CHARGES_CURRENCY_ROOT}/change`,
AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE: `${AGENT_CHARGES_CURRENCY_ROOT}/check-and-change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_SAVE_AND_BACK: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/save-and-go-back`,
HOW_MUCH_IS_THE_AGENT_CHARGING: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency/change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHECK_AND_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency/check-and-change`,
HOW_MUCH_IS_THE_AGENT_CHARGING: HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHECK_AND_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/check-and-change`,
CHECK_YOUR_ANSWERS: `${ROOT}/check-your-answers`,
};
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const CONTENT_STRINGS = PAGES.INSURANCE.EXPORT_CONTRACT.AGENT_CHARGES;

const {
ROOT,
EXPORT_CONTRACT: { AGENT_CHARGES, AGENT_SERVICE, CHECK_YOUR_ANSWERS },
EXPORT_CONTRACT: { AGENT_CHARGES, AGENT_CHARGES_CURRENCY, AGENT_SERVICE, CHECK_YOUR_ANSWERS },
} = INSURANCE_ROUTES;

const {
Expand All @@ -24,6 +24,7 @@ context(
() => {
let referenceNumber;
let url;
let agentChargesCurrencyUrl;
let checkYourAnswersUrl;

before(() => {
Expand All @@ -34,6 +35,7 @@ context(
cy.completeAndSubmitExportContractForms({ formToStopAt: 'agentService', isUsingAgent: true, agentIsCharging: true });

url = `${baseUrl}${ROOT}/${referenceNumber}${AGENT_CHARGES}`;
agentChargesCurrencyUrl = `${baseUrl}${ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`;
checkYourAnswersUrl = `${baseUrl}${ROOT}/${referenceNumber}${CHECK_YOUR_ANSWERS}`;
});
});
Expand Down Expand Up @@ -116,10 +118,10 @@ context(
});

describe(`when submitting with ${METHOD} as ${FIXED_SUM}`, () => {
it(`should redirect to ${CHECK_YOUR_ANSWERS}`, () => {
it(`should redirect to ${AGENT_CHARGES_CURRENCY}`, () => {
cy.completeAndSubmitAgentChargesForm({ fixedSumMethod: true });

cy.assertUrl(checkYourAnswersUrl);
cy.assertUrl(agentChargesCurrencyUrl);
});

// TODO: EMS-3828 - renable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { headingCaption } from '../../../../../../pages/shared';
import { BUTTONS, ERROR_MESSAGES, PAGES } from '../../../../../../content-strings';
import { ERROR_MESSAGES, PAGES } from '../../../../../../content-strings';
import { EXPORT_CONTRACT_FIELDS as FIELDS } from '../../../../../../content-strings/fields/insurance/export-contract';
import { INSURANCE_FIELD_IDS } from '../../../../../../constants/field-ids/insurance';
import { INSURANCE_ROUTES } from '../../../../../../constants/routes/insurance';
Expand All @@ -9,7 +9,7 @@ const CONTENT_STRINGS = PAGES.INSURANCE.EXPORT_CONTRACT.AGENT_CHARGES_CURRENCY;

const {
ROOT,
EXPORT_CONTRACT: { AGENT_CHARGES_CURRENCY, AGENT_CHARGES },
EXPORT_CONTRACT: { AGENT_CHARGES, AGENT_CHARGES_CURRENCY, HOW_MUCH_IS_THE_AGENT_CHARGING },
} = INSURANCE_ROUTES;

const {
Expand All @@ -24,24 +24,22 @@ const {

const baseUrl = Cypress.config('baseUrl');

// TODO: EMS-3828 - renable
context.skip(
context(
"Insurance - Export contract - Agent charges - Alternative currency page - As an Exporter, I want to be able to choose another currency to report my agent's fees in, So that I can provide accurate information regarding any fees I have incurred in winning my export contract",
() => {
let referenceNumber;
let url;
let howMuchAgentIsChargingUrl;

before(() => {
cy.completeSignInAndGoToApplication({}).then(({ referenceNumber: refNumber }) => {
referenceNumber = refNumber;

// TODO: EMS-3828 - renable
// go to the page we want to test.
// cy.completeAndSubmitExportContractForms({ formToStopAt: 'agentCharges', isUsingAgent: true, agentIsCharging: true, fixedSumMethod: true });
cy.completeAndSubmitExportContractForms({ formToStopAt: 'agentCharges', isUsingAgent: true, agentIsCharging: true, fixedSumMethod: true });

url = `${baseUrl}${ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`;

cy.navigateToUrl(url);
howMuchAgentIsChargingUrl = `${baseUrl}${ROOT}/${referenceNumber}${HOW_MUCH_IS_THE_AGENT_CHARGING}`;
});
});

Expand All @@ -57,8 +55,7 @@ context.skip(
cy.corePageChecks({
pageTitle: FIELDS.AGENT_CHARGES[CURRENCY_CODE].LEGEND,
currentHref: `${ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`,
backLink: `${url}#`,
submitButtonCopy: BUTTONS.CONTINUE,
backLink: `${ROOT}/${referenceNumber}${AGENT_CHARGES}`,
});
});

Expand Down Expand Up @@ -93,5 +90,13 @@ context.skip(
formSubmission().submitASupportedCurrency({ url: AGENT_CHARGES });
formSubmission().submitAlternativeCurrency({ url: AGENT_CHARGES });
});

describe('form submission', () => {
it(`should redirect to ${HOW_MUCH_IS_THE_AGENT_CHARGING}`, () => {
cy.completeAndSubmitAlternativeCurrencyForm({});

cy.assertUrl(howMuchAgentIsChargingUrl);
});
});
},
);
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ import { PAGES } from '../../../../../../content-strings';
import { EXPORT_CONTRACT_FIELDS as FIELD_STRINGS } from '../../../../../../content-strings/fields/insurance/export-contract';
import FIELD_IDS from '../../../../../../constants/field-ids/insurance/export-contract';
import { INSURANCE_ROUTES } from '../../../../../../constants/routes/insurance';
import { GBP, SYMBOLS } from '../../../../../../fixtures/currencies';

const CONTENT_STRINGS = PAGES.INSURANCE.EXPORT_CONTRACT.HOW_MUCH_IS_THE_AGENT_CHARGING;

const {
ROOT,
EXPORT_CONTRACT: { HOW_MUCH_IS_THE_AGENT_CHARGING, CHECK_YOUR_ANSWERS },
EXPORT_CONTRACT: { AGENT_CHARGES_CURRENCY, HOW_MUCH_IS_THE_AGENT_CHARGING, CHECK_YOUR_ANSWERS },
} = INSURANCE_ROUTES;

const {
Expand All @@ -25,13 +26,16 @@ context(
let checkYourAnswersUrl;

before(() => {
cy.completeSignInAndGoToApplication({ totalContractValueOverThreshold: true }).then(({ referenceNumber: refNumber }) => {
cy.completeSignInAndGoToApplication({}).then(({ referenceNumber: refNumber }) => {
referenceNumber = refNumber;

// go to the page we want to test.
// cy.completeAndSubmitExportContractForms({ formToStopAt: 'howMuchAgentIsCharging', isUsingAgent: true, agentIsCharging: true, fixedSumMethod: true });
// cy.completeAndSubmitExportContractForms({ formToStopAt: 'agentCharges', isUsingAgent: true, agentIsCharging: true, fixedSumMethod: true });
cy.completeAndSubmitExportContractForms({ formToStopAt: 'currencyOfAgentCharges', isUsingAgent: true, agentIsCharging: true, fixedSumMethod: true });

url = `${baseUrl}${ROOT}/${referenceNumber}${HOW_MUCH_IS_THE_AGENT_CHARGING}`;
checkYourAnswersUrl = `${baseUrl}${ROOT}/${referenceNumber}${CHECK_YOUR_ANSWERS}`;

cy.navigateToUrl();
});
});

Expand All @@ -45,9 +49,9 @@ context(

it('renders core page elements', () => {
cy.corePageChecks({
pageTitle: CONTENT_STRINGS.PAGE_TITLE,
pageTitle: `${CONTENT_STRINGS.PAGE_TITLE} ${GBP.name}?`,
currentHref: `${ROOT}/${referenceNumber}${HOW_MUCH_IS_THE_AGENT_CHARGING}`,
backLink: '#',
backLink: `${ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`,
});
});

Expand All @@ -60,10 +64,12 @@ context(
cy.checkText(headingCaption(), CONTENT_STRINGS.HEADING_CAPTION);
});

it(`renders ${FIELD_ID} hint and input`, () => {
it(`renders ${FIELD_ID} prefix and input`, () => {
const field = fieldSelector(FIELD_ID);

cy.checkText(field.hint(), FIELD_STRINGS.AGENT_CHARGES[FIELD_ID]);
cy.checkText(field.hint(), FIELD_STRINGS.AGENT_CHARGES[FIELD_ID].HINT);

cy.checkText(field.prefix(), SYMBOLS.GBP);

field.input().should('exist');
});
Expand Down
13 changes: 7 additions & 6 deletions src/ui/server/constants/routes/insurance/export-contract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const AGENT_ROOT = `${ROOT}/agent`;
const AGENT_DETAILS_ROOT = `${ROOT}/agent-details`;
const AGENT_SERVICE_ROOT = `${ROOT}/agent-service`;
const AGENT_CHARGES_ROOT = `${ROOT}/agent-charges`;
const AGENT_CHARGES_CURRENCY_ROOT = `${ROOT}/currency-of-agents-charge`;
const HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT = `${ROOT}/how-much-is-the-agent-charging`;

export const EXPORT_CONTRACT = {
Expand Down Expand Up @@ -49,12 +50,12 @@ export const EXPORT_CONTRACT = {
AGENT_CHARGES_CHANGE: `${AGENT_CHARGES_ROOT}/change`,
AGENT_CHARGES_CHECK_AND_CHANGE: `${AGENT_CHARGES_ROOT}/check-and-change`,
AGENT_CHARGES_CURRENCY_SAVE_AND_BACK: `${AGENT_CHARGES_ROOT}/save-and-go-back`,
AGENT_CHARGES_CURRENCY: `${AGENT_CHARGES_ROOT}/alternative-currency`,
AGENT_CHARGES_CURRENCY_CHANGE: `${AGENT_CHARGES_ROOT}/alternative-currency/change`,
AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE: `${AGENT_CHARGES_ROOT}/alternative-currency/check-and-change`,
AGENT_CHARGES_CURRENCY: AGENT_CHARGES_CURRENCY_ROOT,
AGENT_CHARGES_CURRENCY_CHANGE: `${AGENT_CHARGES_CURRENCY_ROOT}/change`,
AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE: `${AGENT_CHARGES_CURRENCY_ROOT}/check-and-change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_SAVE_AND_BACK: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/save-and-go-back`,
HOW_MUCH_IS_THE_AGENT_CHARGING: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency/change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHECK_AND_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/alternative-currency/check-and-change`,
HOW_MUCH_IS_THE_AGENT_CHARGING: HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/change`,
HOW_MUCH_IS_THE_AGENT_CHARGING_CHECK_AND_CHANGE: `${HOW_MUCH_IS_THE_AGENT_CHARGING_ROOT}/check-and-change`,
CHECK_YOUR_ANSWERS: `${ROOT}/check-your-answers`,
};
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,7 @@ const { supportedCurrencies } = mockCurrenciesResponse;
const {
INSURANCE_ROOT,
PROBLEM_WITH_SERVICE,
EXPORT_CONTRACT: {
AGENT_CHARGES_CHANGE,
AGENT_CHARGES_SAVE_AND_BACK,
AGENT_CHARGES_CURRENCY,
AGENT_CHARGES_CURRENCY_CHANGE,
AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE,
AGENT_CHARGES_CHECK_AND_CHANGE,
CHECK_YOUR_ANSWERS,
},
EXPORT_CONTRACT: { AGENT_CHARGES_CHECK_AND_CHANGE, AGENT_CHARGES_SAVE_AND_BACK, AGENT_CHARGES_CURRENCY },
CHECK_YOUR_ANSWERS: { EXPORT_CONTRACT: CHECK_AND_CHANGE_ROUTE },
} = INSURANCE_ROUTES;

Expand Down Expand Up @@ -135,37 +127,11 @@ describe('controllers/insurance/export-contract/agent-charges', () => {
},
},
CURRENCY_PREFIX_SYMBOL: currency.symbol,
PROVIDE_ALTERNATIVE_CURRENCY_URL: `${INSURANCE_ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`,
SAVE_AND_BACK_URL: `${INSURANCE_ROOT}/${referenceNumber}${AGENT_CHARGES_SAVE_AND_BACK}`,
};

expect(result).toEqual(expected);
});

describe('when isChange is provided as true', () => {
it(`should return "PROVIDE_ALTERNATIVE_CURRENCY_URL" as ${AGENT_CHARGES_CURRENCY_CHANGE}`, () => {
const isChange = true;

const result = pageVariables(referenceNumber, mockCurrencies, currencyCode, isChange);

const expected = `${INSURANCE_ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY_CHANGE}`;

expect(result.PROVIDE_ALTERNATIVE_CURRENCY_URL).toEqual(expected);
});
});

describe('when checkAndChangeRoute is provided as true', () => {
it(`should return "PROVIDE_ALTERNATIVE_CURRENCY_URL" as ${AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE}`, () => {
const isChange = false;
const isCheckAndChangeRoute = true;

const result = pageVariables(referenceNumber, mockCurrencies, currencyCode, isChange, isCheckAndChangeRoute);

const expected = `${INSURANCE_ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY_CHECK_AND_CHANGE}`;

expect(result.PROVIDE_ALTERNATIVE_CURRENCY_URL).toEqual(expected);
});
});
});

describe('get', () => {
Expand Down Expand Up @@ -199,30 +165,6 @@ describe('controllers/insurance/export-contract/agent-charges', () => {
expect(res.render).toHaveBeenCalledWith(TEMPLATE, expectedVariables);
});

describe("when the url's last substring is `change`", () => {
it('should render template with alternative pageVariables', async () => {
const isChangeRoute = true;

req.originalUrl = AGENT_CHARGES_CHANGE;

await get(req, res);

const expectedVariables = {
...insuranceCorePageVariables({
PAGE_CONTENT_STRINGS,
BACK_LINK: req.headers.referer,
}),
...pageVariables(referenceNumber, supportedCurrencies, currencyCode, isChangeRoute),
userName: getUserNameFromSession(req.session.user),
application: mapApplicationToFormFields(mockApplication),
countries: mapCountries(mockCountries, agent.service.charge[PAYABLE_COUNTRY_CODE]),
CONDITIONAL_PERCENTAGE_HTML,
};

expect(res.render).toHaveBeenCalledWith(TEMPLATE, expectedVariables);
});
});

describe('when there is no application', () => {
beforeEach(() => {
delete res.locals.application;
Expand Down Expand Up @@ -414,10 +356,10 @@ describe('controllers/insurance/export-contract/agent-charges', () => {
expect(mapAndSave.exportContractAgentServiceCharge).toHaveBeenCalledWith(payload, res.locals.application);
});

it(`should redirect to ${CHECK_YOUR_ANSWERS}`, async () => {
it(`should redirect to ${AGENT_CHARGES_CURRENCY}`, async () => {
await post(req, res);

const expected = `${INSURANCE_ROOT}/${referenceNumber}${CHECK_YOUR_ANSWERS}`;
const expected = `${INSURANCE_ROOT}/${referenceNumber}${AGENT_CHARGES_CURRENCY}`;

expect(res.redirect).toHaveBeenCalledWith(expected);
});
Expand Down
Loading

0 comments on commit 6ab9d9a

Please sign in to comment.