Blame | Last modification | View Log | RSS feed
package com.spice.profitmandi.service.transaction;import com.spice.profitmandi.model.WarehouseItemQtyModel;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;import static org.junit.Assert.assertEquals;import static org.junit.Assert.assertFalse;/*** A row reserved beyond its stock - a Dummy holding an open order - must give nothing. It used to take a negative* quantity and so raise what was still to be fulfilled, parking one extra unit on the Dummy per unit it was short.*/public class GetItemQtyTest {private static final int ITEM = 40827;private static final int JAIPUR = 8947;private static final int NSSPL_RJ = 10822;private static final int JAIPUR_DUMMY = 11699;/** The movement of 24 Sep 14:39: 8 asked, 6 free on NSSPL-RJ, Dummy at -1 from an order left open on 16 Sep. */@Testpublic void negativeRowLeavesTheShortfallAsIs() {WarehouseItemQtyModel rj = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 8, 2, 6);WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 1, -1);Set<WarehouseItemQtyModel> taken = new HashSet<>();int shortfall = TransactionServiceImpl.getItemQty(8, taken, rows(dummy, rj), 6);assertEquals(2, shortfall);assertEquals(6, rj.getFulfillQty());assertEquals(0, dummy.getFulfillQty());assertFalse(taken.contains(dummy));}@Testpublic void enoughFreeStockNeverReachesTheNegativeRow() {WarehouseItemQtyModel rj = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 8, 0, 8);WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 1, -1);Set<WarehouseItemQtyModel> taken = new HashSet<>();assertEquals(0, TransactionServiceImpl.getItemQty(8, taken, rows(rj, dummy), 8));assertEquals(8, rj.getFulfillQty());assertEquals(0, dummy.getFulfillQty());}@Testpublic void freeStockSpreadOverTwoRows() {WarehouseItemQtyModel a = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 3, 0, 3);WarehouseItemQtyModel b = new WarehouseItemQtyModel(ITEM, JAIPUR, 10823, 2, 0, 2);WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 2, -2);Set<WarehouseItemQtyModel> taken = new HashSet<>();assertEquals(1, TransactionServiceImpl.getItemQty(6, taken, rows(dummy, b, a), 5));assertEquals(3, a.getFulfillQty());assertEquals(2, b.getFulfillQty());assertEquals(0, dummy.getFulfillQty());}private static List<WarehouseItemQtyModel> rows(WarehouseItemQtyModel... models) {return new ArrayList<>(Arrays.asList(models));}}