boolean validateCard(@NonNull Calendar now) { if (cvc == null) { return validateNumber() && validateExpiryDate(now); } else { return validateNumber() && validateExpiryDate(now) && validateCVC(); } }
@Test public void shouldFailValidateNumberIfContainsLetters() { Card card = new Card("424242424242a4242", null, null, null); assertFalse(card.validateNumber()); }
@Test public void canInitializeWithMinimalArguments() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "123"); assertTrue(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfBlank() { Card card = new Card("", null, null, null); assertFalse(card.validateNumber()); }
@Test public void shouldPassValidateNumberDashes() { Card card = new Card("4242-4242-4242-4242", null, null, null); assertTrue(card.validateNumber()); }
@Test public void shouldPassValidateNumberIfLuhnNumber() { Card card = new Card("4242-4242-4242-4242", null, null, null); assertTrue(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfNotLuhnNumber() { Card card = new Card("4242-4242-4242-4241", null, null, null); assertFalse(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfWithDot() { Card card = new Card("4242.4242.4242.4242", null, null, null); assertFalse(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfJustSpaces() { Card card = new Card(" ", null, null, null); assertFalse(card.validateNumber()); }
@Test public void shouldPassValidateNumberSpaces() { Card card = new Card("4242 4242 4242 4242", null, null, null); assertTrue(card.validateNumber()); }
@Test public void shouldPassValidateNumberIfLuhnNumberAmex() { Card card = new Card("378282246310005", null, null, null); assertEquals(Card.AMERICAN_EXPRESS, card.getBrand()); assertTrue(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfTooLong() { Card card = new Card("4242 4242 4242 4242 6", null, null, null); assertEquals(Card.VISA, card.getBrand()); assertFalse(card.validateNumber()); }
@Test public void shouldPassValidateCardWithNullCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, null); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithShortCVC() { Card card = new Card("378282246310005", 12, 2050, "12"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithBadCVC() { Card card = new Card("378282246310005", 12, 2050, "bad"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardIfNotLuhnNumber() { Card card = new Card("4242-4242-4242-4241", 12, 2050, "123"); assertFalse(card.validateCard()); assertFalse(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCardVisaWithShortCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "12"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardVisaWithLongCVC() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "1234"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCardAmexWithNullCVC() { Card card = new Card("378282246310005", 12, 2050, null); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateCardAmexWithLongCVC() { Card card = new Card("378282246310005", 12, 2050, "12345"); assertFalse(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertFalse(card.validateCVC()); }