コード例 #1
0
        public void SetupBeforeEachTest()
        {
            _billRepository     = new Mock <IBillRepository>();
            _userRepository     = new Mock <IUserRepository>();
            _deliveryRepository = new Mock <IDeliveryRepository>();
            _wayRepository      = new Mock <IWayRepository>();

            _billRepository.Setup(a => a.FindByIdAndIsDeliveryPaidFalse(ServicesTestConstant.getBillId()))
            .Returns(ServicesTestConstant.getBill());
            _billRepository.Setup(a => a.FindAllByUserIdAndIsDeliveryPaidFalse(It.IsAny <string>()))
            .Returns(ServicesTestConstant.getBills());

            _userRepository.Setup(a => a.FindByIdAndUserMoneyInCentsGreaterThanEqual
                                      (ServicesTestConstant.getUserId(), ServicesTestConstant.getBill().CostInCents)
                                  ).Returns(ServicesTestConstant.getAddreser());

            _userRepository.Setup(a => a.FindByEmail(It.IsAny <string>())
                                  ).Returns(ServicesTestConstant.getAdversee());
            _userRepository.Setup(a => a.FindByName(It.IsAny <string>())
                                  ).Returns(ServicesTestConstant.getAdversee());

            _wayRepository.Setup(a => a.FindByLocalitySand_IdAndLocalityGet_Id
                                     (It.IsAny <long>(), It.IsAny <long>())
                                 ).Returns(ServicesTestConstant.getWay());
            _billService = new BillService
                               (_billRepository.Object, _userRepository.Object, _deliveryRepository.Object, _wayRepository.Object);
        }
コード例 #2
0
        public void GetDeliveryInfoToGet()
        {
            Delivery delivery = ServicesTestConstant.getDelivery();

            delivery.Bill      = ServicesTestConstant.getBill();
            delivery.Bill.User = ServicesTestConstant.getAddreser();
            DeliveryInfoToGetDto deliveryInfoToGetDto = ServicesTestConstant.getDeliveryInfoToGetDto();

            deliveryInfoToGetDto.LocalityGetName  = delivery.Way.LocalityGet.NameEn;
            deliveryInfoToGetDto.LocalitySandName = delivery.Way.LocalitySand.NameEn;

            _deliveryRepository.Setup(s => s.FindAllByAddressee_IdAndIsPackageReceivedFalseAndBill_IsDeliveryPaidTrue(
                                          ServicesTestConstant.getUserId())).Returns(new List <Delivery> {
                delivery
            });

            List <DeliveryInfoToGetDto> result = _deliveryService.GetDeliveryInfoToGet(ServicesTestConstant.getUserId());

            _deliveryRepository.Verify(
                place =>
                place.FindAllByAddressee_IdAndIsPackageReceivedFalseAndBill_IsDeliveryPaidTrue(It.IsAny <string>()),
                Times.Once());

            Assert.AreEqual(deliveryInfoToGetDto, result[0]);
            Assert.AreEqual(ServicesTestConstant.getDeliveres().Count, result.Count);
        }
コード例 #3
0
        public void payForDeliveryDeliveryAlreadyPaid()
        {
            Delivery setupDeliveryAndBill = EntitySetuper.SetupDeliveryAndBill(_context, false, true);

            var actualResult =
                Assert.Throws <DeliveryAlreadyPaidException>(() => _billService.PayForDelivery
                                                                 (ServicesTestConstant.getUserId(), ServicesTestConstant.getBillId()));

            Assert.AreEqual(typeof(DeliveryAlreadyPaidException), actualResult.GetType());
        }
コード例 #4
0
        public void findByEmailIncorrectEmail()
        {
            User user = ServicesTestConstant.getAddreser();

            userRepository.Setup(s => s.FindByEmail(It.IsAny <string>())).Returns((User)null);

            var actualResult =
                Assert.Throws <UsernameNotFoundException>(() => _userService.FindByName(user.UserName));

            Assert.AreEqual(typeof(UsernameNotFoundException), actualResult.GetType());
        }
コード例 #5
0
        public void payForDeliveryDeliveryAlreadyPaid()
        {
            _billRepository.Setup(a => a.FindByIdAndIsDeliveryPaidFalse(ServicesTestConstant.getBillId()))
            .Returns((Bill)null);

            var actualResult =
                Assert.Throws <DeliveryAlreadyPaidException>(() => _billService.PayForDelivery
                                                                 (ServicesTestConstant.getUserId(), ServicesTestConstant.getBillId()));

            Assert.AreEqual(typeof(DeliveryAlreadyPaidException), actualResult.GetType());
        }
コード例 #6
0
        public void confirmGettingDeliveryIsNoExistDelivery()
        {
            _deliveryRepository.Setup(s => s.FindByIdAndAddressee_IdAndIsPackageReceivedFalse(
                                          ServicesTestConstant.getUserId(), ServicesTestConstant.getDeliveryId()))
            .Returns((Delivery)null);
            var actualResult =
                Assert.Throws <AskedDataIsNotExist>(() => _deliveryService.ConfirmGettingDelivery(
                                                        ServicesTestConstant.getUserId(),
                                                        ServicesTestConstant.getDeliveryId()));

            Assert.AreEqual(typeof(AskedDataIsNotExist), actualResult.GetType());
        }
コード例 #7
0
        public void GetDeliveryInfoToGet()
        {
            Delivery             delivery             = EntitySetuper.SetupDeliveryAndBill(_context, false, true);
            DeliveryInfoToGetDto deliveryInfoToGetDto = ServicesTestConstant.getDeliveryInfoToGetDto();

            deliveryInfoToGetDto.LocalityGetName  = delivery.Way.LocalityGet.NameEn;
            deliveryInfoToGetDto.LocalitySandName = delivery.Way.LocalitySand.NameEn;

            List <DeliveryInfoToGetDto> result = _deliveryService.GetDeliveryInfoToGet(delivery.Addressee.UserName);

            Assert.AreEqual(deliveryInfoToGetDto, result[0]);
            Assert.AreEqual(ServicesTestConstant.getDeliveres().Count, result.Count);
        }
コード例 #8
0
        public void getBillHistoryByUserId()
        {
            string      userName = "******";
            List <Bill> bills    = ServicesTestConstant.getBills();

            _billRepository.Setup(b => b.FindAllByUserNameAndIsDeliveryPaidTrue(userName)).Returns(bills);

            List <BillModel> result = _billService.GetBillHistoryByUserName(userName);

            _billRepository.Verify(place => place.FindAllByUserNameAndIsDeliveryPaidTrue(It.IsAny <string>()), Times.Once());
            Assert.AreEqual(ServicesTestConstant.getBillDto(), result[0]);
            Assert.AreEqual(bills.Count, result.Count);
        }
コード例 #9
0
        public void payForDeliveryNotEnoughMoney()
        {
            Delivery setupDeliveryAndBill = EntitySetuper.SetupDeliveryAndBill(_context, false, false);

            setupDeliveryAndBill.Bill.User.UserMoneyInCents = 0;
            _context.SaveChanges();

            var actualResult =
                Assert.Throws <NotEnoughMoneyException>
                    (() => _billService.PayForDelivery(ServicesTestConstant.getUserId(), ServicesTestConstant.getBillId()));

            Assert.AreEqual(typeof(NotEnoughMoneyException), actualResult.GetType());
        }
コード例 #10
0
        public void findByEmailAllCorrect()
        {
            User user = ServicesTestConstant.getAddreser();

            userRepository.Setup(s => s.FindByName(It.IsAny <string>())).Returns(user);

            User result = _userService.FindByName(user.UserName);

            Assert.AreEqual(user, result);
            userRepository.Verify(
                place =>
                place.FindByName(It.IsAny <string>()),
                Times.Once());
        }
コード例 #11
0
        public void getBillsToPayByUserId()
        {
            BillInfoToPayModel billInfoToPayDto = ServicesTestConstant.getBillInfoToPayDto();
            Bill bill = ServicesTestConstant.getBill();

            billInfoToPayDto.LocalityGetName  = bill.Delivery.Way.LocalityGet.NameEn;
            billInfoToPayDto.LocalitySandName = bill.Delivery.Way.LocalitySand.NameEn;

            List <BillInfoToPayModel> result = _billService.GetBillsToPayByUserName(ServicesTestConstant.getUserId());

            _billRepository.Verify(place => place.FindAllByUserIdAndIsDeliveryPaidFalse
                                       (ServicesTestConstant.getUserId()), Times.Once());
            Assert.AreEqual(ServicesTestConstant.getBills().Count, result.Count);
            Assert.AreEqual(billInfoToPayDto, result[0]);
        }
コード例 #12
0
        public void getBillsToPayByUserId()
        {
            Delivery           setupDeliveryAndBill       = EntitySetuper.SetupDeliveryAndBill(_context, false, false);
            BillInfoToPayModel expectedBillInfoToPayModel = new BillInfoToPayModel(setupDeliveryAndBill.Bill.BillId,
                                                                                   setupDeliveryAndBill.Bill.CostInCents, setupDeliveryAndBill.DeliveryId, setupDeliveryAndBill.Weight,
                                                                                   setupDeliveryAndBill.Addressee.Email);

            expectedBillInfoToPayModel.LocalityGetName  = setupDeliveryAndBill.Way.LocalityGet.NameEn;
            expectedBillInfoToPayModel.LocalitySandName = setupDeliveryAndBill.Way.LocalitySand.NameEn;

            List <BillInfoToPayModel> result =
                _billService.GetBillsToPayByUserName(setupDeliveryAndBill.Bill.User.UserName);

            Assert.AreEqual(ServicesTestConstant.getBills().Count, result.Count);
            Assert.AreEqual(expectedBillInfoToPayModel, result[0]);
        }
コード例 #13
0
        public void getDeliveryCostAndTimeDtoAllCorrect()
        {
            DeliveryInfoRequestModel    deliveryInfoRequestDto    = getDeliveryInfoRequestDto(1);
            PriceAndTimeOnDeliveryModel priceAndTimeOnDeliveryDto = getPriceAndTimeOnDeliveryDto();
            Delivery delivery = ServicesTestConstant.getDelivery();
            Way      way      = delivery.Way;

            _wayRepository.Setup(s => s.FindByLocalitySand_IdAndLocalityGet_Id
                                     (It.IsAny <long>(), It.IsAny <long>())).Returns(way);

            PriceAndTimeOnDeliveryModel result = _deliveryService.GetDeliveryCostAndTimeDto(deliveryInfoRequestDto);

            _wayRepository.Verify(
                s => s.FindByLocalitySand_IdAndLocalityGet_Id
                    (It.IsAny <long>(), It.IsAny <long>()), Times.Once());
            Assert.AreEqual(priceAndTimeOnDeliveryDto, result);
        }
コード例 #14
0
        public void payForDeliveryWhenAllCorrect()
        {
            Bill bill = ServicesTestConstant.getBill();

            bill.IsDeliveryPaid = false;
            _billRepository.Setup(a => a.FindByIdAndIsDeliveryPaidFalse(ServicesTestConstant.getBillId())).Returns(bill);

            bool payResult = _billService.PayForDelivery(ServicesTestConstant.getUserId(), ServicesTestConstant.getBillId());

            _billRepository.Verify
                (place => place.FindByIdAndIsDeliveryPaidFalse(ServicesTestConstant.getBillId()), Times.Once());
            _userRepository.Verify(place => place.FindByIdAndUserMoneyInCentsGreaterThanEqual
                                       (ServicesTestConstant.getUserId(), bill.CostInCents), Times.Once());

            Assert.IsTrue(payResult);
            Assert.IsTrue(bill.IsDeliveryPaid);
        }
コード例 #15
0
        public void payForDeliveryNotEnoughMoney()
        {
            Bill bill = ServicesTestConstant.getBill();

            bill.IsDeliveryPaid = false;
            User adverser = ServicesTestConstant.getAddreser();

            adverser.UserMoneyInCents = 0L;
            _userRepository.Setup(a => a.FindByIdAndUserMoneyInCentsGreaterThanEqual
                                      (ServicesTestConstant.getUserId(), ServicesTestConstant.getBill().CostInCents)
                                  ).Returns((User)null);

            var actualResult =
                Assert.Throws <NotEnoughMoneyException>
                    (() => _billService.PayForDelivery(ServicesTestConstant.getUserId(), ServicesTestConstant.getBillId()));

            Assert.AreEqual(typeof(NotEnoughMoneyException), actualResult.GetType());
        }
コード例 #16
0
        public void getDeliveryCostAndTimeIncorrectWeightFactorBiggerOnOne()
        {
            int weightRangeMax  = 2;
            int weightRangeReal = 2;
            DeliveryInfoRequestModel deliveryInfoRequestDto = getDeliveryInfoRequestDto(weightRangeReal);
            Delivery delivery = ServicesTestConstant.getDelivery();
            Way      way      = delivery.Way;

            way.WayToTariffWeightFactors[0].TariffWeightFactor.MaxWeightRange = weightRangeMax;
            _wayRepository.Setup(s => s.FindByLocalitySand_IdAndLocalityGet_Id
                                     (It.IsAny <long>(), It.IsAny <long>())).Returns(way);

            var actualResult =
                Assert.Throws <UnsupportableWeightFactorException>(() =>
                                                                   _deliveryService.GetDeliveryCostAndTimeDto(deliveryInfoRequestDto));

            Assert.AreEqual(typeof(UnsupportableWeightFactorException), actualResult.GetType());
        }
コード例 #17
0
        public void initializeBillCorrectInCorrectAddressee()
        {
            Bill bill = ServicesTestConstant.getBill();

            bill.CostInCents    = _defaultCostInCents;
            bill.BillId         = _defaultBillId;
            bill.IsDeliveryPaid = false;
            Delivery delivery = ServicesTestConstant.getDelivery();

            delivery.DeliveryId = _defaultDeliveryId;
            _userRepository.Setup(a => a.FindByEmail(It.IsAny <string>())
                                  ).Returns(null as User);

            var actualResult =
                Assert.Throws <NoSuchUserException>(() => _billService.InitializeBill
                                                        (ServicesTestConstant.getDeliveryOrderCreateDto(), ServicesTestConstant.getUserId()));

            Assert.AreEqual(typeof(NoSuchUserException), actualResult.GetType());
        }
コード例 #18
0
        public void initializeBillCorrect()
        {
            Bill bill = ServicesTestConstant.getBill();

            bill.CostInCents    = _defaultCostInCents;
            bill.BillId         = _defaultBillId;
            bill.IsDeliveryPaid = false;
            Delivery delivery = ServicesTestConstant.getDelivery();

            delivery.DeliveryId = _defaultDeliveryId;
            _wayRepository.Setup(a => a.FindByLocalitySand_IdAndLocalityGet_Id
                                     (It.IsAny <long>(), It.IsAny <long>())
                                 ).Returns(ServicesTestConstant.getWay());

            Bill billResult = _billService.InitializeBill(ServicesTestConstant.getDeliveryOrderCreateDto(),
                                                          ServicesTestConstant.getUserId());

            Assert.AreEqual(bill, billResult);
        }
コード例 #19
0
        public void GetLocalities()
        {
            Locality        locality   = ServicesTestConstant.getLocalityGet();
            List <Locality> localities = new List <Locality> {
                locality
            };
            LocalityModel localityDto = new LocalityModel(locality.LocalityId, locality.NameEn);

            _localityRepository.Setup(s => s.Get(null, null)).Returns(localities);

            List <LocalityModel> result = _localityService.GetLocalities();

            _localityRepository.Verify(
                place =>
                place.Get(null, null),
                Times.Once());
            Assert.AreEqual(localityDto, result[0]);
            Assert.AreEqual(localities.Count, result.Count);
        }
コード例 #20
0
        public void initializeBillIncorrectInWay()
        {
            Bill bill = ServicesTestConstant.getBill();

            bill.CostInCents    = _defaultCostInCents;
            bill.BillId         = _defaultBillId;
            bill.IsDeliveryPaid = false;
            Delivery delivery = ServicesTestConstant.getDelivery();

            delivery.DeliveryId = _defaultDeliveryId;

            _wayRepository.Setup(a => a.FindByLocalitySand_IdAndLocalityGet_Id
                                     (It.IsAny <long>(), It.IsAny <long>())
                                 ).Returns((Way)null);

            var actualResult =
                Assert.Throws <NoSuchWayException>(() => _billService.InitializeBill
                                                       (ServicesTestConstant.getDeliveryOrderCreateDto(), ServicesTestConstant.getUserId()));

            Assert.AreEqual(typeof(NoSuchWayException), actualResult.GetType());
        }
コード例 #21
0
        public void replenishAccountBalanceAllCorrect()
        {
            User expected = ServicesTestConstant.getAddreser();
            User setIn    = ServicesTestConstant.getAddreser();

            setIn.UserMoneyInCents    = 0L;
            expected.UserMoneyInCents = 10L;
            long paymentSum = 10L;

            userRepository.Setup(s => s.FindByName(It.IsAny <string>()))
            .Returns(setIn);

            User result = _userService.ReplenishAccountBalance(expected.UserName, paymentSum);

            userRepository.Verify(
                place =>
                place.Save(),
                Times.Once());

            Assert.AreEqual(expected, result);
            Assert.AreEqual(10L, setIn.UserMoneyInCents);
        }
コード例 #22
0
        public void confirmGettingDeliveryAllCorrect()
        {
            Delivery delivery = ServicesTestConstant.getDelivery();

            _deliveryRepository.Setup(s => s.FindByIdAndAddressee_IdAndIsPackageReceivedFalse(
                                          ServicesTestConstant.getUserId(), ServicesTestConstant.getDeliveryId()))
            .Returns(delivery);

            bool result = _deliveryService.ConfirmGettingDelivery(ServicesTestConstant.getUserId(),
                                                                  ServicesTestConstant.getDeliveryId());

            _deliveryRepository.Verify(
                place =>
                place.FindByIdAndAddressee_IdAndIsPackageReceivedFalse
                    (It.IsAny <string>(), It.IsAny <long>()), Times.Once());
            _deliveryRepository.Verify(
                place =>
                place.Save(),
                Times.Once());

            Assert.IsTrue(result);
            Assert.IsTrue(delivery.IsPackageReceived);
        }
コード例 #23
0
        public void replenishAccountBalanceNoSuchUser()
        {
            userRepository.Setup(s => s.FindByName(It.IsAny <string>()))
            .Returns((User)null);

            var actualResult =
                Assert.Throws <NoSuchUserException>(() =>
                                                    _userService.ReplenishAccountBalance(ServicesTestConstant.getUserId(), 10));

            Assert.AreEqual(typeof(NoSuchUserException), actualResult.GetType());
        }
コード例 #24
0
        public void replenishAccountBalanceToMuchMoneyException()
        {
            User user = new User(null, null, long.MaxValue);

            userRepository.Setup(s => s.FindByName(It.IsAny <string>()))
            .Returns(user);

            var actualResult =
                Assert.Throws <ToMuchMoneyException>(() =>
                                                     _userService.ReplenishAccountBalance(ServicesTestConstant.getUserId(), 10));

            Assert.AreEqual(typeof(ToMuchMoneyException), actualResult.GetType());
        }
コード例 #25
0
        public void getBillsToPayByUserIdUserIsNotExist()
        {
            _billRepository.Setup(a => a.FindAllByUserIdAndIsDeliveryPaidFalse(It.IsAny <string>())).Returns(new List <Bill>());

            List <BillInfoToPayModel> billInfoToPayDtos = _billService.GetBillsToPayByUserName(ServicesTestConstant.getUserId());

            _billRepository.Verify(place => place.FindAllByUserIdAndIsDeliveryPaidFalse(It.IsAny <string>()), Times.Once());
            Assert.AreEqual(0, billInfoToPayDtos.Count);
        }