예제 #1
0
        public async Task AddCardSucessfull()
        {
            var contextOptions = new DbContextOptionsBuilder <CasinoContext>()
                                 .UseInMemoryDatabase(databaseName: "AddCardSucessfull")
                                 .Options;

            string cardNumber = new string('0', 16);
            string userId     = "userId";

            DateTime expiration = new DateTime(2019, 11, 10);

            using (var context = new CasinoContext(contextOptions))
            {
                var cardService = new CardService(context);

                await cardService.AddCard(cardNumber, userId, expiration);

                var card = await context.BankCards
                           .Where(c => c.CardNumber == cardNumber)
                           .FirstAsync();


                Assert.AreEqual(cardNumber, card.CardNumber);
                Assert.IsNotNull(context.BankCards.FirstOrDefault(ca => ca.CardNumber == cardNumber));
            }
        }
예제 #2
0
        public async Task CheckIf_ReturnedCardIs_AddedInTheBase()
        {
            //Arrange
            contextOptions = new DbContextOptionsBuilder <ItsAllAboutTheGameDbContext>()
                             .UseInMemoryDatabase(databaseName: "CheckIf_ReturnedCardIs_AddedInTheBase")
                             .Options;

            dateTimeProvider = new DateTimeProvider();

            user = new User
            {
                Id           = userId,
                Cards        = new List <CreditCard>(),
                Transactions = new List <Transaction>(),
                UserName     = userName,
                CreatedOn    = dateTimeProvider.Now,
                Email        = email,
                FirstName    = firstName,
                LastName     = lastName,
                DateOfBirth  = DateTime.Parse("02.01.1996"),
                Role         = UserRole.None,
            };

            //Act & Assert
            using (var actContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                var        cardService      = new CardService(actContext, dateTimeProvider);
                CreditCard creditCardResult = await cardService.AddCard("3242423532532434", "332", DateTime.Parse("02.03.2020"), user);

                var cardInBase = await actContext.CreditCards.Where(c => c.CardNumber == "3242423532532434").FirstOrDefaultAsync();

                Assert.AreSame(creditCardResult, cardInBase);
            }
        }
예제 #3
0
        public IActionResult AddCard([FromBody] AddCardDto addCardDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = _cardService.AddCard(addCardDto);

            return(Ok(result));
        }
예제 #4
0
        public IActionResult AddCard([FromBody] AddCardDto addCardDto)
        {
            var result = _cardService.AddCard(addCardDto);

            if (result == null)
            {
                return(BadRequest());
            }

            return(Ok(result));
        }
예제 #5
0
        public async Task ReturnDeletedCard_AsNewCard_AfterReadding()
        {
            //Arrange
            contextOptions = new DbContextOptionsBuilder <ItsAllAboutTheGameDbContext>()
                             .UseInMemoryDatabase(databaseName: "ReturnDeletedCard_AsNewCard_AfterReadding")
                             .Options;

            dateTimeProvider = new DateTimeProvider();

            user = new User
            {
                Id           = userId,
                Cards        = new List <CreditCard>(),
                Transactions = new List <Transaction>(),
                UserName     = userName,
                CreatedOn    = dateTimeProvider.Now,
                Email        = email,
                FirstName    = firstName,
                LastName     = lastName,
                DateOfBirth  = DateTime.Parse("02.01.1996"),
                Role         = UserRole.None,
            };

            creditCard = new CreditCard
            {
                CardNumber = cardNumber,
                CVV        = cvv,
                ExpiryDate = DateTime.Parse("02.03.2020"),
                IsDeleted  = true,
                User       = user
            };

            //Act
            using (var actContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                await actContext.Users.AddAsync(user);

                await actContext.CreditCards.AddAsync(creditCard);

                await actContext.SaveChangesAsync();
            }

            // Assert
            using (var assertContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                var        cardService      = new CardService(assertContext, dateTimeProvider);
                CreditCard creditCardResult = await cardService.AddCard(cardNumber, cvv, DateTime.Parse("02.03.2020"), user);

                Assert.IsInstanceOfType(creditCardResult, typeof(CreditCard));
            }
        }
예제 #6
0
        public async Task <ActionResult> AddCard()
        {
            using (var reader = new StreamReader(Request.Body))
            {
                var body = await reader.ReadToEndAsync();

                var json = JsonSerializer.Deserialize <Dictionary <string, dynamic> >(body);
                try
                {
                    _cardService.AddCard(json);
                    return(Ok());
                }
                catch (Exception e)
                {
                    return(BadRequest(e));
                }
            }
        }
예제 #7
0
        public async Task ThrowCardNumberException_WhenCardNumberIsInvalid()
        {
            var contextOptions = new DbContextOptionsBuilder <CasinoContext>()
                                 .UseInMemoryDatabase(databaseName: "ThrowCardNumberException_WhenCardNumberIsInvalid")
                                 .Options;

            string   cardNumber = "a00000000b000000";
            string   userId     = "userId";
            DateTime expiration = new DateTime(2017, 11, 10);

            using (var context = new CasinoContext(contextOptions))
            {
                var transactionService = new CardService(context);

                await Assert.ThrowsExceptionAsync <CardNumberException>(
                    () => transactionService.AddCard(cardNumber, userId, expiration)
                    );
            }
        }
예제 #8
0
        public async Task ThrowArgumentNullException_WhenCardNumberIsNull()
        {
            var contextOptions = new DbContextOptionsBuilder <CasinoContext>()
                                 .UseInMemoryDatabase(databaseName: "ThrowArgumentNullException_WhenCardNumberIsNull")
                                 .Options;

            string   cardNumber = null;
            string   userId     = "userId";
            DateTime expiration = new DateTime();

            using (var context = new CasinoContext(contextOptions))
            {
                var transactionService = new CardService(context);

                await Assert.ThrowsExceptionAsync <ArgumentNullException>(
                    () => transactionService.AddCard(cardNumber, userId, expiration)
                    );
            }
        }
예제 #9
0
        private void OkMethod()
        {
            CardModel tmp = cardModel;

            if (addMethod)
            {
                Task.Run(() =>
                {
                    cardService.AddCard(tmp);
                    CreditCardList = GetCreditCards();
                });
            }
            else
            {
                Task.Run(() =>
                {
                    cardService.UpdateCreditCard(tmp.CreditCardID, tmp);
                    CreditCardList = GetCreditCards();
                });
            }
            cardModel = new CardModel();
            CloseWindow?.Invoke();
        }
예제 #10
0
        public async Task ReturnCard_WhenValidParamsPassed()
        {
            //Arrange
            contextOptions = new DbContextOptionsBuilder <ItsAllAboutTheGameDbContext>()
                             .UseInMemoryDatabase(databaseName: "ReturnsCard_WhenValidParamsPassed")
                             .Options;

            dateTimeProvider = new DateTimeProvider();

            user = new User
            {
                Id           = userId,
                Cards        = new List <CreditCard>(),
                Transactions = new List <Transaction>(),
                UserName     = userName,
                CreatedOn    = dateTimeProvider.Now,
                Email        = email,
                FirstName    = firstName,
                LastName     = lastName,
                DateOfBirth  = DateTime.Parse("02.01.1996"),
                Role         = UserRole.None,
            };

            //Act & Assert
            using (var actContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                var        cardService      = new CardService(actContext, dateTimeProvider);
                CreditCard creditCardResult = await cardService.AddCard("3242423532532434", "332", DateTime.Parse("02.03.2020"), user);

                Assert.IsInstanceOfType(creditCardResult, typeof(CreditCard));
                Assert.IsTrue(creditCardResult.CardNumber == "3242423532532434");
                Assert.IsTrue(creditCardResult.CVV == "332");
                Assert.IsTrue(creditCardResult.ExpiryDate == DateTime.Parse("02.03.2020"));
                Assert.IsTrue(creditCardResult.User == user);
            }
        }
예제 #11
0
 public void AddCreditCard()
 {
     Assert.AreEqual(3, service.GetAllCreditCards().Count());
     service.AddCard(card);
     Assert.AreEqual(4, service.GetAllCreditCards().Count());
 }
예제 #12
0
        public async Task ThrowException_When_CardAlreadyExists()
        {
            //Arrange
            contextOptions = new DbContextOptionsBuilder <ItsAllAboutTheGameDbContext>()
                             .UseInMemoryDatabase(databaseName: "ThrowException_When_CardAlreadyExists")
                             .Options;

            dateTimeProvider = new DateTimeProvider();

            user = new User
            {
                Id           = userId,
                Cards        = new List <CreditCard>(),
                Transactions = new List <Transaction>(),
                UserName     = userName,
                CreatedOn    = dateTimeProvider.Now,
                Email        = email,
                FirstName    = firstName,
                LastName     = lastName,
                DateOfBirth  = DateTime.Parse("02.01.1996"),
                Role         = UserRole.None,
            };

            creditCard = new CreditCard
            {
                CardNumber = cardNumber,
                CVV        = cvv,
                ExpiryDate = DateTime.Parse("02.03.2020"),
                User       = user,
                UserId     = user.Id
            };

            //Act
            using (var actContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                await actContext.Users.AddAsync(user);

                await actContext.CreditCards.AddAsync(creditCard);

                await actContext.SaveChangesAsync();
            }

            using (var actContext = new ItsAllAboutTheGameDbContext(contextOptions))
            {
                var cardService = new CardService(actContext, dateTimeProvider);
                await Assert.ThrowsExceptionAsync <EntityAlreadyExistsException>(async() => await cardService.AddCard("23232141412", "3232", DateTime.Parse("02.03.2020"), user));
            }
        }