public void TestFlatValueTaxRetuns10000()
        {
            var annualIncome = 210000.0;

            var result = _taxCalculator.CalcualtionTax(annualIncome);

            Assert.AreEqual(10000, result);
        }
        public void TestFlatRateTax()
        {
            var annualIncome = 100000.0;

            var result = _taxCalculator.CalcualtionTax(annualIncome);

            Assert.AreEqual(17500, result);
        }
        public void TestProgressiveTax10PercentageRange()
        {
            var annualIncome = 5000.0;

            var result = _taxCalculator.CalcualtionTax(annualIncome);

            Assert.AreEqual(500.0, result);
        }
Exemplo n.º 4
0
        public CalculationResponse CalculationIncomeTax(TaxViewModel taxViewModel)
        {
            var annualIncome = taxViewModel.AnnualIncome;

            var postalCode = _sqlRepository.GetPostalCode(taxViewModel.PostalCode);

            var taxType = _sqlRepository
                          .GetCalculationType(postalCode.TaxTypeId)
                          .TaxTypeName;

            taxType = taxType.Replace(" ", "").ToLower();

            switch (taxType)
            {
            case _flatValue:
            {
                _taxCalculator = new FlatValueTaxCalculator();
                var tax = _taxCalculator.CalcualtionTax(annualIncome);
                return(new CalculationResponse {
                        CalculatedTax = tax, CalculationType = taxType
                    });
            }

            case _flatRate:
            {
                _taxCalculator = new FlatRateTaxCalculator();
                var tax = _taxCalculator.CalcualtionTax(annualIncome);
                return(new CalculationResponse {
                        CalculatedTax = tax, CalculationType = taxType
                    });
            }

            case _progressive:
            {
                var rates = _sqlRepository.GetRates().ToList();
                _taxCalculator = new ProgressiveTaxCalculator(rates);
                var tax = _taxCalculator.CalcualtionTax(annualIncome);
                return(new CalculationResponse {
                        CalculatedTax = tax, CalculationType = taxType
                    });
            }

            default:
                return(null);
            }
        }