@Test public void inputCompleteDate_whenInPast_showsInvalid() { // This test will be invalid if run between 2080 and 2112. Please update the code. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2080); // Date translates to December, 2012 UNTIL the 2080, at which point it translates to // December, 2112. Also, this simulates a PASTE action. mExpiryDateEditText.append("1212"); assertTrue(mExpiryDateEditText.getShouldShowError()); verifyZeroInteractions(mExpiryDateEditListener); }
@Test public void inputCompleteDateInPast_thenDelete_showsValid() { // This test will be invalid if run between 2080 and 2112. Please update the code. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2080); // Date translates to December, 2012 UNTIL the 2080, at which point it translates to // December, 2112. mExpiryDateEditText.append("12/12"); assertTrue(mExpiryDateEditText.getShouldShowError()); ViewTestUtils.sendDeleteKeyEvent(mExpiryDateEditText); assertEquals("12/1", mExpiryDateEditText.getText().toString()); assertFalse(mExpiryDateEditText.getShouldShowError()); // The date is no longer "in error", but it still shouldn't have triggered the listener. verifyZeroInteractions(mExpiryDateEditListener); }
@Test public void inputZero_whenEmpty_doesNotShowErrorState() { mExpiryDateEditText.append("0"); assertFalse(mExpiryDateEditText.getShouldShowError()); assertEquals("0", mExpiryDateEditText.getText().toString()); }
@Test public void inputOne_whenEmpty_doesNotShowErrorState() { mExpiryDateEditText.append("1"); assertFalse(mExpiryDateEditText.getShouldShowError()); assertEquals("1", mExpiryDateEditText.getText().toString()); }
@Test public void inputTwoDigitMonth_whenInvalid_showsErrorAndDoesNotAddSlash() { mExpiryDateEditText.append("14"); assertTrue(mExpiryDateEditText.getShouldShowError()); assertEquals("14", mExpiryDateEditText.getText().toString()); }
@Test public void inputThreeDigits_whenInvalid_showsErrorAndDoesAddSlash() { mExpiryDateEditText.append("143"); assertTrue(mExpiryDateEditText.getShouldShowError()); assertEquals("14/3", mExpiryDateEditText.getText().toString()); }
@Test public void inputMultipleValidDigits_whenEmpty_doesNotPrependZeroOrShowErrorState() { mExpiryDateEditText.append("11"); String text = mExpiryDateEditText.getText().toString(); assertEquals("11/", text); assertFalse(mExpiryDateEditText.getShouldShowError()); assertEquals(3, mExpiryDateEditText.getSelectionStart()); }
@Test public void clear_whenFieldsInErrorState_clearsFieldsAndHidesErrors() { // The input date here will be invalid after 2050. Please update the test. assertTrue(Calendar.getInstance().get(Calendar.YEAR) < 2050); String badVisa = VALID_VISA_WITH_SPACES.substring(VALID_VISA_WITH_SPACES.length() - 1); badVisa += 3; // Makes this 4242 4242 4242 4243 mFullGroup.cardNumberEditText.setText(badVisa); mFullGroup.expiryDateEditText.append("01"); mFullGroup.expiryDateEditText.append("11"); mFullGroup.cvcEditText.append("12"); mFullGroup.postalCodeEditText.append("1234"); mCardMultilineWidget.validateAllFields(); assertTrue(mFullGroup.cardNumberEditText.getShouldShowError()); assertTrue(mFullGroup.expiryDateEditText.getShouldShowError()); assertTrue(mFullGroup.cvcEditText.getShouldShowError()); assertTrue(mFullGroup.postalCodeEditText.getShouldShowError()); mCardMultilineWidget.clear(); assertFalse(mFullGroup.cardNumberEditText.getShouldShowError()); assertFalse(mFullGroup.expiryDateEditText.getShouldShowError()); assertFalse(mFullGroup.cvcEditText.getShouldShowError()); assertFalse(mFullGroup.postalCodeEditText.getShouldShowError()); }