Esempio n. 1
0
        public void GetTotalTax_InvokeEachTaxBandWithLowerBoundAndAmount()
        {
            (var taxBandProviderMock, var taxBandHelperMock, var taxBandsMock) = GetMocks();

            var band1Mock = GetTaxBandMock(100m);
            var band2Mock = GetTaxBandMock(200m);
            var band3Mock = GetTaxBandMock(300m);
            var band4Mock = GetTaxBandMock(null);

            var sortedTaxBandsMock = new List <TaxBand>()
            {
                band1Mock.Object, band2Mock.Object, band3Mock.Object, band4Mock.Object
            };

            taxBandProviderMock.Setup(x => x.GetAll()).Returns(taxBandsMock);
            taxBandHelperMock.Setup(x => x.AnyDuplicatedUpperBound(It.IsAny <List <TaxBand> >())).Returns(false);
            taxBandHelperMock.Setup(x => x.AnyTailBand(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(true);
            taxBandHelperMock.Setup(x => x.Sort(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(sortedTaxBandsMock);

            var service = new CalculateTaxService(taxBandProviderMock.Object, taxBandHelperMock.Object);

            service.GetTax(50000);

            band1Mock.Verify(x => x.GetTax(0, 50000));
            band2Mock.Verify(x => x.GetTax(100m, 50000));
            band3Mock.Verify(x => x.GetTax(200m, 50000));
            band4Mock.Verify(x => x.GetTax(300m, 50000));
        }
Esempio n. 2
0
        public void Init_GetDataFromProvider()
        {
            (var taxBandProviderMock, var taxBandHelperMock, _) = GetMocks();

            taxBandHelperMock.Setup(x => x.AnyDuplicatedUpperBound(It.IsAny <List <TaxBand> >())).Returns(false);
            taxBandHelperMock.Setup(x => x.AnyTailBand(It.IsAny <List <TaxBand> >())).Returns(true);

            var service = new CalculateTaxService(taxBandProviderMock.Object, taxBandHelperMock.Object);

            taxBandProviderMock.Verify(x => x.GetAll(), Times.Once());
        }
        public async Task CalculateIncorrectTaxForZip()
        {
            //amount based on CA 92093 With FL repo zip
            var expectedAmountToCollect = 1.43;
            var service       = new CalculateTaxService(baseURI, APIKey);
            var reqRepository = new CalculateTaxServiceRequestRepository();
            var request       = reqRepository.GetTaxRequestByZip("32561");
            var result        = await service.GetTaxCalculation(request);

            result.Should().BeOfType <CalculateTaxServiceResponse>();
            result.Tax.AmountToCollect.Should().NotBe(expectedAmountToCollect);
        }
        public void Call_Calculate_Tax_ShouldReturn_CorrectValue()
        {
            var calculateTaxService = new CalculateTaxService();

            double initialValue = 100;
            int    months       = 5;
            double tax          = 0.01;

            var    finalValue        = calculateTaxService.CalculateTax(initialValue, months, tax);
            double correctFinalValue = 105.1;

            Assert.Equal(correctFinalValue, finalValue);
        }
Esempio n. 5
0
        public void Init_SortDataFromRepositoryAndAssignToTaxBands()
        {
            (var taxBandProviderMock, var taxBandHelperMock, var taxBandsMock) = GetMocks();

            var sortedTaxBandsMock = new List <TaxBand>();

            taxBandProviderMock.Setup(x => x.GetAll()).Returns(taxBandsMock);
            taxBandHelperMock.Setup(x => x.AnyDuplicatedUpperBound(It.IsAny <List <TaxBand> >())).Returns(false);
            taxBandHelperMock.Setup(x => x.AnyTailBand(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(true);
            taxBandHelperMock.Setup(x => x.Sort(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(sortedTaxBandsMock);

            var service = new CalculateTaxService(taxBandProviderMock.Object, taxBandHelperMock.Object);

            service.TaxBands.Should().Equal(sortedTaxBandsMock);
        }
Esempio n. 6
0
        async Task <CalculateTaxServiceResponse> CalculateTax(CalculateTaxServiceRequest cartItem)
        {
            try
            {
                var taxJarToken = await SecureStorage.GetAsync("taxjar_token");

                var service = new CalculateTaxService(new Uri("https://api.taxjar.com/v2"), taxJarToken);
                return(_cartItemResponse = await service.GetTaxCalculation(cartItem));
            }
            catch (Exception ex)
            {
                await _dialogService.DisplayAlertAsync("Service Error", ex.Message, "OK");
            }
            return(null);
        }
Esempio n. 7
0
        public void GetTaxDetails_ReturnTaxDetailOfEachBand()
        {
            (var taxBandProviderMock, var taxBandHelperMock, var taxBandsMock) = GetMocks();

            var band1Mock = GetTaxBandMock(100m, 20, "band1", 4);
            var band2Mock = GetTaxBandMock(200m, 20, "band2", 30);
            var band3Mock = GetTaxBandMock(300m, 30, "band3", 200);
            var band4Mock = GetTaxBandMock(null, 40, "band4", 1000);

            var sortedTaxBandsMock = new List <TaxBand>()
            {
                band1Mock.Object, band2Mock.Object, band3Mock.Object, band4Mock.Object
            };

            taxBandProviderMock.Setup(x => x.GetAll()).Returns(taxBandsMock);
            taxBandHelperMock.Setup(x => x.AnyDuplicatedUpperBound(It.IsAny <List <TaxBand> >())).Returns(false);
            taxBandHelperMock.Setup(x => x.AnyTailBand(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(true);
            taxBandHelperMock.Setup(x => x.Sort(It.Is <List <TaxBand> >(x => x == taxBandsMock))).Returns(sortedTaxBandsMock);

            var service = new CalculateTaxService(taxBandProviderMock.Object, taxBandHelperMock.Object);

            (var total, var details) = service.GetTax(50000);

            total.Should().Be(1234);
            details.Should().HaveCount(4);
            details[0].Description.Should().Be("band1");
            details[0].Rate.Should().Be(20);
            details[0].Tax.Should().Be("4.00");

            details[1].Description.Should().Be("band2");
            details[1].Rate.Should().Be(20);
            details[1].Tax.Should().Be("30.00");

            details[2].Description.Should().Be("band3");
            details[2].Rate.Should().Be(30);
            details[2].Tax.Should().Be("200.00");

            details[3].Description.Should().Be("band4");
            details[3].Rate.Should().Be(40);
            details[3].Tax.Should().Be("1000.00");
        }
Esempio n. 8
0
        public void IntegrationTest_WithMockProvider()
        {
            (var taxBandProviderMock, _, _) = GetMocks();

            var band1 = TaxBand.Create(0, "band1", 12_500m);
            var band2 = TaxBand.Create(20, "band2", 50_000m);
            var band3 = TaxBand.Create(40, "band3", 150_000m);
            var band4 = TaxBand.Create(45, "band4");

            var taxBands = new List <TaxBand>()
            {
                band1, band2, band3, band4
            };

            taxBandProviderMock.Setup(x => x.GetAll()).Returns(taxBands);

            var service = new CalculateTaxService(taxBandProviderMock.Object, new TaxBandHelper());

            (var tax, _) = service.GetTax(52_000m);

            tax.Should().Be(8_300m);
        }