/** * Set the card number. Method does not change text field focus. * * @param cardNumber card number to be set */ public void setCardNumber(String cardNumber) { mCardNumberEditText.setText(cardNumber); setCardNumberIsViewed(!mCardNumberEditText.isCardNumberValid()); }
@Test public void setText_whenTextIsInvalidCommonLengthNumber_doesNotNotifyListener() { // This creates a full-length but not valid number: 4242 4242 4242 4243 String almostValid = VALID_VISA_WITH_SPACES.substring(0, 18) + "3"; mCardNumberEditText.setText(almostValid); assertFalse(mCardNumberEditText.isCardNumberValid()); verifyZeroInteractions(mCardNumberCompleteListener); }
@Test public void setText_whenTextIsValidAmExDinersClubLengthNumber_changesCardValidState() { mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); assertTrue(mCardNumberEditText.isCardNumberValid()); verify(mCardNumberCompleteListener, times(1)).onCardNumberComplete(); }
@Test public void setText_whenTextChangesFromValidToInvalid_changesCardValidState() { mCardNumberEditText.setText(VALID_VISA_WITH_SPACES); // Simply setting the value interacts with this mock once -- that is tested elsewhere reset(mCardNumberCompleteListener); String mutable = mCardNumberEditText.getText().toString(); // Removing a single character should make this invalid mutable = mutable.substring(0, 18); mCardNumberEditText.setText(mutable); assertFalse(mCardNumberEditText.isCardNumberValid()); verifyZeroInteractions(mCardNumberCompleteListener); }
@Test public void setText_whenTextIsValidCommonLengthNumber_changesCardValidState() { mCardNumberEditText.setText(VALID_VISA_WITH_SPACES); assertTrue(mCardNumberEditText.isCardNumberValid()); verify(mCardNumberCompleteListener, times(1)).onCardNumberComplete(); }
@Test public void setText_whenTextIsSpacelessValidNumber_changesToSpaceNumberAndValidates() { mCardNumberEditText.setText(VALID_VISA_NO_SPACES); assertTrue(mCardNumberEditText.isCardNumberValid()); verify(mCardNumberCompleteListener, times(1)).onCardNumberComplete(); }
@Test public void setCardNumber_withIncompleteNumber_doesNotValidateCard() { mCardInputWidget.setCardNumber("123456"); assertFalse(mCardNumberEditText.isCardNumberValid()); assertTrue(mCardNumberEditText.hasFocus()); }