Exemplo n.º 1
0
        public SupplierRateDTO AddSupplierRate(int supplierId, decimal rate, DateTime startDate, DateTime?endDate)
        {
            if (endDate.HasValue && startDate >= endDate.Value)
            {
                throw new ValidationException("The end date must be greater than start date");
            }

            SupplierDTO supplier = Get(supplierId);

            if (supplier == null)
            {
                throw new NotFoundException($"The supplier of id {supplierId} does not exists");
            }

            ValidateOverLapping(startDate, endDate, supplier.SupplierRates);

            var supplierRate = new SupplierRateDTO
            {
                Rate      = rate,
                StartDate = startDate,
                EndDate   = endDate
            };

            return(_supplierDao.SaveSupplierRate(supplier.SupplierId, supplierRate));
        }
        public void AddSupplierRate_ShouldCallServiceAndSaveTheSupplierRate()
        {
            var supplierId   = 1;
            var supplierRate = new SupplierRateDTO
            {
                Rate      = 10,
                StartDate = DateTime.Today,
                EndDate   = DateTime.Today.AddDays(30)
            };

            _mockSupplierService
            .Setup(x => x.AddSupplierRate(It.IsAny <int>(), It.IsAny <decimal>(), It.IsAny <DateTime>(), It.IsAny <DateTime?>()))
            .Returns(supplierRate);

            var objectResult = _suppliersController.AddSupplierRate(supplierId, supplierRate) as OkObjectResult;

            Assert.IsNotNull(objectResult);

            var result = objectResult.Value as SupplierRateDTO;

            Assert.IsNotNull(result);
            Assert.AreEqual(10, result.Rate);
            Assert.AreEqual(DateTime.Today, result.StartDate);
            Assert.IsTrue(result.EndDate.HasValue);
            Assert.AreEqual(DateTime.Today.AddDays(30), result.EndDate.Value);

            _mockSupplierService.Verify(x =>
                                        x.AddSupplierRate(It.IsAny <int>(), It.IsAny <decimal>(), It.IsAny <DateTime>(), It.IsAny <DateTime?>()), Times.Once);
        }
Exemplo n.º 3
0
        public void AddSupplierRate_ShouldSaveWithValidDatePeriods()
        {
            var supplierTest = GenerateSupplier();
            var expectedRate = new SupplierRateDTO
            {
                SupplierRateId = 1,
                Rate           = 10,
                StartDate      = new DateTime(2015, 8, 1),
                EndDate        = new DateTime(2015, 8, 31)
            };

            _mockSupplierDao.Setup(x => x.Get(It.IsAny <int>())).Returns(supplierTest);
            _mockSupplierDao
            .Setup(x => x.SaveSupplierRate(It.IsAny <int>(), It.IsAny <SupplierRateDTO>()))
            .Returns(expectedRate);

            var result = _supplierService.AddSupplierRate(1, 10, new DateTime(2015, 5, 2), new DateTime(2015, 5, 29));

            _mockSupplierDao.Verify(x => x.Get(It.IsAny <int>()), Times.Once);
            _mockSupplierDao.Verify(x => x.SaveSupplierRate(It.IsAny <int>(), It.IsAny <SupplierRateDTO>()), Times.Once);
            Assert.IsNotNull(result);
            Assert.AreEqual(expectedRate.SupplierRateId, result.SupplierRateId);
            Assert.AreEqual(expectedRate.Rate, result.Rate);
            Assert.AreEqual(expectedRate.StartDate, result.StartDate);
            Assert.AreEqual(expectedRate.EndDate, result.EndDate);
        }
Exemplo n.º 4
0
        public IActionResult AddSupplierRate(int id, [FromBody] SupplierRateDTO request)
        {
            if (request == null)
            {
                throw new ValidationException("The request can not be null");
            }

            return(Ok(_supplierService
                      .AddSupplierRate(id, request.Rate, request.StartDate, request.EndDate)));
        }
Exemplo n.º 5
0
        public void SaveSupplierRate_ShouldThrowsExceptionWhenSupplierIdDoesnotExists()
        {
            var supplierRate = new SupplierRateDTO
            {
                Rate      = 10,
                StartDate = new DateTime(2015, 8, 1),
                EndDate   = new DateTime(2015, 8, 31)
            };

            Assert.Throws <NotFoundException>(() => _supplierDao.SaveSupplierRate(0, supplierRate));
        }
Exemplo n.º 6
0
        public void SaveSupplierRate_ShouldSaveCorrectlyWithEndDateNull()
        {
            var supplierRate = new SupplierRateDTO
            {
                Rate      = 10,
                StartDate = new DateTime(2015, 8, 1)
            };

            var result = _supplierDao.SaveSupplierRate(1, supplierRate);

            Assert.AreEqual(8, result.SupplierRateId);
            Assert.AreEqual(supplierRate.Rate, result.Rate);
            Assert.AreEqual(supplierRate.StartDate, result.StartDate);
            Assert.IsNull(result.EndDate);
        }
Exemplo n.º 7
0
        public SupplierRateDTO SaveSupplierRate(int supplierId, SupplierRateDTO supplierRate)
        {
            var supplier = Get(supplierId);

            if (supplier == null)
            {
                throw new NotFoundException("Supplier Id does not exists");
            }

            var maxCurrentSupplierRateId = suppliers
                                           .SelectMany(x => x.SupplierRates)
                                           .Max(x => x.SupplierRateId);

            supplierRate.SupplierRateId = maxCurrentSupplierRateId + 1;
            supplier.SupplierRates.Add(supplierRate);

            return(supplierRate);
        }