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

chore(EMS-3660): export contract - how was contract awarded - form fields #2859

Merged
merged 8 commits into from
Jul 31, 2024
6 changes: 2 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@

## [2.27.0](https://github.com/UK-Export-Finance/exip/compare/v2.26.0...v2.27.0) (2024-07-31)


### Features

* **EMS-3680-3682:** eligibility - Data saving ([#2853](https://github.com/UK-Export-Finance/exip/issues/2853)) ([8464b3f](https://github.com/UK-Export-Finance/exip/commit/8464b3fba3657788b3292d95d9bbd79ef452f2e9))
- **EMS-3680-3682:** eligibility - Data saving ([#2853](https://github.com/UK-Export-Finance/exip/issues/2853)) ([8464b3f](https://github.com/UK-Export-Finance/exip/commit/8464b3fba3657788b3292d95d9bbd79ef452f2e9))

## [2.26.0](https://github.com/UK-Export-Finance/exip/compare/v2.25.0...v2.26.0) (2024-07-31)


### Features

* **EMS-3665:** export contract - how was contract awarded - data model ([#2856](https://github.com/UK-Export-Finance/exip/issues/2856)) ([8295356](https://github.com/UK-Export-Finance/exip/commit/82953569ccb86c167805ec5adf45fb3fea214136))
- **EMS-3665:** export contract - how was contract awarded - data model ([#2856](https://github.com/UK-Export-Finance/exip/issues/2856)) ([8295356](https://github.com/UK-Export-Finance/exip/commit/82953569ccb86c167805ec5adf45fb3fea214136))

## [2.25.0](https://github.com/UK-Export-Finance/exip/compare/v2.24.0...v2.25.0) (2024-07-31)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import SHARED from '../../shared';

export const EXPORT_CONTRACT = {
...SHARED,
HOW_WAS_THE_CONTRACT_AWARDED: {
AWARD_METHOD: 'awardMethod',
OTHER_AWARD_METHOD: 'otherAwardMethod',
},
ABOUT_GOODS_OR_SERVICES: {
DESCRIPTION: 'goodsOrServicesDescription',
FINAL_DESTINATION_KNOWN: 'finalDestinationKnown',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { FIELD_VALUES, MAXIMUM_CHARACTERS } from '../../../../constants';
import { EXPORT_CONTRACT_AWARD_METHOD, FIELD_VALUES, MAXIMUM_CHARACTERS } from '../../../../constants';
import { INSURANCE_FIELD_IDS } from '../../../../constants/field-ids/insurance';
import { FORM_TITLES } from '../../../form-titles';

const { OPEN_TENDER, NEGOTIATED_CONTRACT, DIRECT_AWARD, COMPETITIVE_BIDDING, OTHER } = EXPORT_CONTRACT_AWARD_METHOD;

const {
CURRENCY: { CURRENCY_CODE },
EXPORT_CONTRACT: {
HOW_WAS_THE_CONTRACT_AWARDED: { AWARD_METHOD },
ABOUT_GOODS_OR_SERVICES: { DESCRIPTION, FINAL_DESTINATION_KNOWN, FINAL_DESTINATION },
HOW_WILL_YOU_GET_PAID: { PAYMENT_TERMS_DESCRIPTION },
PRIVATE_MARKET: { ATTEMPTED, DECLINED_DESCRIPTION },
Expand All @@ -18,6 +21,38 @@ const {
const { EXPORT_CONTRACT: EXPORT_CONTRACT_FORM_TITLES } = FORM_TITLES;

export const EXPORT_CONTRACT_FIELDS = {
HOW_WAS_THE_CONTRACT_AWARDED: {
[AWARD_METHOD]: {
LEGEND: 'How was the contract awarded?',
OPTIONS: {
OPEN_TENDER: {
ID: OPEN_TENDER.DB_ID,
VALUE: OPEN_TENDER.DB_ID,
TEXT: OPEN_TENDER.VALUE,
},
NEGOTIATED_CONTRACT: {
ID: NEGOTIATED_CONTRACT.DB_ID,
VALUE: NEGOTIATED_CONTRACT.DB_ID,
TEXT: NEGOTIATED_CONTRACT.VALUE,
},
DIRECT_AWARD: {
ID: DIRECT_AWARD.DB_ID,
VALUE: DIRECT_AWARD.DB_ID,
TEXT: DIRECT_AWARD.VALUE,
},
COMPETITIVE_BIDDING: {
ID: COMPETITIVE_BIDDING.DB_ID,
VALUE: COMPETITIVE_BIDDING.DB_ID,
TEXT: COMPETITIVE_BIDDING.VALUE,
},
OTHER: {
ID: OTHER.DB_ID,
VALUE: OTHER.DB_ID,
TEXT: OTHER.VALUE,
},
},
},
},
ABOUT_GOODS_OR_SERVICES: {
[DESCRIPTION]: {
LABEL: "Describe the goods or services you're exporting and explain how they'll be used by the buyer",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
import { headingCaption } from '../../../../../../pages/shared';
import { PAGES } from '../../../../../../content-strings';
import { field as fieldSelector, headingCaption, radios } from '../../../../../../pages/shared';
import { EXPORT_CONTRACT_AWARD_METHOD } from '../../../../../../constants';
import { INSURANCE_ROUTES } from '../../../../../../constants/routes/insurance';
import { PAGES } from '../../../../../../content-strings';
import { EXPORT_CONTRACT_FIELDS as FIELDS } from '../../../../../../content-strings/fields/insurance';
import { EXPORT_CONTRACT as EXPORT_CONTRACT_FIELD_IDS } from '../../../../../../constants/field-ids/insurance/export-contract';

const { OPEN_TENDER, NEGOTIATED_CONTRACT, DIRECT_AWARD, COMPETITIVE_BIDDING, OTHER } = EXPORT_CONTRACT_AWARD_METHOD;

const CONTENT_STRINGS = PAGES.INSURANCE.EXPORT_CONTRACT.HOW_WAS_THE_CONTRACT_AWARDED;

Expand All @@ -9,6 +14,12 @@ const {
EXPORT_CONTRACT: { ROOT: EXPORT_CONTRACT_ROOT, ABOUT_GOODS_OR_SERVICES, HOW_WAS_THE_CONTRACT_AWARDED },
} = INSURANCE_ROUTES;

const {
HOW_WAS_THE_CONTRACT_AWARDED: { AWARD_METHOD, OTHER_AWARD_METHOD },
} = EXPORT_CONTRACT_FIELD_IDS;

const AWARD_METHOD_OPTIONS = FIELDS.HOW_WAS_THE_CONTRACT_AWARDED[AWARD_METHOD].OPTIONS;

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

context(
Expand Down Expand Up @@ -57,6 +68,51 @@ context(
cy.checkText(headingCaption(), CONTENT_STRINGS.HEADING_CAPTION);
});

it(`renders an ${OPEN_TENDER.VALUE} radio`, () => {
const field = AWARD_METHOD_OPTIONS.OPEN_TENDER;

cy.checkText(radios(field.ID).option.label(), OPEN_TENDER.VALUE);
cy.checkValue(radios(field.ID).option, OPEN_TENDER.DB_ID);
});

it(`renders a ${NEGOTIATED_CONTRACT.VALUE} radio`, () => {
const field = AWARD_METHOD_OPTIONS.NEGOTIATED_CONTRACT;

cy.checkText(radios(field.ID).option.label(), NEGOTIATED_CONTRACT.VALUE);
cy.checkValue(radios(field.ID).option, NEGOTIATED_CONTRACT.DB_ID);
});

it(`renders a ${DIRECT_AWARD.VALUE} radio`, () => {
const field = AWARD_METHOD_OPTIONS.DIRECT_AWARD;

cy.checkText(radios(field.ID).option.label(), DIRECT_AWARD.VALUE);
cy.checkValue(radios(field.ID).option, DIRECT_AWARD.DB_ID);
});

it(`renders a ${COMPETITIVE_BIDDING.VALUE} radio`, () => {
const field = AWARD_METHOD_OPTIONS.COMPETITIVE_BIDDING;

cy.checkText(radios(field.ID).option.label(), COMPETITIVE_BIDDING.VALUE);
cy.checkValue(radios(field.ID).option, COMPETITIVE_BIDDING.DB_ID);
});

it(`renders an ${OTHER.VALUE} radio`, () => {
const field = AWARD_METHOD_OPTIONS.OTHER;

cy.checkText(radios(field.ID).option.label(), OTHER.VALUE);
cy.checkValue(radios(field.ID).option, OTHER.DB_ID);
});

it(`should NOT display conditional "${OTHER_AWARD_METHOD}" section without selecting the "${OTHER.VALUE}" radio`, () => {
fieldSelector(OTHER_AWARD_METHOD).input().should('not.be.visible');
});

it(`should display conditional "${OTHER_AWARD_METHOD}" section when selecting the "${OTHER.VALUE}" radio`, () => {
radios(AWARD_METHOD_OPTIONS.OTHER.ID).option.label().click();

fieldSelector(OTHER_AWARD_METHOD).input().should('be.visible');
});

it('renders a `save and back` button', () => {
cy.assertSaveAndBackButton();
});
Expand Down
68 changes: 68 additions & 0 deletions src/api/.keystone/config.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import SHARED from '../../shared';

export const EXPORT_CONTRACT = {
...SHARED,
HOW_WAS_THE_CONTRACT_AWARDED: {
AWARD_METHOD: 'awardMethod',
OTHER_AWARD_METHOD: 'otherAwardMethod',
},
ABOUT_GOODS_OR_SERVICES: {
DESCRIPTION: 'goodsOrServicesDescription',
FINAL_DESTINATION_KNOWN: 'finalDestinationKnown',
Expand Down
36 changes: 36 additions & 0 deletions src/api/content-strings/fields/insurance/export-contract/index.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,48 @@
import { EXPORT_CONTRACT_AWARD_METHOD } from '../../../../constants';
import FIELD_IDS from '../../../../constants/field-ids/insurance/export-contract';

const { OPEN_TENDER, NEGOTIATED_CONTRACT, DIRECT_AWARD, COMPETITIVE_BIDDING, OTHER } = EXPORT_CONTRACT_AWARD_METHOD;

const {
HOW_WAS_THE_CONTRACT_AWARDED: { AWARD_METHOD },
ABOUT_GOODS_OR_SERVICES: { DESCRIPTION, FINAL_DESTINATION_KNOWN, FINAL_DESTINATION },
HOW_WILL_YOU_GET_PAID: { PAYMENT_TERMS_DESCRIPTION },
PRIVATE_MARKET: { DECLINED_DESCRIPTION },
} = FIELD_IDS;

export const EXPORT_CONTRACT_FIELDS = {
HOW_WAS_THE_CONTRACT_AWARDED: {
[AWARD_METHOD]: {
LEGEND: 'How was the contract awarded?',
OPTIONS: {
OPEN_TENDER: {
ID: OPEN_TENDER.DB_ID,
VALUE: OPEN_TENDER.DB_ID,
TEXT: OPEN_TENDER.VALUE,
},
NEGOTIATED_CONTRACT: {
ID: NEGOTIATED_CONTRACT.DB_ID,
VALUE: NEGOTIATED_CONTRACT.DB_ID,
TEXT: NEGOTIATED_CONTRACT.VALUE,
},
DIRECT_AWARD: {
ID: DIRECT_AWARD.DB_ID,
VALUE: DIRECT_AWARD.DB_ID,
TEXT: DIRECT_AWARD.VALUE,
},
COMPETITIVE_BIDDING: {
ID: COMPETITIVE_BIDDING.DB_ID,
VALUE: COMPETITIVE_BIDDING.DB_ID,
TEXT: COMPETITIVE_BIDDING.VALUE,
},
OTHER: {
ID: OTHER.DB_ID,
VALUE: OTHER.DB_ID,
TEXT: OTHER.VALUE,
},
},
},
},
ABOUT_GOODS_OR_SERVICES: {
[DESCRIPTION]: {
LABEL: "Describe the goods or services you're exporting and explain how they'll be used by the buyer",
Expand Down
2 changes: 1 addition & 1 deletion src/ui/server/constants/export-contract-award-method.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ export const EXPORT_CONTRACT_AWARD_METHOD = {
OTHER: {
DB_ID: 'tn8k8lot1bvirmztmmgq2u8hn',
VALUE: 'Other',
},
},
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ import SHARED from '../../shared';

export const EXPORT_CONTRACT = {
...SHARED,
HOW_WAS_THE_CONTRACT_AWARDED: {
AWARD_METHOD: 'awardMethod',
OTHER_AWARD_METHOD: 'otherAwardMethod',
},
ABOUT_GOODS_OR_SERVICES: {
DESCRIPTION: 'goodsOrServicesDescription',
FINAL_DESTINATION_KNOWN: 'finalDestinationKnown',
Expand Down
3 changes: 3 additions & 0 deletions src/ui/server/constants/templates/partials/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ export const PARTIALS = {
},
},
EXPORT_CONTRACT: {
HOW_WAS_THE_CONTRACT_AWARDED: {
CONDITIONAL_OTHER_METHOD_HTML: 'partials/insurance/how-was-the-contract-awarded-other-html.njk',
},
ABOUT_GOODS_OR_SERVICES: {
CONDITIONAL_YES_HTML: 'partials/insurance/about-goods-or-services-conditional-yes-html.njk',
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { FIELD_VALUES, MAXIMUM_CHARACTERS } from '../../../../constants';
import { EXPORT_CONTRACT_AWARD_METHOD, FIELD_VALUES, MAXIMUM_CHARACTERS } from '../../../../constants';
import INSURANCE_FIELD_IDS from '../../../../constants/field-ids/insurance';
import { FORM_TITLES } from '../../../form-titles';

const { OPEN_TENDER, NEGOTIATED_CONTRACT, DIRECT_AWARD, COMPETITIVE_BIDDING, OTHER } = EXPORT_CONTRACT_AWARD_METHOD;

const {
CURRENCY: { CURRENCY_CODE },
EXPORT_CONTRACT: {
HOW_WAS_THE_CONTRACT_AWARDED: { AWARD_METHOD },
ABOUT_GOODS_OR_SERVICES: { DESCRIPTION, FINAL_DESTINATION_KNOWN, FINAL_DESTINATION },
HOW_WILL_YOU_GET_PAID: { PAYMENT_TERMS_DESCRIPTION },
PRIVATE_MARKET: { ATTEMPTED, DECLINED_DESCRIPTION },
Expand All @@ -18,6 +21,38 @@ const {
const { EXPORT_CONTRACT: EXPORT_CONTRACT_FORM_TITLES } = FORM_TITLES;

export const EXPORT_CONTRACT_FIELDS = {
HOW_WAS_THE_CONTRACT_AWARDED: {
[AWARD_METHOD]: {
LEGEND: 'How was the contract awarded?',
OPTIONS: {
OPEN_TENDER: {
ID: OPEN_TENDER.DB_ID,
VALUE: OPEN_TENDER.DB_ID,
TEXT: OPEN_TENDER.VALUE,
},
NEGOTIATED_CONTRACT: {
ID: NEGOTIATED_CONTRACT.DB_ID,
VALUE: NEGOTIATED_CONTRACT.DB_ID,
TEXT: NEGOTIATED_CONTRACT.VALUE,
},
DIRECT_AWARD: {
ID: DIRECT_AWARD.DB_ID,
VALUE: DIRECT_AWARD.DB_ID,
TEXT: DIRECT_AWARD.VALUE,
},
COMPETITIVE_BIDDING: {
ID: COMPETITIVE_BIDDING.DB_ID,
VALUE: COMPETITIVE_BIDDING.DB_ID,
TEXT: COMPETITIVE_BIDDING.VALUE,
},
OTHER: {
ID: OTHER.DB_ID,
VALUE: OTHER.DB_ID,
TEXT: OTHER.VALUE,
},
},
},
},
ABOUT_GOODS_OR_SERVICES: {
[DESCRIPTION]: {
LABEL: "Describe the goods or services you're exporting and explain how they'll be used by the buyer",
Expand Down
Loading
Loading