public bool ExecuteSale() { decimal adjValue = SaleAdjustment.AdjustmentValue; AdjustmentType adjType = SaleAdjustment.AdjustmentType; // Add the sale first if (!DataManager.AddSale(Sale)) { return(false); } // fetch only sales relevent to the adjustment product var productSales = DataManager.GetReadOnlySaleList().Where(s => s.Product.Equals(SaleAdjustment.Product, StringComparison.OrdinalIgnoreCase)).ToList(); // and adjust them. for each adjusted there will be a sale adjustment history log productSales.ForEach(s => { // create the adjustment object to log SaleAdjustmentLog adjLog = new SaleAdjustmentLog(s.SaleId, s.SaleValue, 0, null, SaleAdjustment); // change the sale value s.SaleValue = SaleAdjustmentHelper.CalculateSaleValue(adjType, adjValue, s.SaleValue); // and log the adjustment adjLog.NewValue = s.SaleValue; adjLog.OccuredAt = DateTime.Now; DataManager.AddSaleAdjustment(adjLog); }); return(true); }
public void SaleAdjustmentHelper_When_InvalidValues_ThrowsException() { // Arrange OutputLoggerHelper.SkipOutputFile = true; // Act // Assert Assert.Throws(typeof(OverflowException), delegate { SaleAdjustmentHelper.CalculateSaleValue(AdjustmentType.Add, decimal.MaxValue, decimal.MaxValue); }); }
public void SaleAdjustmentHelper_When_12minus15_Equals0() { // Arrange OutputLoggerHelper.SkipOutputFile = true; decimal returnedValue = 0; // Act returnedValue = SaleAdjustmentHelper.CalculateSaleValue(AdjustmentType.Subtract, 15, 12); // Assert Assert.AreEqual(0, returnedValue); }
public void SaleAdjustmentHelper_When_12times15_Equals180() { // Arrange OutputLoggerHelper.SkipOutputFile = true; decimal returnedValue = 0; // Act returnedValue = SaleAdjustmentHelper.CalculateSaleValue(AdjustmentType.Multiply, 12, 15); // Assert Assert.AreEqual(180, returnedValue); }
public void SaleAdjustmentHelper_When_12and15_Equals27() { // Arrange OutputLoggerHelper.SkipOutputFile = true; decimal returnedValue = 0; // Act returnedValue = SaleAdjustmentHelper.CalculateSaleValue(AdjustmentType.Add, 12, 15); // Assert Assert.AreEqual(27, returnedValue); }