@Test public void shouldEnableIssueAndRequestedEditTextWhenChoseIssueMovementTypeWhenToggleIsOn() throws ParseException, LMISException { StockMovementViewHolder stockMovementViewHolder = new StockMovementViewHolder(itemView, mockedListener); viewModel.setDraft(true); stockMovementViewHolder.populate(viewModel, stockCard); stockMovementViewHolder.txMovementDate.setText(""); StockMovementViewHolder.MovementSelectListener listener = stockMovementViewHolder.new MovementSelectListener(viewModel); MovementReasonManager.MovementReason receiveReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.ISSUE, "ISSUE_1", "issue description"); listener.onComplete(receiveReason); assertFalse(stockMovementViewHolder.etReceived.isEnabled()); assertFalse(stockMovementViewHolder.etPositiveAdjustment.isEnabled()); assertFalse(stockMovementViewHolder.etNegativeAdjustment.isEnabled()); assertTrue(stockMovementViewHolder.etIssued.isEnabled()); assertTrue(stockMovementViewHolder.etRequested.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 shouldOnlyEnableCurrentSelectedEditTextWhenChoseMovementTypeWhenToggleIsOn() throws ParseException, LMISException { viewModel.setDraft(true); viewHolder.populate(viewModel, stockCard); viewHolder.txMovementDate.setText(""); StockMovementViewHolder.MovementSelectListener listener = viewHolder.new MovementSelectListener(viewModel); MovementReasonManager.MovementReason receiveReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.RECEIVE, "DON", "Donations"); listener.onComplete(receiveReason); assertTrue(viewHolder.etReceived.isEnabled()); assertFalse(viewHolder.etPositiveAdjustment.isEnabled()); assertFalse(viewHolder.etNegativeAdjustment.isEnabled()); assertFalse(viewHolder.etIssued.isEnabled()); assertFalse(viewHolder.etRequested.isEnabled()); MovementReasonManager.MovementReason positiveReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.POSITIVE_ADJUST, "POSITIVE", "BOUGHT"); listener.onComplete(positiveReason); assertFalse(viewHolder.etReceived.isEnabled()); assertTrue(viewHolder.etPositiveAdjustment.isEnabled()); assertFalse(viewHolder.etNegativeAdjustment.isEnabled()); assertFalse(viewHolder.etIssued.isEnabled()); assertFalse(viewHolder.etRequested.isEnabled()); }
@Test public void shouldEnableIssueEditTextWhenModelWithIssueType() { viewModel.setDraft(true); viewHolder.populate(viewModel, stockCard); assertTrue(viewHolder.etIssued.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 shouldResetTextColorWhenReselectReason() { viewHolder.populate(viewModel, stockCard); StockMovementViewHolder.MovementSelectListener listener = viewHolder.new MovementSelectListener(viewModel); MovementReasonManager.MovementReason receiveReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.POSITIVE_ADJUST, "INVENTORY_POSITIVE", "Inventory description..."); listener.onComplete(receiveReason); assertThat( viewHolder.txReason.getCurrentTextColor(), is(RuntimeEnvironment.application.getResources().getColor(R.color.color_red))); MovementReasonManager.MovementReason issueReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.ISSUE, "PAV", "PAV Description"); listener.onComplete(issueReason); assertThat( viewHolder.txReason.getCurrentTextColor(), is(RuntimeEnvironment.application.getResources().getColor(R.color.color_black))); }
@Test public void shouldEnableMovementTypeAndReasonIfModelIsDraft() { viewModel.setDraft(true); viewHolder.populate(viewModel, stockCard); assertTrue(viewHolder.txMovementDate.isEnabled()); assertTrue(viewHolder.txReason.isEnabled()); }
@Test public void shouldSetValueAfterTextChange() { viewHolder.populate(viewModel, stockCard); viewHolder.etIssued.setText("30"); assertEquals("30", viewModel.getIssued()); assertEquals("70", viewModel.getStockExistence()); assertEquals("70", viewHolder.txStockExistence.getText().toString()); }
@Test public void shouldHideUnderline() { viewHolder.populate(viewModel, stockCard); assertNull(viewHolder.etIssued.getBackground()); assertNull(viewHolder.etPositiveAdjustment.getBackground()); assertNull(viewHolder.etNegativeAdjustment.getBackground()); assertNull(viewHolder.etReceived.getBackground()); assertNull(viewHolder.etDocumentNo.getBackground()); }
@Test public void shouldValidateMovementDateOnSelectionAndShowToastIfInvalid() throws ParseException, LMISException { viewHolder.populate(viewModel, stockCard); StockMovementViewHolder.MovementDateListener movementDateListener = viewHolder.new MovementDateListener(viewModel, new Date()); movementDateListener.onDateSet(mock(DatePicker.class), 2015, 11, 10); assertNotNull(ShadowToast.getLatestToast()); }
@Test public void shouldShowMovementDateDialogOnClick() { viewModel.setDraft(true); viewHolder.populate(viewModel, stockCard); viewHolder.txMovementDate.performClick(); DatePickerDialog datePickerDialog = (DatePickerDialog) ShadowDatePickerDialog.getLatestDialog(); assertNotNull(datePickerDialog); }
@Test public void shouldShowMovementTypeDialogOnClick() { viewModel.setDraft(true); viewHolder.populate(viewModel, stockCard); viewHolder.txReason.performClick(); AlertDialog typeDialog = ShadowAlertDialog.getLatestAlertDialog(); assertNotNull(typeDialog); }
@Test public void shouldDisableLineWhenPopulatingData() { viewHolder.populate(viewModel, stockCard); assertFalse(viewHolder.etDocumentNo.isEnabled()); assertFalse(viewHolder.etReceived.isEnabled()); assertFalse(viewHolder.etNegativeAdjustment.isEnabled()); assertFalse(viewHolder.etPositiveAdjustment.isEnabled()); assertFalse(viewHolder.etIssued.isEnabled()); }
@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 shouldValidateMovementDateOnSelectionAnd() throws ParseException, LMISException { viewHolder.populate(viewModel, stockCard); StockMovementViewHolder.MovementDateListener movementDateListener = viewHolder .new MovementDateListener(viewModel, DateUtil.parseString("11-11-2015", "MM-dd-YYYY")); movementDateListener.onDateSet(mock(DatePicker.class), 2015, 10, 15); assertEquals("15 Nov 2015", viewHolder.txMovementDate.getText().toString()); assertEquals("15 Nov 2015", viewModel.getMovementDate()); assertNull(ShadowToast.getLatestToast()); }
@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 shouldClearDocumentNumberWhenReselectReason() { viewHolder.populate(viewModel, stockCard); viewHolder.etDocumentNo.setText("888"); StockMovementViewHolder.MovementSelectListener listener = viewHolder.new MovementSelectListener(viewModel); MovementReasonManager.MovementReason receiveReason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.RECEIVE, "DON", "Donations"); listener.onComplete(receiveReason); assertThat(viewHolder.etDocumentNo.getText().toString(), is("")); }
@Test public void shouldPopulateTextDataWhenPopulatingData() { viewModel.setRequested("999"); viewHolder.populate(viewModel, stockCard); assertEquals("12345", viewHolder.etDocumentNo.getText().toString()); assertEquals("2015-11-11", viewHolder.txMovementDate.getText().toString()); assertEquals("", viewHolder.etReceived.getText().toString()); assertEquals("", viewHolder.etNegativeAdjustment.getText().toString()); assertEquals("", viewHolder.etPositiveAdjustment.getText().toString()); assertEquals("30", viewHolder.etIssued.getText().toString()); assertEquals("70", viewHolder.txStockExistence.getText().toString()); assertEquals("999", viewHolder.etRequested.getText().toString()); assertEquals("issue description", viewHolder.txReason.getText().toString()); }
@Test public void shouldGetLatestMovementDateAsThePreviousMovementDate() throws ParseException { StockCard stockCard = new StockCard(); StockMovementItem stockMovementItem1 = new StockMovementItemBuilder().withMovementDate("2015-10-10").build(); StockMovementItem stockMovementItem2 = new StockMovementItemBuilder().withMovementDate("2015-11-12").build(); StockMovementItem stockMovementItem3 = new StockMovementItemBuilder().withMovementDate("2015-09-10").build(); stockCard.setStockMovementItemsWrapper( newArrayList(stockMovementItem1, stockMovementItem2, stockMovementItem3)); Date previousMovementDate = viewHolder.getPreviousMovementDate(stockCard); assertThat(DateUtil.formatDate(previousMovementDate), is("12 Nov 2015")); }
@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()); }
@Test public void shouldSetReasonAndDateOnComplete() { MovementReasonManager.MovementReason reason = new MovementReasonManager.MovementReason( MovementReasonManager.MovementType.RECEIVE, "DON", "Donations"); String today = DateUtil.formatDate(new Date()); viewHolder.populate(viewModel, stockCard); viewHolder.txMovementDate.setText(""); viewHolder.etIssued.setText("100"); StockMovementViewHolder.MovementSelectListener listener = viewHolder.new MovementSelectListener(viewModel); listener.onComplete(reason); assertEquals(reason.getDescription(), viewHolder.txReason.getText().toString()); assertEquals(reason.getDescription(), viewModel.getReason().getDescription()); assertEquals(today, viewHolder.txMovementDate.getText().toString()); assertEquals(today, viewModel.getMovementDate()); assertTrue(viewHolder.etReceived.isEnabled()); assertEquals(viewHolder.etIssued.getText().toString(), ""); verify(mockedListener).movementChange(); }