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.holder.InitialInventoryViewHolder.ViewHistoryListener;
import org.openlmis.core.view.viewmodel.InventoryViewModel;
import org.openlmis.core.view.viewmodel.InventoryViewModelBuilder;
import org.robolectric.RuntimeEnvironment;
import java.text.ParseException;
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 InitialInventoryViewHolderTest {
private InitialInventoryViewHolder viewHolder;
private String queryKeyWord = null;
private Product product;
private ViewHistoryListener mockedListener;
@Before
public void setUp() {
View itemView = LayoutInflater.from(RuntimeEnvironment.application).inflate(R.layout.item_initial_inventory, null, false);
viewHolder = new InitialInventoryViewHolder(itemView);
product = new ProductBuilder().setPrimaryName("Lamivudina 150mg").setCode("08S40").build();
mockedListener = mock(ViewHistoryListener.class);
}
@Test
public void shouldInitialViewHolder() throws ParseException {
InventoryViewModel viewModel = new InventoryViewModelBuilder(product)
.setChecked(false)
.setType("Embalagem")
.build();
viewHolder.populate(viewModel, queryKeyWord, mockedListener);
assertThat(viewHolder.productName.getText().toString()).isEqualTo("Lamivudina 150mg [08S40]");
assertThat(viewHolder.productUnit.getText().toString()).isEqualTo("Embalagem");
assertThat(viewHolder.tvHistoryAction.getVisibility()).isEqualTo(View.GONE);
}
@Test
public void shouldShowHistoryViewAndViewItWhenClicked() {
ViewHistoryListener mockedListener = mock(ViewHistoryListener.class);
product.setArchived(true);
InventoryViewModel viewModel = new InventoryViewModelBuilder(product)
.setChecked(false)
.setType("Embalagem")
.build();
viewHolder.populate(viewModel, queryKeyWord, mockedListener);
assertThat(viewHolder.tvHistoryAction.getVisibility()).isEqualTo(View.VISIBLE);
viewHolder.tvHistoryAction.performClick();
verify(mockedListener).viewHistory(viewModel.getStockCard());
}
}