@Test
  public void shouldEnableReceivedEditTextWhenModelWithReceivedType() {
    MovementReasonManager.MovementReason receivedReason =
        new MovementReasonManager.MovementReason(
            MovementReasonManager.MovementType.RECEIVE, "RECEIVE_1", "receive description");
    viewModel.setDraft(true);
    viewModel.setReason(receivedReason);
    viewHolder.populate(viewModel, stockCard);

    assertTrue(viewHolder.etReceived.isEnabled());
  }
  @Test
  public void shouldResetTxReasonValueWhenReuseViewModel() {
    viewHolder.populate(viewModel, stockCard);

    assertEquals(viewHolder.txReason.getText().toString(), "issue description");

    viewModel.setDraft(true);
    viewModel.setReason(null);
    viewHolder.populate(viewModel, stockCard);

    assertEquals(viewHolder.txReason.getText().toString(), "");
  }
  @Test
  public void shouldEnablePositiveAdjustmentEditTextWhenModelWithPositiveAdjustmentType() {
    MovementReasonManager.MovementReason positiveReason =
        new MovementReasonManager.MovementReason(
            MovementReasonManager.MovementType.POSITIVE_ADJUST,
            "POSITIVE_1",
            "positive adjustment description");
    viewModel.setDraft(true);
    viewModel.setReason(positiveReason);
    viewHolder.populate(viewModel, stockCard);

    assertTrue(viewHolder.etPositiveAdjustment.isEnabled());
  }
  @Test
  public void shouldNotClearInputWhenRotate() {
    viewHolder.populate(viewModel, stockCard);
    MovementReasonManager.MovementReason positiveReason =
        new MovementReasonManager.MovementReason(
            MovementReasonManager.MovementType.POSITIVE_ADJUST,
            "POSITIVE_1",
            "positive adjustment description");
    viewModel.setDraft(true);
    viewModel.setReason(positiveReason);
    viewHolder.etPositiveAdjustment.setText("10");

    viewHolder.populate(viewModel, stockCard);

    assertThat(viewHolder.etPositiveAdjustment.getText().toString(), is("10"));
  }
  @Test
  public void shouldSetFontColorBlackIfIssueAdjustment() {
    viewModel.setReason(
        new MovementReasonManager.MovementReason(
            MovementReasonManager.MovementType.ISSUE, "ISSUE_1", "issue description"));
    viewHolder.populate(viewModel, stockCard);

    int black = RuntimeEnvironment.application.getResources().getColor(R.color.color_black);

    assertEquals(black, viewHolder.txMovementDate.getCurrentTextColor());
    assertEquals(black, viewHolder.txReason.getCurrentTextColor());
    assertEquals(black, viewHolder.etDocumentNo.getCurrentTextColor());
    assertEquals(black, viewHolder.etReceived.getCurrentTextColor());
    assertEquals(black, viewHolder.etPositiveAdjustment.getCurrentTextColor());
    assertEquals(black, viewHolder.etNegativeAdjustment.getCurrentTextColor());
    assertEquals(black, viewHolder.txStockExistence.getCurrentTextColor());
  }
  @Test
  public void shouldSetFontColorRedIfNotIssueAdjustment() {
    viewModel.setReason(
        new MovementReasonManager.MovementReason(
            MovementReasonManager.MovementType.NEGATIVE_ADJUST,
            "negative_adjust",
            "negative_adjust description"));
    viewHolder.populate(viewModel, stockCard);

    int red = RuntimeEnvironment.application.getResources().getColor(R.color.color_red);

    assertEquals(red, viewHolder.txMovementDate.getCurrentTextColor());
    assertEquals(red, viewHolder.txReason.getCurrentTextColor());
    assertEquals(red, viewHolder.etDocumentNo.getCurrentTextColor());
    assertEquals(red, viewHolder.etReceived.getCurrentTextColor());
    assertEquals(red, viewHolder.etPositiveAdjustment.getCurrentTextColor());
    assertEquals(red, viewHolder.etNegativeAdjustment.getCurrentTextColor());
    assertEquals(red, viewHolder.txStockExistence.getCurrentTextColor());
  }