/** * Set the card number. Method does not change text field focus. * * @param cardNumber card number to be set */ public void setCardNumber(@Nullable String cardNumber) { mCardNumberEditText.setText(cardNumber); }
/** * 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 getCardNumber_whenIncompleteCard_returnsNull() { mCardNumberEditText.setText( VALID_DINERS_CLUB_WITH_SPACES .substring(0, VALID_DINERS_CLUB_WITH_SPACES.length() - 2)); assertNull(mCardNumberEditText.getCardNumber()); }
@Test public void getCardNumber_whenValidCard_returnsCardNumberWithoutSpaces() { mCardNumberEditText.setText(VALID_VISA_WITH_SPACES); assertEquals(VALID_VISA_NO_SPACES, mCardNumberEditText.getCardNumber()); mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); assertEquals(VALID_AMEX_NO_SPACES, mCardNumberEditText.getCardNumber()); mCardNumberEditText.setText(VALID_DINERS_CLUB_WITH_SPACES); assertEquals(VALID_DINERS_CLUB_NO_SPACES, mCardNumberEditText.getCardNumber()); }
@Test public void addAmExPrefix_callsBrandListener() { for (String prefix : Card.PREFIXES_AMERICAN_EXPRESS) { // Reset inside the loop so we don't count each prefix clearInvocations(mCardBrandChangeListener); mCardNumberEditText.append(prefix); verify(mCardBrandChangeListener, times(1)).onCardBrandChanged(Card.AMERICAN_EXPRESS); mCardNumberEditText.setText(""); } }
@Test public void addMasterCardPrefix_callsBrandListener() { for (String prefix : Card.PREFIXES_MASTERCARD) { clearInvocations(mCardBrandChangeListener); mCardNumberEditText.append(prefix); verify(mCardBrandChangeListener, times(1)).onCardBrandChanged(Card.MASTERCARD); mCardNumberEditText.setText(""); } }
@Test public void addJCBPrefix_callsBrandListener() { for (String prefix : Card.PREFIXES_JCB) { clearInvocations(mCardBrandChangeListener); mCardNumberEditText.append(prefix); verify(mCardBrandChangeListener, times(1)).onCardBrandChanged(Card.JCB); mCardNumberEditText.setText(""); } }
@Test public void addDiscoverPrefix_callsBrandListener() { for (String prefix : Card.PREFIXES_DISCOVER) { clearInvocations(mCardBrandChangeListener); mCardNumberEditText.append(prefix); verify(mCardBrandChangeListener, times(1)).onCardBrandChanged(Card.DISCOVER); mCardNumberEditText.setText(""); } }
@Test public void setText_whenTextIsValidAmExDinersClubLengthNumber_changesCardValidState() { mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); assertTrue(mCardNumberEditText.isCardNumberValid()); verify(mCardNumberCompleteListener, times(1)).onCardNumberComplete(); }
@Test public void getCard_whenInputHasIncompleteCardNumber_returnsNull() { // The test will be testing the wrong variable after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); // This will be 242 4242 4242 4242 mCardNumberEditText.setText(VALID_VISA_WITH_SPACES.substring(1)); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("123"); Card card = mCardInputWidget.getCard(); assertNull(card); }
@Test public void deleteWhenEmpty_fromPostalCode_shiftsToCvc() { mCardMultilineWidget.setCardInputListener(mFullCardListener); mFullGroup.cardNumberEditText.setText(VALID_DINERS_CLUB_WITH_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); reset(mFullCardListener); ViewTestUtils.sendDeleteKeyEvent(mFullGroup.postalCodeEditText); verify(mFullCardListener, times(1)).onFocusChange(FOCUS_CVC); assertEquals("12", mFullGroup.cvcEditText.getText().toString()); }
@Test public void getCard_whenInputHasExpiredDate_returnsNull() { // The test will be testing the wrong variable after 2080. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2080); mCardNumberEditText.setText(VALID_VISA_WITH_SPACES); // Date interpreted as 12/2012 until 2080, when it will be 12/2112 mExpiryEditText.append("12"); mExpiryEditText.append("12"); mCvcEditText.append("123"); Card card = mCardInputWidget.getCard(); assertNull(card); }
@Test public void getCard_when3DigitCvCForAmEx_returnsCard() { // The test will be testing the wrong variable after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("123"); Card card = mCardInputWidget.getCard(); assertNotNull(card); }
@Test public void getCardNumber_whenValidNumberIsChangedToInvalid_returnsNull() { mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); ViewTestUtils.sendDeleteKeyEvent(mCardNumberEditText); assertNull(mCardNumberEditText.getCardNumber()); } }
@Test public void getCard_whenIncompleteCvCForAmEx_returnsNull() { // The test will be testing the wrong variable after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("12"); Card card = mCardInputWidget.getCard(); assertNull(card); }
@Test public void getCard_whenIncompleteCvCForDiners_returnsNull() { // The test will be testing the wrong variable after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mCardNumberEditText.setText(VALID_DINERS_CLUB_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("12"); Card card = mCardInputWidget.getCard(); assertNull(card); }
@Before public void setup() { MockitoAnnotations.initMocks(this); ActivityController<CardInputTestActivity> activityController = Robolectric.buildActivity(CardInputTestActivity.class).create().start(); mCardNumberEditText = activityController.get().getCardNumberEditText(); mCardNumberEditText.setText(""); mCardNumberEditText.setCardNumberCompleteListener(mCardNumberCompleteListener); mCardNumberEditText.setCardBrandChangeListener(mCardBrandChangeListener); }
@Test public void finishTypingAmEx_whenInvalid_setsErrorValueAndRemovesItAppropriately() { String notQuiteValid = VALID_AMEX_WITH_SPACES.substring(0, 16) + "3"; mCardNumberEditText.setText(notQuiteValid); assertTrue(mCardNumberEditText.getShouldShowError()); // Now that we're in an error state, back up by one ViewTestUtils.sendDeleteKeyEvent(mCardNumberEditText); assertFalse(mCardNumberEditText.getShouldShowError()); mCardNumberEditText.append("5"); assertFalse(mCardNumberEditText.getShouldShowError()); }
@Test public void finishTypingDinersClub_whenInvalid_setsErrorValueAndRemovesItAppropriately() { String notQuiteValid = VALID_DINERS_CLUB_WITH_SPACES.substring(0, 16) + "3"; mCardNumberEditText.setText(notQuiteValid); assertTrue(mCardNumberEditText.getShouldShowError()); // Now that we're in an error state, back up by one ViewTestUtils.sendDeleteKeyEvent(mCardNumberEditText); assertFalse(mCardNumberEditText.getShouldShowError()); mCardNumberEditText.append("4"); assertFalse(mCardNumberEditText.getShouldShowError()); }
@Test public void onDeleteFromExpiryDate_whenNotEmpty_doesNotShiftFocusOrDeleteDigit() { mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); assertTrue(mExpiryEditText.hasFocus()); mExpiryEditText.append("1"); ViewTestUtils.sendDeleteKeyEvent(mExpiryEditText); assertTrue(mExpiryEditText.hasFocus()); assertEquals(VALID_AMEX_WITH_SPACES, mCardNumberEditText.getText().toString()); }