Skip to content

Commit 6e55387

Browse files
committed
CCM-11457: make NOT_YET_SUBMITTED letter tag stay as blue. PR reviews
1 parent 6813eb3 commit 6e55387

File tree

6 files changed

+124
-67
lines changed

6 files changed

+124
-67
lines changed

frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ exports[`MessageTemplates component matches snapshot with not submitted status 1
372372
Status
373373
</span>
374374
<strong
375-
class="nhsuk-tag nhsuk-tag--green"
375+
class="nhsuk-tag"
376376
>
377377
Not yet submitted
378378
</strong>
@@ -797,7 +797,7 @@ exports[`MessageTemplates component matches snapshot with pending proof request
797797
Status
798798
</span>
799799
<strong
800-
class="nhsuk-tag nhsuk-tag--green"
800+
class="nhsuk-tag"
801801
>
802802
Not yet submitted
803803
</strong>
@@ -1211,7 +1211,7 @@ exports[`MessageTemplates component matches snapshot with submitted status 1`] =
12111211
Status
12121212
</span>
12131213
<strong
1214-
class="nhsuk-tag nhsuk-tag--green"
1214+
class="nhsuk-tag"
12151215
>
12161216
Not yet submitted
12171217
</strong>
@@ -1612,7 +1612,7 @@ exports[`MessageTemplates component matches snapshot with waiting for proof stat
16121612
Status
16131613
</span>
16141614
<strong
1615-
class="nhsuk-tag nhsuk-tag--green"
1615+
class="nhsuk-tag"
16161616
>
16171617
Not yet submitted
16181618
</strong>

frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ exports[`PreviewTemplateDetailsLetter if status is NOT_YET_SUBMITTED, then Not y
174174
class="nhsuk-summary-list__value"
175175
>
176176
<strong
177-
class="nhsuk-tag nhsuk-tag--green"
177+
class="nhsuk-tag"
178178
data-test-id="status-tag-not-yet-submitted"
179179
>
180180
Not yet submitted

frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@ import Link from 'next/link';
99
import {
1010
letterTypeDisplayMappings,
1111
previewTemplatePages,
12-
templateStatusToColourMappings,
13-
templateStatusToDisplayMappings,
1412
templateTypeDisplayMappings,
1513
previewSubmittedTemplatePages,
1614
templateDisplayCopyAction,
1715
templateDisplayDeleteAction,
18-
templateStatusToDisplayMappingsDigital,
16+
statusToDisplayMapping,
17+
statusToColourMapping,
1918
} from 'nhs-notify-web-template-management-utils';
2019
import { TemplateDto } from 'nhs-notify-backend-client';
2120
import style from './MessageTemplates.module.scss';
@@ -39,11 +38,6 @@ const typeDisplayMappings = (template: TemplateDto): string =>
3938
? letterTypeDisplayMappings(template.letterType, template.language)
4039
: templateTypeDisplayMappings(template.templateType);
4140

42-
const statusToDisplayMapping = (template: TemplateDto): string =>
43-
template.templateType === 'LETTER'
44-
? templateStatusToDisplayMappings(template.templateStatus)
45-
: templateStatusToDisplayMappingsDigital(template.templateStatus);
46-
4741
export function MessageTemplates({
4842
templateList,
4943
}: {
@@ -87,11 +81,7 @@ export function MessageTemplates({
8781
</Table.Cell>
8882
<Table.Cell>{typeDisplayMappings(template)}</Table.Cell>
8983
<Table.Cell>
90-
<Tag
91-
color={templateStatusToColourMappings(
92-
template.templateStatus
93-
)}
94-
>
84+
<Tag color={statusToColourMapping(template)}>
9585
{statusToDisplayMapping(template)}
9686
</Tag>
9787
</Table.Cell>

frontend/src/components/molecules/PreviewTemplateDetails/common.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { Tag, SummaryList } from 'nhsuk-react-components';
22
import concatClassNames from '@utils/concat-class-names';
33
import {
4-
templateStatusToDisplayMappings,
5-
templateStatusToColourMappings,
6-
templateStatusToDisplayMappingsDigital,
4+
statusToColourMapping,
5+
statusToDisplayMapping,
76
} from 'nhs-notify-web-template-management-utils';
87
import styles from './PreviewTemplateDetails.module.scss';
98
import { JSX } from 'react';
@@ -21,11 +20,6 @@ type ContentPreviewField = {
2120
const { rowHeadings, previewTemplateStatusFootnote } =
2221
content.components.previewTemplateDetails;
2322

24-
const statusToDisplayMapping = (template: TemplateDto): string =>
25-
template.templateType === 'LETTER'
26-
? templateStatusToDisplayMappings(template.templateStatus)
27-
: templateStatusToDisplayMappingsDigital(template.templateStatus);
28-
2923
export function DetailSection({ children }: { children: React.ReactNode }) {
3024
return (
3125
<SummaryList
@@ -84,7 +78,7 @@ export function StandardDetailRows({
8478
<SummaryList.Value>
8579
<Tag
8680
data-test-id={`status-tag-${toKebabCase(template.templateStatus)}`}
87-
color={templateStatusToColourMappings(template.templateStatus)}
81+
color={statusToColourMapping(template)}
8882
>
8983
{statusToDisplayMapping(template)}
9084
</Tag>

utils/utils/src/__tests__/enum.test.ts

Lines changed: 61 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import {
1010
alphabeticalLetterTypeList,
1111
letterTypeDisplayMappings,
1212
previewTemplatePages,
13-
templateStatusToColourMappings,
14-
templateStatusToDisplayMappings,
1513
templateTypeDisplayMappings,
1614
templateTypeToUrlTextMappings,
1715
previewSubmittedTemplatePages,
@@ -20,7 +18,8 @@ import {
2018
isRightToLeft,
2119
languageMapping,
2220
templateCreationPages,
23-
templateStatusToDisplayMappingsDigital,
21+
statusToDisplayMapping,
22+
statusToColourMapping,
2423
} from '../enum';
2524
import { TEMPLATE_STATUS_LIST } from 'nhs-notify-backend-client';
2625

@@ -107,33 +106,46 @@ describe('alphabeticalLanguageList', () => {
107106
});
108107
});
109108

110-
describe('templateStatusToDisplayMappings', () => {
111-
test('NOT_YET_SUBMITTED', () => {
112-
expect(templateStatusToDisplayMappings('NOT_YET_SUBMITTED')).toEqual(
113-
'Not yet submitted'
114-
);
115-
});
109+
describe('statusToDisplayMapping', () => {
110+
test.each([
111+
{ type: 'LETTER' as TemplateType, expected: 'Not yet submitted' },
112+
{ type: 'NHS_APP' as TemplateType, expected: 'Draft' },
113+
{ type: 'SMS' as TemplateType, expected: 'Draft' },
114+
{ type: 'EMAIl' as TemplateType, expected: 'Draft' },
115+
])(
116+
'When templateType is %type NOT_YET_SUBMITTED should be %expected',
117+
({ type, expected }) => {
118+
expect(
119+
statusToDisplayMapping({
120+
templateType: type,
121+
templateStatus: 'NOT_YET_SUBMITTED',
122+
})
123+
).toEqual(expected);
124+
}
125+
);
116126

117127
test('SUBMITTED', () => {
118-
expect(templateStatusToDisplayMappings('SUBMITTED')).toEqual('Submitted');
128+
expect(
129+
statusToDisplayMapping({
130+
templateType: 'SMS',
131+
templateStatus: 'SUBMITTED',
132+
})
133+
).toEqual('Submitted');
119134
});
120135

121136
test('DELETED', () => {
122-
expect(templateStatusToDisplayMappings('DELETED')).toEqual('');
137+
expect(
138+
statusToDisplayMapping({
139+
templateType: 'SMS',
140+
templateStatus: 'DELETED',
141+
})
142+
).toEqual('');
123143
});
124144
});
125145

126-
describe('templateStatusToDisplayMappingsDigital', () => {
127-
test('NOT_YET_SUBMITTED', () => {
128-
expect(templateStatusToDisplayMappingsDigital('NOT_YET_SUBMITTED')).toEqual(
129-
'Draft'
130-
);
131-
});
132-
});
133-
134-
describe('templateStatusToColourMappings', () => {
146+
describe('statusToColourMapping', () => {
135147
it.each(TEMPLATE_STATUS_LIST)(
136-
'should give the expected colour when templateStatus is %s',
148+
'should give the expected colour when templateStatus is %s for LETTERS',
137149
(templateStatus) => {
138150
const expectedColours: { [key in TemplateStatus]?: string } = {
139151
SUBMITTED: 'grey',
@@ -144,11 +156,36 @@ describe('templateStatusToColourMappings', () => {
144156
VIRUS_SCAN_FAILED: 'red',
145157
VALIDATION_FAILED: 'red',
146158
PROOF_AVAILABLE: 'orange',
147-
NOT_YET_SUBMITTED: 'green',
148159
};
149160

150-
expect(templateStatusToColourMappings(templateStatus)).toEqual(
151-
expectedColours[templateStatus]
161+
expect(
162+
statusToColourMapping({ templateStatus, templateType: 'LETTER' })
163+
).toEqual(expectedColours[templateStatus]);
164+
}
165+
);
166+
167+
describe.each(['NHS_APP', 'SMS', 'EMAIL'] as TemplateType[])(
168+
'template type: %p',
169+
(templateType) => {
170+
it.each(TEMPLATE_STATUS_LIST)(
171+
'should give the expected colour when templateStatus is %p',
172+
(templateStatus) => {
173+
const expectedColours: { [key in TemplateStatus]?: string } = {
174+
SUBMITTED: 'grey',
175+
WAITING_FOR_PROOF: 'yellow',
176+
PENDING_PROOF_REQUEST: 'blue',
177+
PENDING_UPLOAD: 'blue',
178+
PENDING_VALIDATION: 'blue',
179+
VIRUS_SCAN_FAILED: 'red',
180+
VALIDATION_FAILED: 'red',
181+
PROOF_AVAILABLE: 'orange',
182+
NOT_YET_SUBMITTED: 'green',
183+
};
184+
185+
expect(
186+
statusToColourMapping({ templateStatus, templateType })
187+
).toEqual(expectedColours[templateStatus]);
188+
}
152189
);
153190
}
154191
);

utils/utils/src/enum.ts

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,35 +101,71 @@ const statusToDisplayMappings: Record<TemplateStatus, string> = {
101101
VIRUS_SCAN_FAILED: 'Checks failed',
102102
WAITING_FOR_PROOF: 'Waiting for proof',
103103
PROOF_AVAILABLE: 'Proof available',
104-
};
104+
} as const;
105105

106-
export const templateStatusToDisplayMappings = (status: TemplateStatus) =>
106+
const templateStatusToDisplayMappingsLetter = (status: TemplateStatus) =>
107107
statusToDisplayMappings[status];
108108

109-
export const templateStatusToDisplayMappingsDigital = (
110-
status: TemplateStatus
111-
) =>
109+
const templateStatusToDisplayMappingsDigital = (status: TemplateStatus) =>
112110
({
113111
...statusToDisplayMappings,
114112
NOT_YET_SUBMITTED: 'Draft',
115113
})[status];
116114

117-
export const templateStatusToColourMappings = (status: TemplateStatus) =>
115+
export const statusToDisplayMapping = (
116+
template: Pick<TemplateDto, 'templateType' | 'templateStatus'>
117+
): string =>
118+
template.templateType === 'LETTER'
119+
? templateStatusToDisplayMappingsLetter(template.templateStatus)
120+
: templateStatusToDisplayMappingsDigital(template.templateStatus);
121+
122+
type Colour =
123+
| 'white'
124+
| 'grey'
125+
| 'green'
126+
| 'aqua-green'
127+
| 'blue'
128+
| 'purple'
129+
| 'pink'
130+
| 'red'
131+
| 'orange'
132+
| 'yellow'
133+
| undefined;
134+
135+
const colourMappings: Record<TemplateStatus, Colour> = {
136+
NOT_YET_SUBMITTED: undefined,
137+
SUBMITTED: 'grey',
138+
DELETED: undefined,
139+
PENDING_PROOF_REQUEST: 'blue',
140+
PENDING_UPLOAD: 'blue',
141+
PENDING_VALIDATION: 'blue',
142+
VIRUS_SCAN_FAILED: 'red',
143+
VALIDATION_FAILED: 'red',
144+
WAITING_FOR_PROOF: 'yellow',
145+
PROOF_AVAILABLE: 'orange',
146+
} as const;
147+
148+
const templateStatusToColourMappingsLetter = (
149+
status: TemplateStatus
150+
): Colour | undefined => colourMappings[status];
151+
152+
const templateStatusToColourMappingsDigital = (
153+
status: TemplateStatus
154+
): Colour | undefined =>
118155
(
119156
({
157+
...colourMappings,
120158
NOT_YET_SUBMITTED: 'green',
121-
SUBMITTED: 'grey',
122-
DELETED: undefined,
123-
PENDING_PROOF_REQUEST: 'blue',
124-
PENDING_UPLOAD: 'blue',
125-
PENDING_VALIDATION: 'blue',
126-
VIRUS_SCAN_FAILED: 'red',
127-
VALIDATION_FAILED: 'red',
128-
WAITING_FOR_PROOF: 'yellow',
129-
PROOF_AVAILABLE: 'orange',
130-
}) as const
159+
}) satisfies typeof colourMappings
131160
)[status];
132161

162+
export const statusToColourMapping = (
163+
template: Pick<TemplateDto, 'templateType' | 'templateStatus'>
164+
) =>
165+
template.templateType === 'LETTER'
166+
? templateStatusToColourMappingsLetter(template.templateStatus)
167+
: templateStatusToColourMappingsDigital(template.templateStatus);
168+
133169
export const templateTypeToUrlTextMappings = (type: TemplateType) =>
134170
({
135171
NHS_APP: 'nhs-app',

0 commit comments

Comments
 (0)