package org.openlmis.core.view.viewmodel; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.openlmis.core.LMISTestApp; import org.openlmis.core.LMISTestRunner; import org.openlmis.core.manager.MovementReasonManager; import org.openlmis.core.model.StockCard; import org.openlmis.core.model.StockMovementItem; 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.junit.Assert.assertEquals; @RunWith(LMISTestRunner.class) public class StockHistoryViewModelTest { StockHistoryViewModel viewModel; private StockCard stockCard; @Before public void setUp() throws Exception { setUpViewModel(); } private void setUpViewModel() throws ParseException { stockCard = StockCardBuilder.buildStockCard(); StockMovementItem stockMovementItem1 = new StockMovementItemBuilder() .withDocumentNo("1") .withMovementDate("2015-11-01") .withStockOnHand(300) .withQuantity(100) .withMovementType(MovementReasonManager.MovementType.POSITIVE_ADJUST) .withMovementReason("INVENTORY") .build(); stockMovementItem1.setId(1); StockMovementItem stockMovementItem2 = new StockMovementItemBuilder() .withDocumentNo("2") .withMovementDate("2016-1-07") .withStockOnHand(300) .withQuantity(100) .withMovementType(MovementReasonManager.MovementType.ISSUE) .withMovementReason("INVENTORY") .build(); stockMovementItem2.setId(2); StockMovementItem stockMovementItem3 = new StockMovementItemBuilder() .withDocumentNo("3") .withMovementDate("2016-12-31") .withStockOnHand(300) .withQuantity(100) .withMovementType(MovementReasonManager.MovementType.RECEIVE) .withMovementReason("INVENTORY") .build(); stockMovementItem3.setId(3); stockCard.getStockMovementItemsWrapper().add(stockMovementItem3); stockCard.getStockMovementItemsWrapper().add(stockMovementItem2); stockCard.getStockMovementItemsWrapper().add(stockMovementItem1); viewModel = new StockHistoryViewModel(stockCard); } @Test public void shouldConstructStockHistoryViewModelWithMovementItemsInAscendingOderByMovementDate() throws Exception { assertEquals("1", viewModel.getAllMovementItemViewModelList().get(0).getDocumentNumber()); assertEquals("2", viewModel.getAllMovementItemViewModelList().get(1).getDocumentNumber()); assertEquals("3", viewModel.getAllMovementItemViewModelList().get(2).getDocumentNumber()); StockMovementItem stockMovementItem4 = new StockMovementItemBuilder() .withDocumentNo("4") .withMovementDate("2016-12-31") .withStockOnHand(0) .withQuantity(300) .withMovementType(MovementReasonManager.MovementType.ISSUE) .withMovementReason("INVENTORY") .build(); stockMovementItem4.setId(4); stockCard.getStockMovementItemsWrapper().add(0, stockMovementItem4); viewModel = new StockHistoryViewModel(stockCard); assertEquals("1", viewModel.getAllMovementItemViewModelList().get(0).getDocumentNumber()); assertEquals("2", viewModel.getAllMovementItemViewModelList().get(1).getDocumentNumber()); assertEquals("3", viewModel.getAllMovementItemViewModelList().get(2).getDocumentNumber()); assertEquals("4", viewModel.getAllMovementItemViewModelList().get(3).getDocumentNumber()); } @Test public void shouldFilter() throws Exception { LMISTestApp.getInstance().setCurrentTimeMillis(DateUtil.parseString("2017-01-06", DateUtil.DB_DATE_FORMAT).getTime()); viewModel.filter(7); assertEquals(1, viewModel.getFilteredMovementItemViewModelList().size()); assertEquals("3", viewModel.getFilteredMovementItemViewModelList().get(0).getDocumentNumber()); viewModel.filter(365); assertEquals(2, viewModel.getFilteredMovementItemViewModelList().size()); assertEquals("2", viewModel.getFilteredMovementItemViewModelList().get(0).getDocumentNumber()); assertEquals("3", viewModel.getFilteredMovementItemViewModelList().get(1).getDocumentNumber()); } }