@@ -3,6 +3,7 @@ import { LetterRepository } from '../letter-repository';
33import { Letter } from '../types' ;
44import { Logger } from 'pino' ;
55import { createTestLogger , LogStream } from './logs' ;
6+ import { PutCommand } from '@aws-sdk/lib-dynamodb' ;
67
78function createLetter ( supplierId : string , letterId : string , status : Letter [ 'status' ] = 'PENDING' ) : Letter {
89 return {
@@ -143,4 +144,29 @@ describe('LetterRepository', () => {
143144 expect ( secondPage . letters [ 0 ] . id ) . toBe ( 'letter051' ) ;
144145 expect ( secondPage . letters [ 48 ] . id ) . toBe ( 'letter099' ) ;
145146 } ) ;
147+
148+ test ( 'letter list should warn about invalid data' , async ( ) => {
149+ await letterRepository . putLetter ( createLetter ( 'supplier1' , 'letter1' ) ) ;
150+ await db . docClient . send ( new PutCommand ( {
151+ TableName : db . config . lettersTableName ,
152+ Item : {
153+ supplierId : 'supplier1' ,
154+ id : 'invalid-letter' ,
155+ // specificationId: 'specification1', // Missing required field
156+ groupId : 'group1' ,
157+ url : 's3://bucket/invalid-letter.pdf' ,
158+ status : 'PENDING' ,
159+ supplierStatus : 'supplier1#PENDING' ,
160+ createdAt : new Date ( ) . toISOString ( ) ,
161+ updatedAt : new Date ( ) . toISOString ( )
162+ }
163+ } ) ) ;
164+
165+ const pendingLetters = await letterRepository . getLettersByStatus ( 'supplier1' , 'PENDING' ) ;
166+ expect ( pendingLetters . letters ) . toHaveLength ( 1 ) ;
167+ expect ( pendingLetters . letters [ 0 ] . id ) . toBe ( 'letter1' ) ;
168+
169+ expect ( logStream . logs ) . toContainEqual ( expect . stringMatching ( / .* I n v a l i d l e t t e r d a t a : .* / ) ) ;
170+ expect ( logStream . logs ) . toContainEqual ( expect . stringMatching ( / .* s p e c i f i c a t i o n I d .* I n v a l i d i n p u t : e x p e c t e d s t r i n g .* / ) ) ;
171+ } ) ;
146172} ) ;
0 commit comments