@@ -18,7 +18,9 @@ describe("Unit test persistDataItems", () => {
1818 beforeEach ( ( ) => {
1919 jest . resetModules ( )
2020 jest . clearAllMocks ( )
21+ jest . resetAllMocks ( )
2122 } )
23+
2224 it ( "when the conditional check fails, an error is thrown" , async ( ) => {
2325 const dataItems = [
2426 {
@@ -70,4 +72,105 @@ describe("Unit test persistDataItems", () => {
7072 reasons : [ { Code : "ConditionalCheckFailedException" } ]
7173 } )
7274 } )
75+
76+ it ( "returns success when everything works" , async ( ) => {
77+ const dataItems = [
78+ {
79+ LastModified : "2023-01-01T00:00:00Z" ,
80+ LineItemID : "LineItemID_1" ,
81+ PatientNHSNumber : "PatientNHSNumber_1" ,
82+ PharmacyODSCode : "PharmacyODSCode_1" ,
83+ PrescriptionID : "PrescriptionID_1" ,
84+ RequestID : "RequestID_1" ,
85+ Status : "Status_1" ,
86+ TaskID : "TaskID_1" ,
87+ TerminalStatus : "TerminalStatus_1" ,
88+ ApplicationName : "name" ,
89+ ExpiryTime : 10
90+ } ,
91+ {
92+ LastModified : "2023-01-02T00:00:00Z" ,
93+ LineItemID : "LineItemID_2" ,
94+ PatientNHSNumber : "PatientNHSNumber_2" ,
95+ PharmacyODSCode : "PharmacyODSCode_2" ,
96+ PrescriptionID : "PrescriptionID_1" ,
97+ RequestID : "RequestID_2" ,
98+ Status : "Status_2" ,
99+ TaskID : "TaskID_1" ,
100+ TerminalStatus : "TerminalStatus_2" ,
101+ ApplicationName : "name" ,
102+ ExpiryTime : 10
103+ }
104+ ]
105+
106+ const loggerSpy = jest . spyOn ( logger , "error" )
107+
108+ const result = await persistDataItems ( dataItems , logger )
109+ expect ( result ) . toBe ( true )
110+ expect ( loggerSpy ) . not . toBeCalled ( )
111+ } )
112+
113+ it ( "call dynamo update twice when there is a large batch" , async ( ) => {
114+ const dataItem = {
115+ LastModified : "2023-01-01T00:00:00Z" ,
116+ LineItemID : "LineItemID_1" ,
117+ PatientNHSNumber : "PatientNHSNumber_1" ,
118+ PharmacyODSCode : "PharmacyODSCode_1" ,
119+ PrescriptionID : "PrescriptionID_1" ,
120+ RequestID : "RequestID_1" ,
121+ Status : "Status_1" ,
122+ TaskID : "TaskID_1" ,
123+ TerminalStatus : "TerminalStatus_1" ,
124+ ApplicationName : "name" ,
125+ ExpiryTime : 10
126+ }
127+ const dataItems = Array ( 150 ) . fill ( dataItem )
128+
129+ const loggerSpy = jest . spyOn ( logger , "error" )
130+
131+ const result = await persistDataItems ( dataItems , logger )
132+ expect ( result ) . toBe ( true )
133+ expect ( loggerSpy ) . not . toBeCalled ( )
134+ expect ( mockSend ) . toBeCalledTimes ( 2 )
135+ } )
136+
137+ it ( "returns false when there is a general error" , async ( ) => {
138+ const dataItems = [
139+ {
140+ LastModified : "2023-01-01T00:00:00Z" ,
141+ LineItemID : "LineItemID_1" ,
142+ PatientNHSNumber : "PatientNHSNumber_1" ,
143+ PharmacyODSCode : "PharmacyODSCode_1" ,
144+ PrescriptionID : "PrescriptionID_1" ,
145+ RequestID : "RequestID_1" ,
146+ Status : "Status_1" ,
147+ TaskID : "TaskID_1" ,
148+ TerminalStatus : "TerminalStatus_1" ,
149+ ApplicationName : "name" ,
150+ ExpiryTime : 10
151+ } ,
152+ {
153+ LastModified : "2023-01-02T00:00:00Z" ,
154+ LineItemID : "LineItemID_2" ,
155+ PatientNHSNumber : "PatientNHSNumber_2" ,
156+ PharmacyODSCode : "PharmacyODSCode_2" ,
157+ PrescriptionID : "PrescriptionID_1" ,
158+ RequestID : "RequestID_2" ,
159+ Status : "Status_2" ,
160+ TaskID : "TaskID_1" ,
161+ TerminalStatus : "TerminalStatus_2" ,
162+ ApplicationName : "name" ,
163+ ExpiryTime : 10
164+ }
165+ ]
166+
167+ const loggerSpy = jest . spyOn ( logger , "error" )
168+ mockSend . mockRejectedValue (
169+ new Error ( "General error" ) as never
170+ )
171+
172+ const result = await persistDataItems ( dataItems , logger )
173+ expect ( result ) . toBe ( false )
174+ expect ( loggerSpy ) . toBeCalled ( )
175+ } )
73176} )
0 commit comments