package org.openlmis.core.presenter; import com.google.inject.AbstractModule; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.openlmis.core.LMISApp; import org.openlmis.core.LMISTestApp; import org.openlmis.core.LMISTestRunner; import org.openlmis.core.model.StockCard; import org.openlmis.core.model.StockMovementItem; import org.openlmis.core.model.builder.StockCardBuilder; import org.openlmis.core.model.repository.StockRepository; import org.openlmis.core.utils.DateUtil; import org.openlmis.core.view.viewmodel.StockHistoryViewModel; import org.robolectric.RuntimeEnvironment; import java.util.Arrays; import java.util.List; import roboguice.RoboGuice; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(LMISTestRunner.class) public class AllDrugsMovementPresenterTest { AllDrugsMovementPresenter mPresenter; StockRepository mockStockRepository; @Before public void setUp() throws Exception { mockStockRepository = mock(StockRepository.class); RoboGuice.overrideApplicationInjector(RuntimeEnvironment.application, new MyTestModule()); mPresenter = RoboGuice.getInjector(LMISApp.getContext()).getInstance(AllDrugsMovementPresenter.class); } @Test public void shouldLoadAllStockCardsWithMovement() throws Exception { StockCard stockcard1 = StockCardBuilder.buildStockCard(); StockMovementItem stockMovementItem = new StockMovementItem(stockcard1); stockMovementItem.setReason("INVENTORY"); stockcard1.getStockMovementItemsWrapper().add(stockMovementItem); StockCard stockcard2 = StockCardBuilder.buildStockCard(); List<StockCard> stockCards = Arrays.asList(stockcard1, stockcard2); when(mockStockRepository.list()).thenReturn(stockCards); mPresenter.loadAllMovementHistory(); assertEquals(2, mPresenter.viewModelList.size()); } @Test public void shouldFilterViewModels() throws Exception { LMISTestApp.getInstance().setCurrentTimeMillis(DateUtil.parseString("2016-09-01", DateUtil.DB_DATE_FORMAT).getTime()); StockCard stockcard1 = StockCardBuilder.buildStockCard(); StockMovementItem stockMovementItem1 = new StockMovementItem(stockcard1); stockMovementItem1.setMovementDate(DateUtil.parseString("2016-08-26", DateUtil.DB_DATE_FORMAT)); stockMovementItem1.setReason("INVENTORY"); stockcard1.getStockMovementItemsWrapper().add(stockMovementItem1); mPresenter.viewModelList.add(new StockHistoryViewModel(stockcard1)); mPresenter.filterViewModels(7); assertEquals(1, mPresenter.filteredViewModelList.size()); } class MyTestModule extends AbstractModule { @Override protected void configure() { bind(StockRepository.class).toInstance(mockStockRepository); } } }