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)); }
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); }
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); }
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); }
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"); }
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); }