Skip to content

Commit a3cecf4

Browse files
CCM-13752 Added specificationBillingId
1 parent d5c8591 commit a3cecf4

10 files changed

Lines changed: 40 additions & 5 deletions

File tree

internal/datastore/src/__test__/letter-repository.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ function createLetter(
3030
source: "/data-plane/letter-rendering/pdf",
3131
subject: `client/1/letter-request/${letterId}`,
3232
billingRef: "specification1",
33+
specificationBillingId: "specification1",
3334
};
3435
}
3536

internal/datastore/src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const LetterSchema = LetterSchemaBase.extend({
5353
source: z.string(),
5454
subject: z.string(),
5555
billingRef: z.string(),
56+
specificationBillingId: z.string(),
5657
}).describe("Letter");
5758

5859
/**

lambdas/api-handler/src/mappers/__tests__/letter-mapper.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ describe("letter-mapper", () => {
2828
ttl: 123,
2929
source: "/data-plane/letter-rendering/pdf",
3030
subject: "letter-rendering/source/letter/letter-id",
31+
specificationBillingId: "billing123",
3132
};
3233

3334
const result: PatchLetterResponse = mapToPatchLetterResponse(letter);
@@ -64,6 +65,7 @@ describe("letter-mapper", () => {
6465
reasonText: "Reason text",
6566
source: "/data-plane/letter-rendering/pdf",
6667
subject: "letter-rendering/source/letter/letter-id",
68+
specificationBillingId: "billing123",
6769
};
6870

6971
const result: PatchLetterResponse = mapToPatchLetterResponse(letter);
@@ -100,6 +102,7 @@ describe("letter-mapper", () => {
100102
ttl: 123,
101103
source: "/data-plane/letter-rendering/pdf",
102104
subject: "letter-rendering/source/letter/letter-id",
105+
specificationBillingId: "billing123",
103106
};
104107

105108
const result: GetLetterResponse = mapToGetLetterResponse(letter);
@@ -136,6 +139,7 @@ describe("letter-mapper", () => {
136139
reasonText: "Reason text",
137140
source: "/data-plane/letter-rendering/pdf",
138141
subject: "letter-rendering/source/letter/letter-id",
142+
specificationBillingId: "billing123",
139143
};
140144

141145
const result: GetLetterResponse = mapToGetLetterResponse(letter);
@@ -174,6 +178,7 @@ describe("letter-mapper", () => {
174178
reasonText: "Reason text",
175179
source: "/data-plane/letter-rendering/pdf",
176180
subject: "letter-rendering/source/letter/letter-id",
181+
specificationBillingId: "billing123",
177182
};
178183

179184
const result: GetLettersResponse = mapToGetLettersResponse([

lambdas/api-handler/src/services/__tests__/letter-operations.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ function makeLetter(id: string, status: Letter["status"]): Letter {
4141
reasonText: "Reason text",
4242
source: "/data-plane/letter-rendering/pdf",
4343
subject: "letter-rendering/source/letter/letter-id",
44+
specificationBillingId: "billing123",
4445
};
4546
}
4647

lambdas/letter-updates-transformer/src/__tests__/letter-updates-transformer.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ function generateLetter(status: LetterStatus, id?: string): Letter {
339339
supplierStatus: `supplier1#${status}`,
340340
supplierStatusSk: "2025-12-10T11:12:54Z#1",
341341
ttl: 1_234_567_890,
342+
specificationBillingId: "billing1",
342343
};
343344
}
344345

lambdas/update-letter-queue/src/__tests__/update-letter-queue.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ function generateLetter(status: LetterStatus, id?: string): Letter {
4646
source: "test-source",
4747
subject: "test-subject",
4848
billingRef: "billing-ref-1",
49+
specificationBillingId: "billing1",
4950
};
5051
}
5152

lambdas/upsert-letter/src/handler/__tests__/upsert-handler.test.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ function createSupplierStatusChangeEventWithoutSupplier(
9797
billingRef: "1y3q9v1zzzz",
9898
status: "RETURNED",
9999
supplierId: "",
100+
specificationBillingId: "billing1",
100101
},
101102
datacontenttype: "application/json",
102103
dataschema:
@@ -151,6 +152,7 @@ function createSupplierStatusChangeEvent(
151152
billingRef: "1y3q9v1zzzz",
152153
status: "RETURNED",
153154
supplierId: "supplier1",
155+
specificationBillingId: "billing1",
154156
},
155157
datacontenttype: "application/json",
156158
dataschema:
@@ -211,11 +213,17 @@ describe("createUpsertLetterHandler", () => {
211213
test("processes all records successfully and returns no batch failures", async () => {
212214
const v2message = {
213215
letterEvent: createPreparedV2Event(),
214-
supplierSpec: { supplierId: "supplier1", specId: "spec1" },
216+
supplierSpec: {
217+
supplierId: "supplier1",
218+
specId: "spec1",
219+
},
215220
};
216221
const v1message = {
217222
letterEvent: createPreparedV1Event(),
218-
supplierSpec: { supplierId: "supplier1", specId: "spec1" },
223+
supplierSpec: {
224+
supplierId: "supplier1",
225+
specId: "spec1",
226+
},
219227
};
220228

221229
const evt: SQSEvent = createSQSEvent([
@@ -249,6 +257,7 @@ describe("createUpsertLetterHandler", () => {
249257
expect(insertedV2Letter.status).toBe("PENDING");
250258
expect(insertedV2Letter.groupId).toBe("client1campaign1template1");
251259
expect(insertedV2Letter.source).toBe("/data-plane/letter-rendering/test");
260+
expect(insertedV2Letter.specificationBillingId).toBe("spec1");
252261

253262
const insertedV1Letter = (mockedDeps.letterRepo.putLetter as jest.Mock).mock
254263
.calls[1][0];
@@ -260,6 +269,7 @@ describe("createUpsertLetterHandler", () => {
260269
expect(insertedV1Letter.status).toBe("PENDING");
261270
expect(insertedV1Letter.groupId).toBe("client1campaign1template1");
262271
expect(insertedV1Letter.source).toBe("/data-plane/letter-rendering/test");
272+
expect(insertedV1Letter.specificationBillingId).toBe("spec1");
263273

264274
const updatedLetter = (
265275
mockedDeps.letterRepo.updateLetterStatus as jest.Mock
@@ -472,14 +482,20 @@ describe("createUpsertLetterHandler", () => {
472482
id: "7b9a03ca-342a-4150-b56b-989109c45615",
473483
domainId: "ok",
474484
}),
475-
supplierSpec: { supplierId: "supplier1", specId: "spec1" },
485+
supplierSpec: {
486+
supplierId: "supplier1",
487+
specId: "spec1",
488+
},
476489
};
477490
const message2 = {
478491
letterEvent: createPreparedV2Event({
479492
id: "7b9a03ca-342a-4150-b56b-989109c45616",
480493
domainId: "fail",
481494
}),
482-
supplierSpec: { supplierId: "supplier1", specId: "spec1" },
495+
supplierSpec: {
496+
supplierId: "supplier1",
497+
specId: "spec1",
498+
},
483499
};
484500
const evt: SQSEvent = createSQSEvent([
485501
createSqsRecord("ok-msg", JSON.stringify(message1)),

lambdas/upsert-letter/src/handler/upsert-handler.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ function mapToInsertLetter(
117117
createdAt: now,
118118
updatedAt: now,
119119
billingRef,
120+
specificationBillingId: spec,
120121
};
121122
}
122123

@@ -235,7 +236,10 @@ export default function createUpsertLetterHandler(deps: Deps): SQSHandler {
235236
await runUpsert(
236237
operation,
237238
letterEvent,
238-
supplierSpec ?? { supplierId: "unknown", specId: "unknown" },
239+
supplierSpec ?? {
240+
supplierId: "unknown",
241+
specId: "unknown",
242+
},
239243
deps,
240244
);
241245

scripts/utilities/letter-test-data/src/__test__/helpers/create-letter-helpers.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ describe("Create letter helpers", () => {
6262
source: "/data-plane/letter-rendering/letter-test-data",
6363
subject: "supplier-api/letter-test-data/letterId",
6464
billingRef: "specificationId",
65+
specificationBillingId: "specificationId",
6566
});
6667
});
6768

@@ -110,6 +111,7 @@ describe("Create letter helpers", () => {
110111
billingRef: "specificationId",
111112
source: "/data-plane/letter-rendering/letter-test-data",
112113
subject: "supplier-api/letter-test-data/letterId",
114+
specificationBillingId: "specificationId",
113115
});
114116
});
115117

@@ -140,6 +142,7 @@ describe("Create letter helpers", () => {
140142
source: "/data-plane/letter-rendering/letter-test-data",
141143
subject: "supplier-api/letter-test-data/testLetterId",
142144
billingRef: "testSpecId",
145+
specificationBillingId: "testSpecId",
143146
});
144147
});
145148
});

scripts/utilities/letter-test-data/src/helpers/create-letter-helpers.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export async function createLetter(params: {
4949
source: "/data-plane/letter-rendering/letter-test-data",
5050
subject: `supplier-api/letter-test-data/${letterId}`,
5151
billingRef: specificationId,
52+
specificationBillingId: specificationId,
5253
};
5354

5455
const letterRecord = await letterRepository.putLetter(letter);
@@ -78,6 +79,7 @@ export function createLetterDto(params: {
7879
source: "/data-plane/letter-rendering/letter-test-data",
7980
subject: `supplier-api/letter-test-data/${letterId}`,
8081
billingRef: specificationId,
82+
specificationBillingId: specificationId,
8183
};
8284

8385
return letter;

0 commit comments

Comments
 (0)