Skip to content

Commit fdd73fc

Browse files
Revert supplierStatusSk
1 parent b1e1195 commit fdd73fc

File tree

2 files changed

+50
-20
lines changed

2 files changed

+50
-20
lines changed

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

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,27 @@ function createLetter(
1414
supplierId: string,
1515
letterId: string,
1616
status: Letter["status"] = "PENDING",
17-
date: string = new Date().toISOString(),
1817
): InsertLetter {
18+
const now = new Date().toISOString();
1919
return {
2020
id: letterId,
2121
supplierId,
2222
specificationId: "specification1",
2323
groupId: "group1",
2424
url: `s3://bucket/${letterId}.pdf`,
2525
status,
26-
createdAt: date,
27-
updatedAt: date,
26+
createdAt: now,
27+
updatedAt: now,
2828
source: "/data-plane/letter-rendering/pdf",
2929
subject: `client/1/letter-request/${letterId}`,
3030
};
3131
}
3232

33+
function assertDateBetween(date: number, before: number, after: number) {
34+
expect(date).toBeGreaterThanOrEqual(before);
35+
expect(date).toBeLessThanOrEqual(after);
36+
}
37+
3338
// Database tests can take longer, especially with setup and teardown
3439
jest.setTimeout(30_000);
3540

@@ -82,26 +87,32 @@ describe("LetterRepository", () => {
8287
test("adds a letter to the database", async () => {
8388
const supplierId = "supplier1";
8489
const letterId = "letter1";
85-
const date = new Date().toISOString();
8690

87-
await letterRepository.putLetter(
88-
createLetter(supplierId, letterId, "PENDING", date),
89-
);
91+
const before = Date.now();
92+
93+
await letterRepository.putLetter(createLetter(supplierId, letterId));
94+
95+
const after = Date.now();
9096

9197
const letter = await letterRepository.getLetterById(supplierId, letterId);
9298
expect(letter).toBeDefined();
9399
expect(letter.id).toBe(letterId);
94100
expect(letter.supplierId).toBe(supplierId);
95-
expect(letter.createdAt).toBe(date);
96-
expect(letter.updatedAt).toBe(date);
97-
expect(letter.supplierStatusSk).toBe(date);
101+
assertDateBetween(new Date(letter.createdAt).valueOf(), before, after);
102+
assertDateBetween(new Date(letter.updatedAt).valueOf(), before, after);
103+
assertDateBetween(
104+
new Date(letter.supplierStatusSk).valueOf(),
105+
before,
106+
after,
107+
);
98108
expect(letter.supplierStatus).toBe("supplier1#PENDING");
99109
expect(letter.url).toBe("s3://bucket/letter1.pdf");
100110
expect(letter.specificationId).toBe("specification1");
101111
expect(letter.groupId).toBe("group1");
102112
expect(letter.reasonCode).toBeUndefined();
103113
expect(letter.reasonText).toBeUndefined();
104114
expect(letter.subject).toBe(`client/1/letter-request/${letterId}`);
115+
assertTtl(letter.ttl, before, after);
105116
});
106117

107118
test("fetches a letter by id", async () => {
@@ -149,7 +160,7 @@ describe("LetterRepository", () => {
149160
});
150161

151162
test("updates a letter's status in the database", async () => {
152-
const letter = createLetter("supplier1", "letter1", "PENDING");
163+
const letter = createLetter("supplier1", "letter1");
153164
await letterRepository.putLetter(letter);
154165
await checkLetterStatus("supplier1", "letter1", "PENDING");
155166

@@ -174,9 +185,7 @@ describe("LetterRepository", () => {
174185
test("updates a letter's updatedAt date", async () => {
175186
jest.useFakeTimers();
176187
jest.setSystemTime(new Date(2020, 1, 1));
177-
await letterRepository.putLetter(
178-
createLetter("supplier1", "letter1", "PENDING"),
179-
);
188+
await letterRepository.putLetter(createLetter("supplier1", "letter1"));
180189
const originalLetter = await letterRepository.getLetterById(
181190
"supplier1",
182191
"letter1",
@@ -432,15 +441,36 @@ describe("LetterRepository", () => {
432441
});
433442

434443
test("should batch write letters to the database", async () => {
435-
const letters = [
444+
const before = Date.now();
445+
446+
await letterRepository.putLetterBatch([
436447
createLetter("supplier1", "letter1"),
437448
createLetter("supplier1", "letter2"),
438449
createLetter("supplier1", "letter3"),
439-
];
450+
]);
440451

441-
await letterRepository.putLetterBatch(letters);
452+
const after = Date.now();
453+
454+
const letter = await letterRepository.getLetterById("supplier1", "letter1");
455+
expect(letter).toBeDefined();
456+
expect(letter.id).toBe("letter1");
457+
expect(letter.supplierId).toBe("supplier1");
458+
assertDateBetween(new Date(letter.createdAt).valueOf(), before, after);
459+
assertDateBetween(new Date(letter.updatedAt).valueOf(), before, after);
460+
assertDateBetween(
461+
new Date(letter.supplierStatusSk).valueOf(),
462+
before,
463+
after,
464+
);
465+
expect(letter.supplierStatus).toBe("supplier1#PENDING");
466+
expect(letter.url).toBe("s3://bucket/letter1.pdf");
467+
expect(letter.specificationId).toBe("specification1");
468+
expect(letter.groupId).toBe("group1");
469+
expect(letter.reasonCode).toBeUndefined();
470+
expect(letter.reasonText).toBeUndefined();
471+
expect(letter.subject).toBe("client/1/letter-request/letter1");
472+
assertTtl(letter.ttl, before, after);
442473

443-
await checkLetterStatus("supplier1", "letter1", "PENDING");
444474
await checkLetterStatus("supplier1", "letter2", "PENDING");
445475
await checkLetterStatus("supplier1", "letter3", "PENDING");
446476
});

internal/datastore/src/letter-repository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class LetterRepository {
4343
const letterDb: Letter = {
4444
...letter,
4545
supplierStatus: `${letter.supplierId}#${letter.status}`,
46-
supplierStatusSk: letter.createdAt, // needs to be an ISO timestamp
46+
supplierStatusSk: new Date().toISOString(), // needs to be an ISO timestamp as Db sorts alphabetically
4747
ttl: Math.floor(
4848
Date.now() / 1000 + 60 * 60 * this.config.lettersTtlHours,
4949
),
@@ -79,7 +79,7 @@ export class LetterRepository {
7979
lettersDb.push({
8080
...letter,
8181
supplierStatus: `${letter.supplierId}#${letter.status}`,
82-
supplierStatusSk: letter.createdAt,
82+
supplierStatusSk: new Date().toISOString(), // needs to be an ISO timestamp as Db sorts alphabetically
8383
ttl: Math.floor(
8484
Date.now() / 1000 + 60 * 60 * this.config.lettersTtlHours,
8585
),

0 commit comments

Comments
 (0)