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); }
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); }
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))); }
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)); }
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); }
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); }