public void EvalProductsTaxMiddleware_TaxNotCalculatedWithoutResponseGroup_Success() { // Arrange var mapper = new Mock <IMapper>(); var taxProviderSearchService = new Mock <ITaxProviderSearchService>(); var genericPipelineLauncher = new Mock <IGenericPipelineLauncher>(); var evalProductsTaxMiddleware = new EvalProductsTaxMiddleware(mapper.Object, taxProviderSearchService.Object, genericPipelineLauncher.Object); var response = new SearchProductResponse() { TotalCount = 1, Results = new List <ExpProduct>() { new ExpProduct() }, Query = new SearchProductQuery() { CurrencyCode = "USD" } }; //Act evalProductsTaxMiddleware.Run(response, resp => Task.CompletedTask); // Assert taxProviderSearchService.Verify(x => x.SearchTaxProvidersAsync(It.IsAny <TaxProviderSearchCriteria>()), Times.Never); }
public void EvalProductsTaxMiddleware_TaxRatesCalculated_Success() { // Arrange var taxProvider = new Mock <TaxProvider>(); taxProvider.Object.IsActive = true; var mapper = new Mock <IMapper>(); var taxProviderSearchService = new Mock <ITaxProviderSearchService>(); taxProviderSearchService.Setup(x => x.SearchTaxProvidersAsync(It.IsAny <TaxProviderSearchCriteria>())) .ReturnsAsync(() => new TaxProviderSearchResult() { TotalCount = 1, Results = new List <TaxProvider>() { taxProvider.Object } }); var genericPipelineLauncher = new Mock <IGenericPipelineLauncher>(); var evalProductsTaxMiddleware = new EvalProductsTaxMiddleware(mapper.Object, taxProviderSearchService.Object, genericPipelineLauncher.Object); var response = new SearchProductResponse() { TotalCount = 1, Results = new List <ExpProduct>() { new ExpProduct() }, Query = new SearchProductQuery() { CurrencyCode = "USD", IncludeFields = new List <string>() { "price" } //ResponseGroup.LoadPrices }, }; //Act Action action = () => evalProductsTaxMiddleware.Run(response, resp => Task.CompletedTask); // Assert action.Should().NotThrow(); taxProviderSearchService.Verify(x => x.SearchTaxProvidersAsync(It.IsAny <TaxProviderSearchCriteria>()), Times.Once); taxProvider.Verify(x => x.CalculateRates(It.IsAny <TaxEvaluationContext>()), Times.Once); }
public void EvalProductsTaxMiddleware_TaxesApply_Success() { // Arrange var currency = new Currency(Language.InvariantLanguage, "USD") { RoundingPolicy = new DefaultMoneyRoundingPolicy() }; var productPrice = new Mock <ProductPrice>(currency).Object; productPrice.TaxPercentRate = 0; productPrice.ListPrice = new Money(100m, currency); productPrice.DiscountAmount = new Money(0m, currency); productPrice.ProductId = "someId"; var taxProvider = new Mock <TaxProvider>(); taxProvider.Object.IsActive = true; taxProvider.Setup(x => x.CalculateRates(It.IsAny <TaxEvaluationContext>())) .Returns(() => new List <TaxRate>() { new TaxRate() { Currency = "USD", Rate = 50, Line = new TaxLine() { Id = "someId", Quantity = 0 } } }); var mapper = new Mock <IMapper>(); var taxProviderSearchService = new Mock <ITaxProviderSearchService>(); taxProviderSearchService.Setup(x => x.SearchTaxProvidersAsync(It.IsAny <TaxProviderSearchCriteria>())) .ReturnsAsync(() => new TaxProviderSearchResult() { TotalCount = 0, Results = new List <TaxProvider>() { taxProvider.Object } }); var genericPipelineLauncher = new Mock <IGenericPipelineLauncher>(); var evalProductsTaxMiddleware = new EvalProductsTaxMiddleware(mapper.Object, taxProviderSearchService.Object, genericPipelineLauncher.Object); var response = new SearchProductResponse() { TotalCount = 1, Results = new List <ExpProduct>() { new ExpProduct() { AllPrices = new List <ProductPrice>() { productPrice } } }, Query = new SearchProductQuery() { CurrencyCode = "USD", IncludeFields = new List <string>() { "price" } }, }; //Act Action action = () => evalProductsTaxMiddleware.Run(response, resp => Task.CompletedTask); // Assert action.Should().NotThrow(); taxProviderSearchService.Verify(x => x.SearchTaxProvidersAsync(It.IsAny <TaxProviderSearchCriteria>()), Times.Once); taxProvider.Verify(x => x.CalculateRates(It.IsAny <TaxEvaluationContext>()), Times.Once); productPrice.TaxPercentRate.Should().Be(0.5m); }