@Test public void canInitializeWithMinimalArguments() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "123"); assertTrue(card.validateNumber()); }
@Test public void testTypeReturnsCorrectlyForVisaCard() { Card card = new Card("4112123412341234", null, null, null); assertEquals(Card.VISA, card.getBrand()); }
@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 shouldFailValidateCVCIfNull() { Card card = new Card(null, null, null, null); assertFalse(card.validateCVC()); }
@Test public void shouldPassValidateCVCIfVisaAndLength3() { Card card = new Card("4242 4242 4242 4242", null, null, "123"); assertTrue(card.validateCVC()); }
@Test public void shouldFailValidateCVCIfVisaAndNotNumeric() { Card card = new Card("4242 4242 4242 4242", null, null, "12a"); assertFalse(card.validateCVC()); }
@Test public void shouldFailValidateNumberIfJustSpaces() { Card card = new Card(" ", null, null, null); assertFalse(card.validateNumber()); }
@Test public void shouldFailValidateNumberIfTooShort() { Card card = new Card("0", 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 shouldPassValidateCVCIfUnknownTypeAndLength4() { Card card = new Card(null, null, null, "1234"); assertTrue(card.validateCVC()); }
@Test public void last4ShouldBeNullWhenNumberIsNull() { Card card = new Card(null, null, null, null); assertNull(card.getLast4()); }
@Test public void shouldPassValidateNumberIfLuhnNumberAmex() { Card card = new Card("378282246310005", null, null, null); assertEquals(Card.AMERICAN_EXPRESS, card.getBrand()); assertTrue(card.validateNumber()); }
@Test public void shouldFailValidateExpiryDateIfNullMonth() { Card card = new Card(null, null, YEAR_IN_FUTURE, null); assertFalse(card.validateExpMonth()); assertTrue(card.validateExpYear(calendar)); assertFalse(card.validateExpiryDate(calendar)); }
@Test public void shouldFailValidateExpiryDateIfZeroYear() { Card card = new Card(null, 12, 0, null); assertTrue(card.validateExpMonth()); assertFalse(card.validateExpYear(calendar)); assertFalse(card.validateExpiryDate(calendar)); }
@Test public void shouldFailValidateExpiryDateIfMonthToLarge() { Card card = new Card(null, 13, YEAR_IN_FUTURE, null); assertFalse(card.validateExpMonth()); assertTrue(card.validateExpYear(calendar)); assertFalse(card.validateExpiryDate(calendar)); }
@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 shouldPassValidateCardVisa() { Card card = new Card("4242-4242-4242-4242", 12, 2050, "123"); assertTrue(card.validateCard(calendar)); assertTrue(card.validateNumber()); assertTrue(card.validateExpiryDate(calendar)); assertTrue(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()); }