Skip to content

Commit c727ab4

Browse files
Merge remote-tracking branch 'origin/main' into feature/CCM-14318
2 parents 2a202ed + eb8f0f2 commit c727ab4

28 files changed

Lines changed: 188 additions & 89 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.5-${yyyy}${mm}${dd}.${HH}${MM}${SS}+${hash}
1+
1.1.6-${yyyy}${mm}${dd}.${HH}${MM}${SS}+${hash}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import { LetterRepository } from "../letter-repository";
1010
import { InsertLetter, Letter, UpdateLetter } from "../types";
1111
import { LogStream, createTestLogger } from "./logs";
12+
import { LetterAlreadyExistsError } from "../letter-already-exists-error";
1213

1314
function createLetter(
1415
supplierId: string,
@@ -149,9 +150,7 @@ describe("LetterRepository", () => {
149150
await letterRepository.putLetter(createLetter("supplier1", "letter1"));
150151
await expect(
151152
letterRepository.putLetter(createLetter("supplier1", "letter1")),
152-
).rejects.toThrow(
153-
"Letter with id letter1 already exists for supplier supplier1",
154-
);
153+
).rejects.toThrow(LetterAlreadyExistsError);
155154
});
156155

157156
test("rethrows errors from DynamoDB when creating a letter", async () => {

internal/datastore/src/letter-repository.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {
1919
UpdateLetter,
2020
} from "./types";
2121
import LetterNotFoundError from "./errors/letter-not-found-error";
22+
import LetterAlreadyExistsError from "./errors/letter-already-exists-error";
2223

2324
export type PagingOptions = Partial<{
2425
exclusiveStartKey: Record<string, any>;
@@ -63,9 +64,7 @@ export class LetterRepository {
6364
error instanceof Error &&
6465
error.name === "ConditionalCheckFailedException"
6566
) {
66-
throw new Error(
67-
`Letter with id ${letter.id} already exists for supplier ${letter.supplierId}`,
68-
);
67+
throw new LetterAlreadyExistsError(letter.supplierId, letter.id);
6968
}
7069
throw error;
7170
}

internal/event-builders/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# @internal/event-builders
2+
3+
Helper utilities to produce supplier api event types.
4+
5+
This package contains functions for constructing CloudEvent-compliant event payloads and related helpers.
6+
7+
Independent package to allow for type imports across the project without circular dependencies.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export default {
2+
preset: "ts-jest",
3+
testEnvironment: "node",
4+
testMatch: [
5+
"**/src/__tests__/**/*.ts?(x)",
6+
"**/src/?(*.)+(spec|test).ts?(x)",
7+
],
8+
collectCoverageFrom: ["src/**/*.ts"],
9+
coveragePathIgnorePatterns: ["/node_modules/", "__tests__"],
10+
testPathIgnorePatterns: ["/node_modules/", "/dist/"],
11+
transform: {
12+
"^.+\\.tsx?$": ["ts-jest", {}],
13+
},
14+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"dependencies": {
3+
"@internal/datastore": "*",
4+
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "*"
5+
},
6+
"devDependencies": {},
7+
"main": "dist/index.js",
8+
"name": "@internal/event-builders",
9+
"private": true,
10+
"scripts": {
11+
"build": "tsc",
12+
"lint": "eslint .",
13+
"lint:fix": "eslint . --fix",
14+
"test:unit": "jest",
15+
"typecheck": "tsc --noEmit"
16+
},
17+
"types": "dist/index.d.ts",
18+
"version": "1.0.0"
19+
}

internal/events/src/events/__tests__/letter-mapper.test.ts renamed to internal/event-builders/src/__tests__/letter-mapper.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { $LetterEvent } from "@nhsdigital/nhs-notify-event-schemas-supplier-api/src";
22
import { Letter } from "@internal/datastore";
3-
import { mapLetterToCloudEvent } from "@nhsdigital/nhs-notify-event-schemas-supplier-api/src/events/letter-mapper";
3+
import { mapLetterToCloudEvent } from "../letter-mapper";
44

55
describe("letter-mapper", () => {
66
it("maps a letter to a letter event", async () => {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// Export event builder utilities
2+
export * from "./letter-mapper";

internal/events/src/events/letter-mapper.ts renamed to internal/event-builders/src/letter-mapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { randomBytes, randomUUID } from "node:crypto";
22
import eventSchemaPackage from "@nhsdigital/nhs-notify-event-schemas-supplier-api/package.json";
33
import { Letter } from "@internal/datastore";
4-
import { LetterEvent } from "./letter-events";
4+
import { LetterEvent } from "@nhsdigital/nhs-notify-event-schemas-supplier-api/src/events/letter-events";
55

66
// eslint-disable-next-line import-x/prefer-default-export
77
export function mapLetterToCloudEvent(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"compilerOptions": {
3+
"declaration": true
4+
},
5+
"exclude": [
6+
"node_modules",
7+
"dist"
8+
],
9+
"extends": "../../tsconfig.base.json",
10+
"include": [
11+
"src/**/*",
12+
"jest.config.ts"
13+
]
14+
}

0 commit comments

Comments
 (0)