@Test public void addText_callsAppropriateListeners() { mEditText.append("1"); verifyZeroInteractions(mDeleteEmptyListener); verify(mAfterTextChangedListener, times(1)).onTextChanged("1"); }
@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 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); }
@Test public void getCard_whenIncompleteCvCForVisa_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_VISA_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("50"); mCvcEditText.append("12"); Card card = mCardInputWidget.getCard(); assertNull(card); }
@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_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 deleteText_whenNonZeroLength_callsAppropriateListeners() { mEditText.append("1"); reset(mAfterTextChangedListener); ViewTestUtils.sendDeleteKeyEvent(mEditText); verifyZeroInteractions(mDeleteEmptyListener); verify(mAfterTextChangedListener, times(1)).onTextChanged(""); }
@Test public void deleteText_whenDeletingMultipleItems_onlyCallsListenerOneTime() { mEditText.append("123"); // Doing this four times because we need to delete all three items, then jump back. for (int i = 0; i < 4; i++) { ViewTestUtils.sendDeleteKeyEvent(mEditText); } verify(mDeleteEmptyListener, times(1)).onDeleteEmpty(); }
@Test public void deleteText_whenSelectionAtBeginningButLengthNonZero_doesNotCallListener() { mEditText.append("12"); verify(mAfterTextChangedListener).onTextChanged("12"); mEditText.setSelection(0); ViewTestUtils.sendDeleteKeyEvent(mEditText); verifyZeroInteractions(mDeleteEmptyListener); verifyNoMoreInteractions(mAfterTextChangedListener); }
@Test public void onDeleteFromCvcDate_whenNotEmpty_doesNotShiftFocusOrDeleteEntry() { // This test will be invalid if run between 2080 and 2112. Please update the code. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2080); mCardNumberEditText.setText(VALID_AMEX_WITH_SPACES); mExpiryEditText.append("12"); mExpiryEditText.append("79"); assertTrue(mCvcEditText.hasFocus()); mCvcEditText.append("123"); ViewTestUtils.sendDeleteKeyEvent(mCvcEditText); assertTrue(mCvcEditText.hasFocus()); assertEquals("12/79", mExpiryEditText.getText().toString()); }
@Test public void softEnterKey_whenDataIsNotValid_doesNotHideKeyboardAndDoesNotFinish() { setUpForLocalTest(); // Note: these values do not match what is being mock-sent back in the result. mWidgetControlGroup.cardNumberEditText.append(CardInputTestActivity.VALID_AMEX_NO_SPACES); mWidgetControlGroup.expiryDateEditText.append("12"); mWidgetControlGroup.expiryDateEditText.append("50"); mWidgetControlGroup.cvcEditText.append("12"); PaymentConfiguration.init("pk_test_abc123"); MenuItem menuItem = mock(MenuItem.class); when(menuItem.getItemId()).thenReturn(R.id.action_save); assertEquals(View.GONE, mProgressBar.getVisibility()); mWidgetControlGroup.cvcEditText.onEditorAction(EditorInfo.IME_ACTION_DONE); verify(mStripe,never()).createSource( any(SourceParams.class), any(SourceCallback.class)); }
@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 clear_whenZipRequiredAndAllFieldsEntered_clearsAllfields() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mFullGroup.cardNumberEditText.setText(VALID_VISA_WITH_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); mFullGroup.postalCodeEditText.append("12345"); mCardMultilineWidget.clear(); assertEquals("", mFullGroup.cardNumberEditText.getText().toString()); assertEquals("", mFullGroup.expiryDateEditText.getText().toString()); assertEquals("", mFullGroup.cvcEditText.getText().toString()); assertEquals("", mFullGroup.postalCodeEditText.getText().toString()); }
@Test public void setCardNumber_whenHasSpaces_canCreateValidCard() { mCardMultilineWidget.setCardNumber(VALID_VISA_NO_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); mFullGroup.postalCodeEditText.append("12345"); Card card = mCardMultilineWidget.getCard(); assertNotNull(card); assertEquals(VALID_VISA_NO_SPACES, card.getNumber()); }
@Test public void getCard_whenInputIsValidVisaButInputHasNoZip_returnsNull() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); mFullGroup.cardNumberEditText.setText(VALID_VISA_WITH_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); Card card = mCardMultilineWidget.getCard(); assertNull(card); }
@Test public void setCardNumber_whenHasNoSpaces_canCreateValidCard() { mCardMultilineWidget.setCardNumber(VALID_VISA_WITH_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); mFullGroup.postalCodeEditText.append("12345"); Card card = mCardMultilineWidget.getCard(); assertNotNull(card); assertEquals(VALID_VISA_NO_SPACES, card.getNumber()); }
@Test public void onCompleteCvc_whenValid_shiftsFocusOnlyIfPostalCodeShown() { mCardMultilineWidget.setCardInputListener(mFullCardListener); mNoZipCardMultilineWidget.setCardInputListener(mNoZipCardListener); mFullGroup.cardNumberEditText.setText(VALID_VISA_WITH_SPACES); mFullGroup.expiryDateEditText.append("12"); mFullGroup.expiryDateEditText.append("50"); mFullGroup.cvcEditText.append("123"); verify(mFullCardListener, times(1)).onCvcComplete(); verify(mFullCardListener, times(1)).onFocusChange(FOCUS_POSTAL); assertTrue(mFullGroup.postalCodeEditText.hasFocus()); mNoZipGroup.cardNumberEditText.setText(VALID_VISA_WITH_SPACES); mNoZipGroup.expiryDateEditText.append("12"); mNoZipGroup.expiryDateEditText.append("50"); mNoZipGroup.cvcEditText.append("123"); verify(mNoZipCardListener, times(1)).onCvcComplete(); verify(mNoZipCardListener, times(0)).onFocusChange(FOCUS_POSTAL); assertTrue(mNoZipGroup.cvcEditText.hasFocus()); }
@Test public void getCard_whenInputIsValidDinersClub_returnsCardObjectWithLoggingToken() { // The input date here will be invalid 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("123"); Card card = mCardInputWidget.getCard(); assertNotNull(card); assertEquals(VALID_DINERS_CLUB_NO_SPACES, card.getNumber()); assertNotNull(card.getExpMonth()); assertNotNull(card.getExpYear()); assertEquals(12, card.getExpMonth().intValue()); assertEquals(2050, card.getExpYear().intValue()); assertEquals("123", card.getCVC()); assertTrue(card.validateCard()); assertArrayEquals(EXPECTED_LOGGING_ARRAY, card.getLoggingTokens().toArray()); }
@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()); }