package org.openlmis.core.view.holder; import android.view.LayoutInflater; import android.view.View; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; 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.view.viewmodel.InventoryViewModel; import org.openlmis.core.view.viewmodel.InventoryViewModelBuilder; import org.robolectric.RuntimeEnvironment; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @RunWith(LMISTestRunner.class) public class ArchivedDrugsViewHolderTest { private ArchivedDrugsViewHolder viewHolder; private String queryKeyWord = null; private InventoryViewModel viewModel; private ArchivedDrugsViewHolder.ArchiveStockCardListener mockedListener; @Before public void setUp() { View itemView = LayoutInflater.from(RuntimeEnvironment.application).inflate(R.layout.item_archived_drug, null, false); viewHolder = new ArchivedDrugsViewHolder(itemView); Product product = new ProductBuilder().setPrimaryName("Lamivudina 150mg").setCode("08S40").setIsActive(true).setStrength("10mg").setType("VIA").build(); viewModel = new InventoryViewModelBuilder(product) .setChecked(false) .setType("Embalagem") .setSOH(123L) .build(); mockedListener = mock(ArchivedDrugsViewHolder.ArchiveStockCardListener.class); viewHolder.populate(viewModel, queryKeyWord, mockedListener); } @Test public void shouldShowProductNameAndStyledUnit() { assertThat(viewHolder.tvProductName.getText().toString()).isEqualTo("Lamivudina 150mg [08S40]"); assertThat(viewHolder.tvProductUnit.getText().toString()).isEqualTo("10mg VIA"); assertThat(viewHolder.tvArchiveBack.getVisibility()).isEqualTo(View.VISIBLE); } @Test public void shouldViewMovementHistoryWhenHistoryViewClicked() { viewHolder.tvViewHistory.performClick(); verify(mockedListener).viewMovementHistory(viewModel.getStockCard()); } @Test public void shouldArchiveDrugBackWhenArchiveBackViewClicked() { viewHolder.tvArchiveBack.performClick(); verify(mockedListener).archiveStockCardBack(viewModel.getStockCard()); } @Test public void shouldNotShowMoveBackToStockCardButtonIfProductIsInactive() { View itemView = LayoutInflater.from(RuntimeEnvironment.application).inflate(R.layout.item_archived_drug, null, false); viewHolder = new ArchivedDrugsViewHolder(itemView); Product deactivatedProduct = new ProductBuilder().setPrimaryName("Lamivudina 300mg").setCode("08S41").setIsActive(false).setStrength("10mg").setType("VIA").build(); viewModel = new InventoryViewModelBuilder(deactivatedProduct) .setChecked(false) .setType("Embalagem") .setSOH(123L) .build(); mockedListener = mock(ArchivedDrugsViewHolder.ArchiveStockCardListener.class); viewHolder.populate(viewModel, queryKeyWord, mockedListener); assertThat(viewHolder.tvArchiveBack.getVisibility()).isEqualTo(View.GONE); } }