Skip to content

Commit 88fde8b

Browse files
committed
CCM-12869: Rename Specification to Pack and SpecificationGroup to Specification
1 parent e6f27c5 commit 88fde8b

File tree

5 files changed

+60
-60
lines changed

5 files changed

+60
-60
lines changed
Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,136 @@
11
import {
22
EnvelopeId,
3-
SpecificaitonGroupId,
3+
Pack,
4+
PackId,
5+
SpecificaitonId,
46
Specification,
5-
SpecificationGroup,
6-
SpecificationId,
77
} from "@nhsdigital/nhs-notify-schemas-supplier-config/src/domain/specification";
88
import { Version } from "@nhsdigital/nhs-notify-schemas-supplier-config/src/domain/common";
99

10-
const bauStandardC5: Specification = {
11-
id: SpecificationId("bau-standard-c5"),
10+
const bauStandardC5: Pack = {
11+
id: PackId("bau-standard-c5"),
1212
name: "BAU Standard Letter C5",
1313
status: "PUBLISHED",
1414
version: Version("1.0.0"),
1515
createdAt: new Date("2023-01-01T00:00:00Z"),
1616
updatedAt: new Date("2023-01-01T00:00:00Z"),
17-
specificationType: "LETTER_STANDARD",
18-
pack: {
17+
assembly: {
1918
envelopeId: EnvelopeId("envelope-nhs-c5-economy"),
2019
},
2120
};
2221

23-
const bauStandardC4: Specification = {
24-
id: SpecificationId("bau-standard-c4"),
22+
const bauStandardC4: Pack = {
23+
id: PackId("bau-standard-c4"),
2524
name: "BAU Standard Letter C4",
2625
status: "PUBLISHED",
2726
version: Version("1.0.0"),
2827
createdAt: new Date("2023-01-01T00:00:00Z"),
2928
updatedAt: new Date("2023-01-01T00:00:00Z"),
30-
specificationType: "LETTER_STANDARD",
31-
pack: {
29+
assembly: {
3230
envelopeId: EnvelopeId("envelope-nhs-c4-economy"),
3331
},
3432
};
3533

36-
const braille: Specification = {
37-
id: SpecificationId("braille"),
34+
const braille: Pack = {
35+
id: PackId("braille"),
3836
name: "Braille Letter",
3937
status: "PUBLISHED",
4038
version: Version("1.0.0"),
4139
createdAt: new Date("2023-01-01T00:00:00Z"),
4240
updatedAt: new Date("2023-01-01T00:00:00Z"),
43-
specificationType: "LETTER_BRAILLE",
41+
assembly: {
42+
features: ["BRAILLE"],
43+
},
4444
};
4545

46-
const audio: Specification = {
47-
id: SpecificationId("audio"),
46+
const audio: Pack = {
47+
id: PackId("audio"),
4848
name: "Audio Letter",
4949
status: "PUBLISHED",
5050
version: Version("1.0.0"),
5151
createdAt: new Date("2023-01-01T00:00:00Z"),
5252
updatedAt: new Date("2023-01-01T00:00:00Z"),
53-
specificationType: "LETTER_AUDIO",
53+
assembly: {
54+
features: ["AUDIO"],
55+
},
5456
};
5557

56-
const sameDay: Specification = {
57-
id: SpecificationId("same-day"),
58+
const sameDay: Pack = {
59+
id: PackId("same-day"),
5860
name: "Same Day Letter",
5961
status: "PUBLISHED",
6062
version: Version("1.0.0"),
6163
createdAt: new Date("2023-01-01T00:00:00Z"),
6264
updatedAt: new Date("2023-01-01T00:00:00Z"),
63-
specificationType: "LETTER_SAME_DAY",
64-
pack: {
65+
assembly: {
6566
envelopeId: EnvelopeId("envelope-nhs-c4-same-day"),
6667
},
6768
};
6869

69-
const digitrials1: Specification = {
70-
id: SpecificationId("digitrials1"),
70+
const digitrials1: Pack = {
71+
id: PackId("digitrials1"),
7172
name: "Digitrials Letter Pack 1",
7273
status: "PUBLISHED",
7374
version: Version("1.0.0"),
7475
createdAt: new Date("2023-01-01T00:00:00Z"),
7576
updatedAt: new Date("2023-01-01T00:00:00Z"),
76-
specificationType: "LETTER_STANDARD",
77-
pack: {
77+
assembly: {
7878
envelopeId: EnvelopeId("digitrials-envelope1-c5"),
79+
features: ["ADMAIL"],
7980
},
8081
};
8182

82-
const specifications = {
83+
const packs = {
8384
bauStandardC5,
8485
bauStandardC4,
8586
braille,
8687
audio,
8788
sameDay,
8889
};
8990

90-
const specificationGroups: Record<string, SpecificationGroup> = {
91+
const specifications: Record<string, Specification> = {
9192
bauStandard: {
92-
id: SpecificaitonGroupId("bau-standard"),
93+
id: SpecificaitonId("bau-standard"),
9394
name: "BAU Standard Letter",
9495
description: "BAU Standard Letter",
95-
specificationIds: [bauStandardC5.id, bauStandardC4.id],
96+
packIds: [bauStandardC5.id, bauStandardC4.id],
9697
specificationType: "LETTER_STANDARD",
9798
status: "PUBLISHED",
9899
},
99100
braille: {
100-
id: SpecificaitonGroupId("braille"),
101+
id: SpecificaitonId("braille"),
101102
name: "Braille Letter",
102103
description: "Braille Letter",
103-
specificationIds: [braille.id],
104+
packIds: [braille.id],
104105
specificationType: "LETTER_BRAILLE",
105106
status: "PUBLISHED",
106107
},
107108
audio: {
108-
id: SpecificaitonGroupId("audio"),
109+
id: SpecificaitonId("audio"),
109110
name: "Audio Letter",
110111
description: "Audio Letter",
111-
specificationIds: [audio.id],
112+
packIds: [audio.id],
112113
specificationType: "LETTER_AUDIO",
113114
status: "PUBLISHED",
114115
},
115116
sameDay: {
116-
id: SpecificaitonGroupId("same-day"),
117+
id: SpecificaitonId("same-day"),
117118
name: "Same Day Letter",
118119
description: "Same Day Letter",
119-
specificationIds: [sameDay.id],
120+
packIds: [sameDay.id],
120121
specificationType: "LETTER_SAME_DAY",
121122
status: "PUBLISHED",
122123
},
123124
digitrials1: {
124-
id: SpecificaitonGroupId("digitrials1"),
125-
name: "Digitrials Letter Pack 1",
125+
id: SpecificaitonId("digitrials1"),
126+
name: "Digitrials Letter Specification 1",
126127
description: "Digitrials Letter Pack 1",
127-
specificationIds: [digitrials1.id],
128+
packIds: [digitrials1.id],
128129
specificationType: "LETTER_STANDARD",
129130
status: "PUBLISHED",
130131
clientId: "digitrials",
131132
campaignIds: ["digitrials-campaign-1"],
132133
},
133134
};
134135

135-
console.log(JSON.stringify({ specifications, specificationGroups }, null, 2));
136+
console.log(JSON.stringify(specifications, null, 2));

packages/events/src/domain/__tests__/specification-supplier.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { $Version } from '../common';
22
import { $SpecificationSupplier, SpecificationSupplier } from '../specification-supplier';
3-
import { EnvelopeId, Specification } from '../specification';
3+
import { EnvelopeId, Pack } from '../pack';
44
import { LayoutId } from '../layout';
55

66
describe('SpecificationSupplier schema validation', () => {
77

8-
const standardLetterSpecification: Specification = {
8+
const standardLetterSpecification: Pack = {
99
id: 'standard-letter' as any,
1010
name: 'Standard Economy-class Letter',
1111
status: 'PUBLISHED',

packages/events/src/domain/__tests__/specification.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { $Specification, EnvelopeId, Specification, SpecificationId } from '../specification';
1+
import { $Pack, EnvelopeId, Pack, PackId } from '../pack';
22
import { $Version } from '../common';
33
import { LayoutId } from '../layout';
44

55
describe('Specification schema validation', () => {
66

7-
const standardLetterSpecification: Specification = {
8-
id: 'standard-letter' as SpecificationId,
7+
const standardLetterSpecification: Pack = {
8+
id: 'standard-letter' as PackId,
99
name: 'Standard Economy-class Letter',
1010
status: 'PUBLISHED',
1111
createdAt: new Date(),
@@ -26,11 +26,11 @@ describe('Specification schema validation', () => {
2626
};
2727

2828
it('should validate a standard letter specification', () => {
29-
expect(() => $Specification.strict().parse(standardLetterSpecification)).not.toThrow();
29+
expect(() => $Pack.strict().parse(standardLetterSpecification)).not.toThrow();
3030
});
3131

3232
it('should accept a letter specification with unrecognised fields', () => {
33-
expect(() => $Specification.parse({
33+
expect(() => $Pack.parse({
3434
...standardLetterSpecification,
3535
additionalField: { some: 'data' }
3636
})).not.toThrow();

packages/events/src/domain/specification-supplier.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { z } from "zod";
22
import idRef from "@nhsdigital/nhs-notify-schemas-supplier-config/src/helpers/id-ref";
33
import { $ChannelSupplier } from "@nhsdigital/nhs-notify-schemas-supplier-config/src/domain/channel-supplier";
4-
import { $Specification } from "@nhsdigital/nhs-notify-schemas-supplier-config/src/domain/specification";
4+
import { $PackSpecification } from "src/domain/packSpecification";
55
import { ConfigBase } from "@nhsdigital/nhs-notify-schemas-supplier-config/src/domain/common";
66

77
export const $SpecificationSupplier = ConfigBase("SpecificationSupplier")
88
.extend({
9-
specificationId: idRef($Specification),
9+
specificationId: idRef($PackSpecification),
1010
supplierId: idRef($ChannelSupplier),
1111
})
1212
.describe("SpecificationSupplier");

packages/events/src/domain/specification.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export const $SpecificationType = z.enum([
1111
"LETTER_AUDIO",
1212
"LETTER_SAME_DAY",
1313
]);
14-
export const $SpecificationFeature = z.enum(["MAILMARK"]);
14+
export const $PackFeature = z.enum(["MAILMARK", "BRAILLE", "AUDIO", "ADMAIL"]);
1515
export const $EnvelopeFeature = z.enum([
1616
"WHITEMAIL",
1717
"NHS_BRANDING",
@@ -40,11 +40,10 @@ export const $Insert = ConfigBase("Insert")
4040
export type Insert = z.infer<typeof $Insert>;
4141
export type InsertId = Insert["id"];
4242

43-
export const $Specification = ConfigBase("Specification")
43+
export const $Pack = ConfigBase("Specification")
4444
.extend({
4545
name: z.string(),
4646
status: $SpecificationStatus,
47-
specificationType: $SpecificationType,
4847
createdAt: z.date(),
4948
updatedAt: z.date(),
5049
version: $Version,
@@ -66,32 +65,32 @@ export const $Specification = ConfigBase("Specification")
6665
})
6766
.partial()
6867
.optional(),
69-
pack: z
68+
assembly: z
7069
.object({
7170
envelopeId: idRef($Envelope),
7271
printColour: z.enum(["BLACK", "COLOUR"]),
7372
paperColour: z.string().optional(),
7473
insert: idRef($Insert).optional(),
75-
features: z.array($SpecificationFeature).optional(),
74+
features: z.array($PackFeature).optional(),
7675
additional: z.record(z.string(), z.string()).optional(),
7776
})
7877
.partial()
7978
.optional(),
8079
})
8180
.describe("Specification");
82-
export type Specification = z.infer<typeof $Specification>;
83-
export const SpecificationId = $Specification.shape.id.parse;
81+
export type Pack = z.infer<typeof $Pack>;
82+
export const PackId = $Pack.shape.id.parse;
8483

85-
export const $SpecificationGroup = ConfigBase("SpecificationGroup")
84+
export const $Specification = ConfigBase("Specification")
8685
.extend({
8786
name: z.string(),
8887
description: z.string().optional(),
8988
specificationType: $SpecificationType,
9089
status: $SpecificationStatus,
9190
clientId: z.string().optional(),
9291
campaignIds: z.array(z.string()).optional(),
93-
specificationIds: z.array(idRef($Specification)).nonempty(),
92+
packIds: z.array(idRef($Pack)).nonempty(),
9493
})
95-
.describe("SpecificationGroup");
96-
export type SpecificationGroup = z.infer<typeof $SpecificationGroup>;
97-
export const SpecificaitonGroupId = $SpecificationGroup.shape.id.parse;
94+
.describe("Specification");
95+
export type Specification = z.infer<typeof $Specification>;
96+
export const SpecificaitonId = $Specification.shape.id.parse;

0 commit comments

Comments
 (0)