Esempio n. 1
0
        public BonusCardDto CreateBonusCard(BonusCardDto bonusCardDto)
        {
            var errors = validator.Validate(bonusCardDto);

            if (!String.IsNullOrWhiteSpace(errors))
            {
                throw new ArgumentException(errors);
            }

            var bonusCard = mapper.Map <BonusCardDto, BonusCard>(bonusCardDto);

            bonusCard.Customer = unitOfWork.Customers.Get(bonusCardDto.CustomerId);
            if (bonusCard.Customer == null)
            {
                throw new ArgumentException("Customer not found");
            }
            if (bonusCard.Customer.BonusCard != null)
            {
                throw new ArgumentException("Customer already has a card");
            }

            bonusCard.Number = GetUniqueNumber();

            unitOfWork.BonusCards.Create(bonusCard);
            unitOfWork.Save();

            return(mapper.Map <BonusCard, BonusCardDto>(bonusCard));
        }
Esempio n. 2
0
        public void CreateBonusCard_Null_ArgumentException()
        {
            //Arrange
            BonusCardDto bonusCard = null;

            //Act

            //Assert
            Assert.Throws <ArgumentException>(() => bonusCardService.CreateBonusCard(bonusCard));
        }
Esempio n. 3
0
        public void GetBonusCard_NonExistentCardNumber_Null()
        {
            //Arrange
            var          cardNumber = Int32.MaxValue;
            BonusCardDto expected   = null;

            //Act
            var actual = bonusCardService.GetBonusCard(cardNumber);

            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 4
0
        public void CreateBonusCard_Null_CorrectExceptionMessage()
        {
            //Arrange
            BonusCardDto bonusCard = null;
            var          expected  = "bonusCard can not be null";

            //Act
            var actual = Record.Exception(() => bonusCardService.CreateBonusCard(bonusCard)).Message.Trim();

            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 5
0
        public void GetBonusCard_NotRealPhoneNumber_Null()
        {
            //Arrange
            string       phoneNumber = "ItIsNotAPhone";
            BonusCardDto expected    = null;

            //Act
            var actual = bonusCardService.GetBonusCard(phoneNumber);


            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 6
0
        public void CreateBonusCard_CustomeHasACard_ArgumentException()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = 50,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = 3
            };

            //Act

            //Assert
            Assert.Throws <ArgumentException>(() => bonusCardService.CreateBonusCard(bonusCard));
        }
Esempio n. 7
0
        public void CreateBonusCard_CorrectBonusCard_ShouldBeNotNull()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = 0,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = 1
            };

            //Act
            bonusCardService.CreateBonusCard(bonusCard);
            var actual = fakeBonusCards.Last();

            //Assert
            Assert.NotNull(actual);
        }
Esempio n. 8
0
        public void CreateBonusCard_ustomeHasACard_CorrectExceptionMessage()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = 50,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = 3
            };
            var expected = "Customer already has a card";

            //Act
            var actual = Record.Exception(() => bonusCardService.CreateBonusCard(bonusCard)).Message.Trim();

            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 9
0
        public void CreateBonusCard_NotRealCustomerId_CorrectExceptionMessage()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = 50,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = Int32.MaxValue
            };
            var expected = "Customer not found";

            //Act
            var actual = Record.Exception(() => bonusCardService.CreateBonusCard(bonusCard)).Message.Trim();

            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 10
0
        public void CreateBonusCard_NegativeBalance_CorrectExceptionMessage()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = -50,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = 1
            };
            var expected = "Balance cannot be less than zero";

            //Act
            var actual = Record.Exception(() => bonusCardService.CreateBonusCard(bonusCard)).Message.Trim();

            //Assert
            Assert.Equal(expected, actual);
        }
Esempio n. 11
0
        public void CreateBonusCard_CorrectBonusCardWithCustomer2_CustomerId2()
        {
            //Arrange
            var bonusCard = new BonusCardDto
            {
                Id                = 5,
                Balance           = 0,
                ExpirationUTCDate = DateTime.Now.AddDays(1),
                CustomerId        = 2
            };

            //Act
            bonusCardService.CreateBonusCard(bonusCard);
            var actual = fakeBonusCards.Last();

            //Assert
            Assert.Equal(bonusCard.CustomerId, actual.Customer.Id);
        }
        public IActionResult Create([FromBody] BonusCardDto bonusCard)
        {
            logger.Info(nameof(Create));

            try
            {
                var newBonusCard = bonusCardService.CreateBonusCard(bonusCard);

                return(CreatedAtAction(nameof(GetByCardNumber), new { cardNumber = newBonusCard.Number }, newBonusCard));
            }
            catch (ArgumentException e)
            {
                logger.Warn(e.Message);

                return(BadRequest(e.Message));
            }
            catch (Exception e)
            {
                logger.Error(e.Message);

                return(StatusCode(500));
            }
        }