@@ -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
3439jest . 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 } ) ;
0 commit comments