示例#1
0
        public void Given_AnnumIncome_63900_ShouldReturn_PercentageBasedValue()
        {
            //----------Setup---------------------------
            const double annualIncome          = 63900d;
            var          flatRateTaxCalculator = new FlatRateTaxCalculator(new Mock <IIncomeValidator>().Object);
            //--------Execute---------------------------
            var tax = flatRateTaxCalculator.Calculate(annualIncome);

            //--------Assert----------------------------
            Assert.AreEqual(11182.50d, tax);
        }
示例#2
0
        public void Given_AnnumIncome_100000_ShouldReturn_17500()
        {
            //----------Setup---------------------------
            const double annualIncome          = 100000d;
            var          flatRateTaxCalculator = new FlatRateTaxCalculator(new Mock <IIncomeValidator>().Object);
            //--------Execute---------------------------
            var tax = flatRateTaxCalculator.Calculate(annualIncome);

            //--------Assert----------------------------
            Assert.AreEqual(17500d, tax);
        }
示例#3
0
        public void Given_Calculate_Should_Call_IncomeValidator_Validate()
        {
            //----------Setup---------------------------
            var mockValidator = new Mock <IIncomeValidator>();

            mockValidator.Setup(m => m.Validate(It.IsAny <double>()));
            var flatRateTaxCalculator = new FlatRateTaxCalculator(mockValidator.Object);

            //--------Execute---------------------------
            flatRateTaxCalculator.Calculate(-12547d);
            //--------Assert----------------------------
            mockValidator.Verify(m => m.Validate(-12547d), Times.Once);
        }
示例#4
0
        public void Given_GetTaxCalculator_When_Id_Does_Exist_Should_ReturnTaxCalculator()
        {
            //------------Setup---------------------------------
            var          taxCalculator = new FlatRateTaxCalculator(new Mock <IIncomeValidator>().Object);
            const string identifier    = "Flat Rate";
            var          taxResolver   = new PostalCodeTaxResolver(new Mock <IIncomeValidator>().Object);

            taxResolver.RegisterTaxCalculator(identifier, taxCalculator);
            //------------Execute--------------------------------
            var returnedTaxCalculator = taxResolver.GetTaxCalculator(identifier);

            //------------Assert--------------------------------
            Assert.AreEqual(taxCalculator, returnedTaxCalculator);
        }
示例#5
0
        public void Given_RegisterTaxCalculator_When_Id_DoesNot_Exist_Should_AddTaxCalculator()
        {
            //------------Setup---------------------------------
            var          taxCalculator = new FlatRateTaxCalculator(new Mock <IIncomeValidator>().Object);
            const string identifier    = "Flat Rate";
            var          taxResolver   = new PostalCodeTaxResolver(new Mock <IIncomeValidator>().Object);

            //------------Execute--------------------------------
            taxResolver.RegisterTaxCalculator(identifier, taxCalculator);
            //------------Assert--------------------------------
            var numberOfTaxResolvers = taxResolver.Count();

            Assert.AreEqual(5, numberOfTaxResolvers);
        }
        public async Task CalculateFlatRateTaxRate_WhenValidRequest_ShouldCalculateCorrectly(decimal annualIncome, decimal expectedTaxRate)
        {
            // Arrange
            var db = Db();

            db.FlatRate.AddRange(SeedValues.GetFlatRatesSeedValues());
            db.SaveChanges();
            var taxCalculator = new FlatRateTaxCalculator(new TaxQueryService(db));

            // Act
            var taxAmount = await taxCalculator.CalculateTaxAmountAsync(annualIncome);

            // Assert
            taxAmount.ShouldBe(expectedTaxRate);
        }
示例#7
0
        public void Given_GetTaxCalculator_When_Id_DoesNot_Exist_Should_ThrowException()
        {
            //------------Setup---------------------------------
            var          taxCalculator = new FlatRateTaxCalculator(new Mock <IIncomeValidator>().Object);
            const string identifier    = "Flat Rate";
            var          taxResolver   = new PostalCodeTaxResolver(new Mock <IIncomeValidator>().Object);

            taxResolver.RegisterTaxCalculator(identifier, taxCalculator);
            //------------Execute--------------------------------
            try
            {
                taxResolver.GetTaxCalculator("SomeRandomTaxCalculator");
            }
            catch (System.Exception e)
            {
                //------------Assert--------------------------------
                Assert.AreEqual("No Tax Calculator found", e.Message);
            }
        }
示例#8
0
 public void Setup()
 {
     flatRateTax = new FlatRateTaxCalculator();
 }