@@ -12,12 +12,16 @@ import { LetterAlreadyExistsError } from "../letter-already-exists-error";
1212import { createTestLogger } from "./logs" ;
1313import { LetterDoesNotExistError } from "../letter-does-not-exist-error" ;
1414
15- function createLetter ( letterId = "letter1" ) : InsertPendingLetter {
15+ function createLetter (
16+ overrides : Partial < InsertPendingLetter > = { } ,
17+ ) : InsertPendingLetter {
1618 return {
17- letterId,
19+ letterId : "letter1" ,
1820 supplierId : "supplier1" ,
1921 specificationId : "specification1" ,
2022 groupId : "group1" ,
23+ priority : 10 ,
24+ ...overrides ,
2125 } ;
2226}
2327
@@ -54,9 +58,11 @@ describe("LetterQueueRepository", () => {
5458 } ) ;
5559
5660 describe ( "putLetter" , ( ) => {
57- it ( "adds a letter to the database" , async ( ) => {
61+ beforeEach ( ( ) => {
5862 jest . useFakeTimers ( ) . setSystemTime ( new Date ( "2026-03-04T13:15:45.000Z" ) ) ;
63+ } ) ;
5964
65+ it ( "adds a letter to the database" , async ( ) => {
6066 const pendingLetter =
6167 await letterQueueRepository . putLetter ( createLetter ( ) ) ;
6268
@@ -65,9 +71,32 @@ describe("LetterQueueRepository", () => {
6571 "2026-03-04T13:15:45.000Z" ,
6672 ) ;
6773 expect ( pendingLetter . ttl ) . toBe ( 1_772_633_745 ) ;
74+ expect ( pendingLetter . queueSortOrderSk ) . toBe (
75+ "10-2026-03-04T13:15:45.000Z" ,
76+ ) ;
6877 expect ( await letterExists ( db , "supplier1" , "letter1" ) ) . toBe ( true ) ;
6978 } ) ;
7079
80+ it ( "left-pads the priority with zeros in the sort key" , async ( ) => {
81+ const pendingLetter = await letterQueueRepository . putLetter (
82+ createLetter ( { priority : 5 } ) ,
83+ ) ;
84+
85+ expect ( pendingLetter . queueSortOrderSk ) . toBe (
86+ "05-2026-03-04T13:15:45.000Z" ,
87+ ) ;
88+ } ) ;
89+
90+ it ( "defaults a missing priority to 10 in the sort key" , async ( ) => {
91+ const pendingLetter = await letterQueueRepository . putLetter (
92+ createLetter ( { priority : undefined } ) ,
93+ ) ;
94+
95+ expect ( pendingLetter . queueSortOrderSk ) . toBe (
96+ "10-2026-03-04T13:15:45.000Z" ,
97+ ) ;
98+ } ) ;
99+
71100 it ( "throws LetterAlreadyExistsError when creating a letter which already exists" , async ( ) => {
72101 await letterQueueRepository . putLetter ( createLetter ( ) ) ;
73102
@@ -122,16 +151,21 @@ describe("LetterQueueRepository", () => {
122151 } ) ;
123152} ) ;
124153
125- async function letterExists (
126- db : DBContext ,
127- supplierId : string ,
128- letterId : string ,
129- ) : Promise < boolean > {
154+ async function getLetter ( db : DBContext , supplierId : string , letterId : string ) {
130155 const result = await db . docClient . send (
131156 new GetCommand ( {
132157 TableName : db . config . letterQueueTableName ,
133158 Key : { supplierId, letterId } ,
134159 } ) ,
135160 ) ;
136- return result . Item !== undefined ;
161+ return result . Item ;
162+ }
163+
164+ async function letterExists (
165+ db : DBContext ,
166+ supplierId : string ,
167+ letterId : string ,
168+ ) : Promise < boolean > {
169+ const letter = await getLetter ( db , supplierId , letterId ) ;
170+ return letter !== undefined ;
137171}
0 commit comments