package org.openlmis.core.network.model; import org.junit.Test; import org.junit.runner.RunWith; import org.openlmis.core.LMISTestRunner; import org.openlmis.core.manager.MovementReasonManager; import org.openlmis.core.model.Lot; import org.openlmis.core.model.LotMovementItem; import org.openlmis.core.model.StockCard; import org.openlmis.core.model.StockMovementItem; import org.openlmis.core.model.builder.LotMovementItemBuilder; import org.openlmis.core.model.builder.StockCardBuilder; import org.openlmis.core.model.builder.StockMovementItemBuilder; import org.openlmis.core.utils.DateUtil; import java.text.ParseException; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.roboguice.shaded.goole.common.collect.Lists.newArrayList; @RunWith(LMISTestRunner.class) public class StockMovementEntryTest { @Test public void shouldCreateStockMovementEntryForSyncUp() throws ParseException { StockCard stockCard = StockCardBuilder.buildStockCard(); StockMovementItem stockMovementItem = new StockMovementItemBuilder() .withMovementDate("2016-1-1") .withMovementReason("reason") .withMovementType(MovementReasonManager.MovementType.ISSUE) .withStockOnHand(100) .withDocumentNo("123") .withQuantity(50) .build(); stockMovementItem.setStockCard(stockCard); Lot lot = new Lot(); lot.setProduct(stockCard.getProduct()); lot.setLotNumber("ABC"); lot.setExpirationDate(DateUtil.parseString("2020-10-31", DateUtil.DB_DATE_FORMAT)); Lot lot2 = new Lot(); lot2.setProduct(stockCard.getProduct()); lot2.setLotNumber("DEF"); lot2.setExpirationDate(DateUtil.parseString("2020-11-31", DateUtil.DB_DATE_FORMAT)); LotMovementItem lotMovementItem1 = new LotMovementItemBuilder() .setStockMovementItem(stockMovementItem) .setLot(lot) .setStockOnHand(50L) .setMovementQuantity(30L) .build(); LotMovementItem lotMovementItem2 = new LotMovementItemBuilder() .setStockMovementItem(stockMovementItem) .setLot(lot2) .setStockOnHand(100L) .setMovementQuantity(20L) .build(); stockMovementItem.setLotMovementItemListWrapper(newArrayList(lotMovementItem1, lotMovementItem2)); StockMovementEntry entry = new StockMovementEntry(stockMovementItem, "123"); assertThat(entry.getFacilityId(), is("123")); assertThat(entry.getLotEventList().size(), is(2)); assertThat(entry.getLotEventList().get(0).getLotNumber(), is("ABC")); assertThat(entry.getLotEventList().get(0).getExpirationDate(), is("2020-10-31")); assertThat(entry.getLotEventList().get(0).getQuantity(), is(30L)); assertThat(entry.getLotEventList().get(0).getCustomProps().get("SOH"), is("50")); } }