Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
37767 amit 1
package com.spice.profitmandi.service.transaction;
2
 
3
import com.spice.profitmandi.model.WarehouseItemQtyModel;
4
import org.junit.Test;
5
 
6
import java.util.ArrayList;
7
import java.util.Arrays;
8
import java.util.HashSet;
9
import java.util.List;
10
import java.util.Set;
11
 
12
import static org.junit.Assert.assertEquals;
13
import static org.junit.Assert.assertFalse;
14
 
15
/**
16
 * A row reserved beyond its stock - a Dummy holding an open order - must give nothing. It used to take a negative
17
 * quantity and so raise what was still to be fulfilled, parking one extra unit on the Dummy per unit it was short.
18
 */
19
public class GetItemQtyTest {
20
 
21
    private static final int ITEM = 40827;
22
    private static final int JAIPUR = 8947;
23
    private static final int NSSPL_RJ = 10822;
24
    private static final int JAIPUR_DUMMY = 11699;
25
 
26
    /** 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. */
27
    @Test
28
    public void negativeRowLeavesTheShortfallAsIs() {
29
        WarehouseItemQtyModel rj = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 8, 2, 6);
30
        WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 1, -1);
31
        Set<WarehouseItemQtyModel> taken = new HashSet<>();
32
 
33
        int shortfall = TransactionServiceImpl.getItemQty(8, taken, rows(dummy, rj), 6);
34
 
35
        assertEquals(2, shortfall);
36
        assertEquals(6, rj.getFulfillQty());
37
        assertEquals(0, dummy.getFulfillQty());
38
        assertFalse(taken.contains(dummy));
39
    }
40
 
41
    @Test
42
    public void enoughFreeStockNeverReachesTheNegativeRow() {
43
        WarehouseItemQtyModel rj = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 8, 0, 8);
44
        WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 1, -1);
45
        Set<WarehouseItemQtyModel> taken = new HashSet<>();
46
 
47
        assertEquals(0, TransactionServiceImpl.getItemQty(8, taken, rows(rj, dummy), 8));
48
        assertEquals(8, rj.getFulfillQty());
49
        assertEquals(0, dummy.getFulfillQty());
50
    }
51
 
52
    @Test
53
    public void freeStockSpreadOverTwoRows() {
54
        WarehouseItemQtyModel a = new WarehouseItemQtyModel(ITEM, JAIPUR, NSSPL_RJ, 3, 0, 3);
55
        WarehouseItemQtyModel b = new WarehouseItemQtyModel(ITEM, JAIPUR, 10823, 2, 0, 2);
56
        WarehouseItemQtyModel dummy = new WarehouseItemQtyModel(ITEM, JAIPUR, JAIPUR_DUMMY, 0, 2, -2);
57
        Set<WarehouseItemQtyModel> taken = new HashSet<>();
58
 
59
        assertEquals(1, TransactionServiceImpl.getItemQty(6, taken, rows(dummy, b, a), 5));
60
        assertEquals(3, a.getFulfillQty());
61
        assertEquals(2, b.getFulfillQty());
62
        assertEquals(0, dummy.getFulfillQty());
63
    }
64
 
65
    private static List<WarehouseItemQtyModel> rows(WarehouseItemQtyModel... models) {
66
        return new ArrayList<>(Arrays.asList(models));
67
    }
68
}