@@ -134,122 +134,4 @@ test.describe("Allocator Weighting Tests", () => {
134134 ) ;
135135 }
136136 } ) ;
137-
138- test ( "Verify lowest weighting supplier selection with valid unequal target percentages" , async ( ) => {
139- const testStartedAt = Date . now ( ) ;
140- const domainId = randomUUID ( ) ;
141- const letterVariant = getVariantsForAllocation ( 1 ) ;
142- const volumeGroupId = "volumeGroup-test1" ;
143- const targetPercentages = {
144- supplier1 : 30 ,
145- supplier2 : 70 ,
146- } ;
147-
148- const dailyAllocation = await getOrSeedLetterDailyAllocationFromDb ( {
149- supplier1 : 0 ,
150- supplier2 : 0 ,
151- } ) ;
152- const overallAllocation = await getOrSeedOverallAllocationFromDb (
153- {
154- supplier1 : 0 ,
155- supplier2 : 0 ,
156- } ,
157- volumeGroupId ,
158- ) ;
159-
160- const originalDailySupplier1 = dailyAllocation . allocations . supplier1 ?? 0 ;
161- const originalDailySupplier2 = dailyAllocation . allocations . supplier2 ?? 0 ;
162- const originalOverallSupplier1 =
163- overallAllocation . allocations . supplier1 ?? 0 ;
164- const originalOverallSupplier2 =
165- overallAllocation . allocations . supplier2 ?? 0 ;
166-
167- const seededOverall = {
168- supplier1 : 600 ,
169- supplier2 : 400 ,
170- } ;
171-
172- try {
173- await updateSupplierDailyAllocation ( "supplier1" , 0 ) ;
174- await updateSupplierDailyAllocation ( "supplier2" , 0 ) ;
175- await updateSupplierOverallAllocation (
176- "supplier1" ,
177- seededOverall . supplier1 ,
178- volumeGroupId ,
179- ) ;
180- await updateSupplierOverallAllocation (
181- "supplier2" ,
182- seededOverall . supplier2 ,
183- volumeGroupId ,
184- ) ;
185-
186- const weightingSnapshot = buildWeightingSnapshot (
187- seededOverall ,
188- targetPercentages ,
189- ) ;
190- const lowestWeightingSupplier =
191- getLowestWeightingSupplier ( weightingSnapshot ) ;
192-
193- expect ( weightingSnapshot . supplier1 . allocatedVolume ) . toBe ( 600 ) ;
194- expect ( weightingSnapshot . supplier2 . allocatedVolume ) . toBe ( 400 ) ;
195- expect ( weightingSnapshot . supplier1 . allocatedPercentage ) . toBe ( 60 ) ;
196- expect ( weightingSnapshot . supplier2 . allocatedPercentage ) . toBe ( 40 ) ;
197- expect ( weightingSnapshot . supplier1 . targetPercentage ) . toBe ( 30 ) ;
198- expect ( weightingSnapshot . supplier2 . targetPercentage ) . toBe ( 70 ) ;
199- expect ( weightingSnapshot . supplier1 . weighting ) . toBe ( 2 ) ;
200- expect ( weightingSnapshot . supplier2 . weighting ) . toBeCloseTo ( 4 / 7 , 10 ) ;
201- expect ( lowestWeightingSupplier ) . toBe ( "supplier2" ) ;
202- expect ( Object . keys ( weightingSnapshot ) ) . toEqual (
203- expect . arrayContaining ( [ "supplier1" , "supplier2" ] ) ,
204- ) ;
205-
206- const preparedEvent = createPreparedV1Event ( {
207- domainId,
208- letterVariantId : letterVariant ,
209- } ) ;
210- const response = await sendSnsEvent ( preparedEvent ) ;
211- expect ( response . MessageId ) . toBeTruthy ( ) ;
212-
213- const supplierAllocatorLog = await getAllocationLogForDomainId ( domainId ) ;
214- const supplierFactorLog = await getAllocationLog < SupplierFactorLog > (
215- "Calculated supplier factors for allocation" ,
216- {
217- startTimeMs : testStartedAt ,
218- } ,
219- ) ;
220-
221- const selectedSupplierId =
222- supplierAllocatorLog . msg ?. allocationDetails ?. supplierSpec ?. supplierId ;
223-
224- expect ( selectedSupplierId ) . toBe ( lowestWeightingSupplier ) ;
225- expect ( weightingSnapshot . supplier1 . weighting ) . toBe (
226- supplierFactorLog . supplierFactors ?. find (
227- ( factor ) => factor . supplierId === "supplier1" ,
228- ) ?. factor ,
229- ) ;
230- expect ( weightingSnapshot . supplier2 . weighting ) . toBe (
231- supplierFactorLog . supplierFactors ?. find (
232- ( factor ) => factor . supplierId === "supplier2" ,
233- ) ?. factor ,
234- ) ;
235-
236- const updatedOverallAllocation =
237- await getOverallAllocationFromDb ( volumeGroupId ) ;
238- expect ( updatedOverallAllocation . allocations . supplier1 ) . toBe ( 600 ) ;
239- expect ( updatedOverallAllocation . allocations . supplier2 ) . toBe ( 401 ) ;
240- } finally {
241- await updateSupplierDailyAllocation ( "supplier1" , originalDailySupplier1 ) ;
242- await updateSupplierDailyAllocation ( "supplier2" , originalDailySupplier2 ) ;
243- await updateSupplierOverallAllocation (
244- "supplier1" ,
245- originalOverallSupplier1 ,
246- volumeGroupId ,
247- ) ;
248- await updateSupplierOverallAllocation (
249- "supplier2" ,
250- originalOverallSupplier2 ,
251- volumeGroupId ,
252- ) ;
253- }
254- } ) ;
255137} ) ;
0 commit comments