package org.openlmis.core.view.activity; import android.content.Intent; import com.google.inject.AbstractModule; 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.R; import org.openlmis.core.model.Product; import org.openlmis.core.model.builder.ProductBuilder; import org.openlmis.core.presenter.UnpackKitPresenter; import org.openlmis.core.utils.Constants; import org.openlmis.core.view.viewmodel.InventoryViewModel; import org.openlmis.core.view.viewmodel.LotMovementViewModelBuilder; import org.openlmis.core.view.viewmodel.UnpackKitInventoryViewModel; import org.openlmis.core.view.widget.SingleClickButtonListener; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.util.List; import roboguice.RoboGuice; import rx.Observable; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.anyByte; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(LMISTestRunner.class) public class UnpackKitActivityTest { private UnpackKitPresenter mockedPresenter; private UnpackKitActivity unpackKitActivity; private Product product; private InventoryViewModel viewModel; @Before public void setUp() throws Exception { product = new ProductBuilder().setIsKit(false).setCode("productCode1").setPrimaryName("name1").build(); viewModel = new UnpackKitInventoryViewModel(product); viewModel.setChecked(true); viewModel.setKitExpectQuantity(300); mockedPresenter = mock(UnpackKitPresenter.class); when(mockedPresenter.getKitProductsObservable(anyString(), anyByte())).thenReturn(Observable.<List<InventoryViewModel>>empty()); RoboGuice.overrideApplicationInjector(RuntimeEnvironment.application, new AbstractModule() { @Override protected void configure() { bind(UnpackKitPresenter.class).toInstance(mockedPresenter); } }); Intent intent = new Intent() .putExtra(Constants.PARAM_KIT_CODE, "SD0001") .putExtra(Constants.PARAM_KIT_NUM, 1); unpackKitActivity = Robolectric.buildActivity(UnpackKitActivity.class).withIntent(intent).create().visible().get(); } @Test public void shouldLoadKitProductsWithKitCode() throws Exception { verify(mockedPresenter).getKitProductsObservable("SD0001", 1); } @Test public void shouldNotShowDialogWhenQuantityIsNotValid() throws Exception { viewModel.getNewLotMovementViewModelList().add(new LotMovementViewModelBuilder().setExpiryDate("Jan 2033").setQuantity("").build()); unpackKitActivity.mAdapter.getData().clear(); unpackKitActivity.mAdapter.getData().add(viewModel); unpackKitActivity.mAdapter.onCreateViewHolder(unpackKitActivity.productListRecycleView, 1).itemView.findViewById(R.id.btn_complete).performClick(); assertNull(unpackKitActivity.getFragmentManager().findFragmentByTag("signature_dialog_for_unpack_kit")); } @Test public void shouldShowSignatureDialogIfIsValid() throws Exception { LMISTestApp.getInstance().setCurrentTimeMillis(100000); SingleClickButtonListener.isViewClicked = false; viewModel.getNewLotMovementViewModelList().add(new LotMovementViewModelBuilder().setExpiryDate("Jan 2033").setQuantity("100").setLotNumber("some lot").build()); unpackKitActivity.mAdapter.getData().clear(); unpackKitActivity.mAdapter.getData().add(viewModel); unpackKitActivity.mAdapter.onCreateViewHolder(unpackKitActivity.productListRecycleView, 1).itemView.findViewById(R.id.btn_complete).performClick(); assertNotNull(unpackKitActivity.getFragmentManager().findFragmentByTag("signature_dialog_for_unpack_kit")); } }