protected override void Seed(BookingsDbContext context)
        {
            var random              = new Random();
            var addressGenerator    = new AddressGenerator();
            var userNameGenerator   = new UserNameGenerator();
            var passportGenerator   = new PassportGenerator();
            var creditCardGenerator = new CreditCardGenerator();

            for (int i = 0; i < 60; i++)
            {
                var fromDate = DateTime.Today.AddDays(random.Next(-2, 5));
                var toDate   = fromDate.AddDays(random.Next(1, 5));

                context.Bookings.Add(new Booking
                {
                    CustomerId   = "Cust-10" + i,
                    CustomerName = userNameGenerator.GetName(),
                    Address      = addressGenerator.GetAddress(),
                    From         = fromDate,
                    To           = toDate,
                    Passport     = passportGenerator.GetPassport(),
                    Amount       = random.Next(10, 40) * 100,
                    Total        = random.Next(10, 40) * 500,
                    CreditCard   = creditCardGenerator.GetCreditCard(),
                    Floor        = random.Next(0, 10),
                    RoomNumber   = random.Next(1, 500)
                });
            }

            context.SaveChanges();

            base.Seed(context);
        }
Example #2
0
 public CreditCardControllerTests()
 {
     _logger       = new Mock <ILogger <CreditCardController> >();
     _mediatorMock = new Mock <IMediator>();
     _validInput   = CreditCardGenerator.CreateValidCardInputFaker().Generate();
     _controller   = new CreditCardController(_mediatorMock.Object, _logger.Object);
 }
        public void when_amount_spent_attained_then_promotion_unlocked()
        {
            var accountId = Guid.NewGuid();
            var orderId1  = Guid.NewGuid();
            var orderId2  = Guid.NewGuid();

            var newOrderStatus = new OrderStatusChanged
            {
                IsCompleted = true,
                Status      = new OrderStatusDetail {
                    AccountId = accountId, Status = OrderStatus.Completed
                }
            };

            var newPaymentInit = new CreditCardPaymentInitiated
            {
                Meter = (decimal)15.31
            };

            var newPayment = new CreditCardPaymentCaptured_V2
            {
                FeeType           = FeeTypes.None,
                Meter             = (decimal)15.31,
                AuthorizationCode = Guid.NewGuid().ToString(),
                AccountId         = accountId
            };

            _orderCreatedCommand.AccountId = accountId;

            _orderCreatedCommand.SourceId = orderId1;
            newOrderStatus.SourceId       = orderId1;
            newPaymentInit.SourceId       = orderId1;
            newPaymentInit.OrderId        = orderId1;
            newPayment.SourceId           = orderId1;
            newPayment.OrderId            = orderId1;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            CreditCardGenerator.Handle(newPaymentInit);
            CreditCardGenerator.Handle(newPayment);
            TriggerSut.Handle(newPayment);

            _orderCreatedCommand.SourceId = orderId2;
            newOrderStatus.SourceId       = orderId2;
            newPaymentInit.SourceId       = orderId2;
            newPaymentInit.OrderId        = orderId2;
            newPayment.SourceId           = orderId2;
            newPayment.OrderId            = orderId2;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            CreditCardGenerator.Handle(newPaymentInit);
            CreditCardGenerator.Handle(newPayment);
            TriggerSut.Handle(newPayment);

            var commands = Commands.OfType <AddUserToPromotionWhiteList>().Where(c => c.AccountIds.Contains(accountId)).ToArray();

            Assert.AreEqual(1, commands.Count());
            Assert.AreEqual(30.62, commands[0].LastTriggeredAmount);
        }
        public void ShouldReturnValidWhenCardInfoIsValid()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker().Generate();

            var result = ValidateCard(card);

            Assert.True(result.IsValid);
        }
Example #5
0
 public CardRegisterCommandHandlerTests()
 {
     _logger          = new Mock <ILogger <CardRegisterCommandHandler> >();
     _respositoryMock = new Mock <ICreditCardRepository>();
     _cardInput       = CreditCardGenerator.CreateValidCardInputFaker().Generate();
     _command         = new CardRegisterCommand(_cardInput);
     _handler         = new CardRegisterCommandHandler(_respositoryMock.Object, _logger.Object);
 }
        public void ShouldReturnValidWhenCvcLengthIs4()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.Cvc, f => string.Join("", f.Random.Digits(4)))
                       .Generate();

            var result = ValidateCard(card);

            Assert.True(result.IsValid);
        }
        public void ShouldReturnInvalidWhenCreditCarNumberIsInvalid()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.CardNumber, f => f.Random.String(11))
                       .Generate();

            var result = ValidateCard(card);

            Assert.False(result.IsValid);
        }
        public void ShouldReturnInvalidWhenNameIsNull()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.Name, f => null)
                       .Generate();

            var result = ValidateCard(card);

            Assert.False(result.IsValid);
        }
        public void ShouldReturnValidWhenExpiryDateIsToday()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.ExpiryDate, f => DateTime.Today)
                       .Generate();

            var result = ValidateCard(card);

            Assert.True(result.IsValid);
        }
        public void ShouldReturnInvalidWhenExpiryDateIsBeforeToday()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.ExpiryDate, f => f.Date.Past())
                       .Generate();

            var result = ValidateCard(card);

            Assert.False(result.IsValid);
        }
        public void ShouldReturnInvalidWhenCvcLengthGreaterThan4()
        {
            var card = CreditCardGenerator.CreateValidCardInputFaker()
                       .RuleFor(u => u.Cvc, f => f.Random.String(5))
                       .Generate();

            var result = ValidateCard(card);

            Assert.False(result.IsValid);
        }
        private static void SeedCreditCards(BillsPaymentSystemContext ctx)
        {
            for (int i = 0; i < countCreditCards; i++)
            {
                var creditCard = CreditCardGenerator.NewCreditCard(ctx);

                if (IsValid(creditCard))
                {
                    ctx.CreditCards.Add(creditCard);
                }
            }

            ctx.SaveChanges();
        }
Example #13
0
    public void TestGenerateCardNumber()
    {
        var bin    = "485246";
        int length = 16;
        var cn     = CreditCardGenerator.GenerateCardNumber(bin, length);

        Assert.IsNotEmpty(cn);
        Assert.IsTrue(cn.Length == length);

        var result = CreditCardValidator.ValidCardNumber(cn);

        Assert.IsTrue(result.CardNumberFormat == CardNumberFormat.Valid_LuhnOnly ||
                      result.CardNumberFormat == CardNumberFormat.Valid_BINTest);
    }
Example #14
0
        public async Task ShouldReturnARecord_WhenCallingGetByIdAndDataExisting()
        {
            var mockResult = CreditCardGenerator.CreateValidCreditCardOutputFaker().Generate();

            _mediatorMock.Setup(m =>
                                m.Send(It.IsAny <GetCreditCardByIdQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(mockResult);

            var response = await _controller.GetById(mockResult.Id);

            if (response is OkObjectResult result)
            {
                var record = result.Value as CreditCartOutput;
                Assert.IsType <OkObjectResult>(response);
                Assert.Equal(mockResult, record);
            }
        }
Example #15
0
        public async Task ShouldReturnListOfRecords_WhenCallingGet()
        {
            var mockResult = CreditCardGenerator.CreateValidCreditCardOutputFaker().Generate(3);

            _mediatorMock.Setup(m =>
                                m.Send(It.IsAny <GetAllCreditCardQuery>(), It.IsAny <CancellationToken>())).ReturnsAsync(mockResult);

            var response = await _controller.Get();

            if (response is OkObjectResult result)
            {
                var recordSet = result.Value as List <CreditCartOutput>;

                Assert.IsType <OkObjectResult>(response);
                Assert.Equal(3, recordSet.Count);
            }
        }
Example #16
0
    public void TestGenerateBatchCardNumbers()
    {
        var bin    = "485246";
        int length = 16;

        var cardNumbers = new List <string>();

        for (int i = 0; i < 128; i++)
        {
            var cn = CreditCardGenerator.GenerateCardNumber(bin, length);
            cardNumbers.Add(cn);
        }

        var isUnique = cardNumbers.GroupBy(x => x).All(g => g.Count() == 1);

        Assert.IsTrue(isUnique);
    }
Example #17
0
        public async Task ShouldReturnSingleModel()
        {
            var dbModel = CreditCardGenerator.CreateValidCreditCardFaker()
                          .RuleFor(r => r.Id, f => f.Random.Long())
                          .Generate();

            _respositoryMock.Setup(r => r.GetById(It.IsAny <long>())).ReturnsAsync(dbModel);

            var query = new GetCreditCardByIdQuery(dbModel.Id);

            var result = await _handler.Handle(query, CancellationToken.None);

            Assert.Equal(dbModel.Id, result.Id);
            Assert.Equal(dbModel.Name, result.Name);
            Assert.Equal(dbModel.CardNumber, result.CardNumber);
            Assert.Equal(dbModel.ExpiryDate, result.ExpiryDate);
        }
        public async Task ShouldCreateRecord_WhenRecordDoesNotExist()
        {
            await ResetDatabase();

            var creditCard = CreditCardGenerator.CreateValidCreditCardFaker().Generate();
            await _creditCardRepository.Create(creditCard);

            var result = await Connection.QueryFirstAsync(
                @"SELECT * FROM CreditCards where CardNumber=@CardNumber",
                new { creditCard.CardNumber });

            Assert.NotEqual(0L, result.Id);
            Assert.Equal(creditCard.Name, result.Name);
            Assert.Equal(creditCard.CardNumber, result.CardNumber);
            Assert.Equal(creditCard.EncryptedCvc, result.EncryptedCvc);
            Assert.Equal(creditCard.CvcSalt, result.CvcSalt);
            Assert.Equal(creditCard.ExpiryDate, result.ExpiryDate);
        }
Example #19
0
        public async Task ShouldReturnListOfOutputModel()
        {
            var dbModels = CreditCardGenerator.CreateValidCreditCardFaker().Generate(2);

            _respositoryMock.Setup(r => r.Get()).ReturnsAsync(dbModels);

            var result = (await _handler.Handle(_query, CancellationToken.None)).ToList();

            var expected1 = dbModels[0];
            var actual1   = result[0];

            Assert.True(expected1.CardNumber == actual1.CardNumber &&
                        expected1.Name == actual1.Name &&
                        expected1.ExpiryDate == actual1.ExpiryDate);

            var expected2 = dbModels[1];
            var actual2   = result[1];

            Assert.True(expected2.CardNumber == actual2.CardNumber &&
                        expected2.Name == actual2.Name &&
                        expected2.ExpiryDate == actual2.ExpiryDate);
        }
Example #20
0
 private static void SeedCreditCards(BillsPaymentSystemContext db, int count)
 {
     CreditCardGenerator.InitialCreditCardSeed(db, count);
 }