Beispiel #1
0
        public void GivenAnInvalidExpirationDate_WhenCreatingACreditCard_ThenAnExceptionIsThrown()
        {
            var builder = new CreditCard.Builder()
                          .Numbered(VALID_CREDIT_CARD_NUMBER)
                          .OwnedBy(VALID_CREDIT_CARD_OWNER)
                          .ExpiresOn(-1, -1);

            var exception = Assert.Throws <ArgumentException>(() => builder.Build());

            Assert.Equal(YearMonth.DATE_IS_INVALID_ERROR, exception.Message);
        }
Beispiel #2
0
        public void GivenACurrentDateTimeHigherThanExpirationDate_WhenCreatingACreditCard_ThenAnExceptionIsThrown(int expirationYear, int expirationMonth)
        {
            var builder = new CreditCard.Builder()
                          .Numbered(VALID_CREDIT_CARD_NUMBER)
                          .OwnedBy(VALID_CREDIT_CARD_OWNER)
                          .ExpiresOn(expirationYear, expirationMonth)
                          .CheckingOn(new DateTime(VALID_YEAR, VALID_MONTH, 1));

            var exception = Assert.Throws <ArgumentException>(() => builder.Build());

            Assert.Equal(CreditCard.CARD_HAS_EXPIRED_ERROR, exception.Message);
        }
Beispiel #3
0
        public void GivenAnInvalidOwner_WhenCreatingACreditCard_ThenAnExceptionIsThrown(string invalidName)
        {
            var builder = new CreditCard.Builder()
                          .Numbered(VALID_CREDIT_CARD_NUMBER)
                          .OwnedBy(invalidName)
                          .ExpiresOn(2020, 12)
                          .CheckingOn(2020, 4);

            var exception = Assert.Throws <ArgumentException>(() => builder.Build());

            Assert.Equal(CreditCard.OWNER_IS_INVALID_ERROR, exception.Message);
        }
Beispiel #4
0
        public void GivenAnExpirationYearMonth_WhenCreatingACreditCard_ThenReturnsIt()
        {
            var yearMonth  = new YearMonth(2020, 4);
            var creditCard = new CreditCard.Builder()
                             .Numbered(VALID_CREDIT_CARD_NUMBER)
                             .OwnedBy(VALID_CREDIT_CARD_OWNER)
                             .ExpiresOn(yearMonth)
                             .Build();

            Assert.NotNull(creditCard);
            Assert.Equal(2020, creditCard.ExpirationDate.Year);
            Assert.Equal(4, creditCard.ExpirationDate.Month);
        }
Beispiel #5
0
        public void GivenACurrentDateEqualOrLowerThanExpirationDate_WhenCreatingAYearMonth_ThenReturnsIt(string owner, int expirationYear, int expirationMonth)
        {
            var creditCard = new CreditCard.Builder()
                             .Numbered(VALID_CREDIT_CARD_NUMBER)
                             .OwnedBy(owner)
                             .ExpiresOn(expirationYear, expirationMonth)
                             .CheckingOn(VALID_YEAR, VALID_MONTH)
                             .Build();

            Assert.NotNull(creditCard);
            Assert.Equal(VALID_CREDIT_CARD_NUMBER, creditCard.Number);
            Assert.Equal(owner, creditCard.Owner);
            Assert.Equal(expirationYear, creditCard.ExpirationDate.Year);
            Assert.Equal(expirationMonth, creditCard.ExpirationDate.Month);
        }
Beispiel #6
0
        public string Checkout(string cartId, string number, string expirationDate, string owner)
        {
            var session    = GetValidSession(cartId);
            var creditCard = new CreditCard.Builder()
                             .ExpiresOn(new YearMonth(expirationDate))
                             .CheckingOn(_internalClock.GetDateTime())
                             .Numbered(number)
                             .OwnedBy(owner)
                             .Build();
            var cashier       = new Cashier(_pricelist, _merchantAdapter);
            var transactionId = cashier.Checkout(session.Cart, creditCard);

            GetBalanceSheetFor(session.ClientId)
            .AddRange(cashier.GetDaybook());

            return(transactionId);
        }