package org.openlmis.core.view.viewmodel;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openlmis.core.LMISTestRunner;
import org.openlmis.core.model.DraftInventory;
import org.openlmis.core.model.StockCard;
import org.openlmis.core.model.builder.StockCardBuilder;
import static org.assertj.core.util.Lists.newArrayList;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
@RunWith(LMISTestRunner.class)
public class PhysicalInventoryViewModelTest {
private PhysicalInventoryViewModel viewModel;
@Before
public void setUp() throws Exception {
StockCard stockCard = StockCardBuilder.buildStockCard();
stockCard.setId(1);
viewModel = new PhysicalInventoryViewModel(stockCard);
}
@Test
public void shouldConvertToAndParseDraftInventory() {
LotMovementViewModel lotMovementViewModel1 = new LotMovementViewModelBuilder().setLotNumber("lot1").setQuantity("100").setExpiryDate("Feb 2015").build();
LotMovementViewModel lotMovementViewModel2 = new LotMovementViewModelBuilder().setLotNumber("lot2").setExpiryDate("Feb 2015").build();
viewModel.setExistingLotMovementViewModelList(newArrayList(lotMovementViewModel1));
viewModel.setNewLotMovementViewModelList(newArrayList(lotMovementViewModel2));
viewModel.setDone(true);
DraftInventory draftInventory = new DraftInventory(viewModel);
assertTrue(draftInventory.isDone());
assertThat(draftInventory.getDraftLotItemListWrapper().get(0).isNewAdded(), is(false));
assertThat(draftInventory.getDraftLotItemListWrapper().get(0).getLotNumber(), is("lot1"));
assertThat(draftInventory.getDraftLotItemListWrapper().get(0).getQuantity(), is(100L));
assertThat(draftInventory.getDraftLotItemListWrapper().get(1).isNewAdded(), is(true));
assertThat(draftInventory.getDraftLotItemListWrapper().get(1).getLotNumber(), is("lot2"));
PhysicalInventoryViewModel newViewModel = new PhysicalInventoryViewModel(viewModel.getStockCard());
newViewModel.getExistingLotMovementViewModelList().add(new LotMovementViewModelBuilder().setLotNumber("lot1").setExpiryDate("Feb 2015").build());
newViewModel.setDraftInventory(draftInventory);
assertTrue(newViewModel.isDone());
assertEquals("lot1", newViewModel.getExistingLotMovementViewModelList().get(0).getLotNumber());
assertEquals("lot2", newViewModel.getNewLotMovementViewModelList().get(0).getLotNumber());
}
}