Esempio n. 1
0
        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);
        }