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.manager.MovementReasonManager; import org.openlmis.core.manager.MovementReasonManager.MovementReason; import org.openlmis.core.model.builder.StockMovementViewModelBuilder; import org.openlmis.core.view.viewmodel.StockMovementViewModel; import org.robolectric.RuntimeEnvironment; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; @RunWith(LMISTestRunner.class) public class StockMovementItemHistoryViewHolderTest { private StockMovementItemHistoryViewHolder viewHolder; private StockMovementViewModel viewModel; @Before public void setUp() { View itemView = LayoutInflater.from(RuntimeEnvironment.application).inflate(R.layout.item_stock_movement, null, false); viewHolder = new StockMovementItemHistoryViewHolder(itemView); viewModel = new StockMovementViewModelBuilder().withIssued("100") .withMovementDate("2011-11-11") .withDocumentNo("12345") .withNegativeAdjustment(null) .withPositiveAdjustment(null) .withIssued("100") .withReceived(null) .withStockExistence("200") .withMovementReason(new MovementReason(MovementReasonManager.MovementType.ISSUE, "ISSUE_1", "issue description")).build(); } @Test public void shouldPopulateTextDataWhenPopulatingData() { viewModel.setRequested("999"); viewHolder.populate(viewModel); assertEquals("12345", viewHolder.etDocumentNo.getText().toString()); assertEquals("2011-11-11", viewHolder.txMovementDate.getText().toString()); assertEquals("", viewHolder.etReceived.getText().toString()); assertEquals("", viewHolder.etNegativeAdjustment.getText().toString()); assertEquals("", viewHolder.etPositiveAdjustment.getText().toString()); assertEquals("100", viewHolder.etIssued.getText().toString()); assertEquals("999", viewHolder.etRequested.getText().toString()); assertEquals("200", viewHolder.txStockExistence.getText().toString()); assertEquals("issue description", viewHolder.txReason.getText().toString()); } @Test public void shouldDisableLineWhenPopulatingData() { viewHolder.populate(viewModel); assertFalse(viewHolder.etDocumentNo.isEnabled()); assertFalse(viewHolder.etReceived.isEnabled()); assertFalse(viewHolder.etNegativeAdjustment.isEnabled()); assertFalse(viewHolder.etPositiveAdjustment.isEnabled()); assertFalse(viewHolder.etIssued.isEnabled()); } @Test public void shouldHideUnderlineAndDisableLine(){ viewHolder.populate(viewModel); assertNull(viewHolder.etIssued.getBackground()); assertNull(viewHolder.etRequested.getBackground()); assertNull(viewHolder.etPositiveAdjustment.getBackground()); assertNull(viewHolder.etNegativeAdjustment.getBackground()); assertNull(viewHolder.etReceived.getBackground()); assertNull(viewHolder.etDocumentNo.getBackground()); assertFalse(viewHolder.etIssued.isEnabled()); assertFalse(viewHolder.etRequested.isEnabled()); assertFalse(viewHolder.etPositiveAdjustment.isEnabled()); assertFalse(viewHolder.etNegativeAdjustment.isEnabled()); assertFalse(viewHolder.etReceived.isEnabled()); assertFalse(viewHolder.etDocumentNo.isEnabled()); } @Test public void shouldSetPhysicalInventoryFontColorToRed() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.PHYSICAL_INVENTORY, "INVENTORY", "")); viewHolder.populate(viewModel); int redColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_red); assertEquals(redColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(redColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(redColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(redColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(redColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.txStockExistence.getCurrentTextColor()); } @Test public void shouldSetNegativeInventoryAdjustmentFontColorToRed() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.NEGATIVE_ADJUST, MovementReasonManager.INVENTORY_NEGATIVE, "")); viewHolder.populate(viewModel); int redColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_red); assertEquals(redColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(redColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(redColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(redColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(redColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.txStockExistence.getCurrentTextColor()); } @Test public void shouldSetPositiveInventoryAdjustmentFontColorToRed() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.POSITIVE_ADJUST, MovementReasonManager.INVENTORY_POSITIVE, "")); viewHolder.populate(viewModel); int redColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_red); assertEquals(redColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(redColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(redColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(redColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(redColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.txStockExistence.getCurrentTextColor()); } @Test public void shouldSetReceiveFontColorToRed() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.RECEIVE, "RECEIVE", "")); viewModel.setReceived("123"); viewModel.setIssued(null); viewHolder.populate(viewModel); int redColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_red); assertEquals(redColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(redColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(redColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(redColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(redColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.txStockExistence.getCurrentTextColor()); } @Test public void shouldSetFontColorToRedIfReasonIsNotIssue() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.POSITIVE_ADJUST, "positive_adjust", "")); viewModel.setIssued(null); viewModel.setPositiveAdjustment("123"); viewHolder.populate(viewModel); int redColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_red); assertEquals(redColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(redColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(redColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(redColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(redColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(redColor, viewHolder.txStockExistence.getCurrentTextColor()); } @Test public void shouldSetFontColorToBlackIfReasonIsIssue() { viewModel.setReason(new MovementReason(MovementReasonManager.MovementType.ISSUE, "Issued", "")); viewModel.setIssued("123"); viewHolder.populate(viewModel); int blackColor = RuntimeEnvironment.application.getResources().getColor(R.color.color_black); assertEquals(blackColor, viewHolder.txMovementDate.getCurrentTextColor()); assertEquals(blackColor, viewHolder.txReason.getCurrentTextColor()); assertEquals(blackColor, viewHolder.etDocumentNo.getCurrentTextColor()); assertEquals(blackColor, viewHolder.etReceived.getCurrentTextColor()); assertEquals(blackColor, viewHolder.etPositiveAdjustment.getCurrentTextColor()); assertEquals(blackColor, viewHolder.etNegativeAdjustment.getCurrentTextColor()); assertEquals(blackColor, viewHolder.txStockExistence.getCurrentTextColor()); } }