public async Task GetTaxOnOrderTest() { var taxCalculatorMock = new TaxCalculatorMock(); var taxService = new TaxServiceWorker(taxCalculatorMock); var order = new Order() { from_country = "US", from_zip = "07001", from_state = "NJ", to_country = "US", to_zip = "07446", to_state = "NJ", amount = 16.50, shipping = 1.5, line_items = new List <LineItem> { new LineItem() { quantity = 1, unit_price = 15.0, product_tax_code = "31000" } } }; var serviceTax = await taxService.GetTaxOnOrder(order); var calculatorTax = await taxCalculatorMock.GetTaxOnOrderAsync(order); Assert.IsTrue(serviceTax.IsDeepEqual(calculatorTax)); }
public async Task <Tax> TaxOnOrder([FromBody] Order order) { var serviceOrder = new TaxService.Models.Order.Order() { to_city = order.ToCity, to_country = order.ToCountry, to_state = order.ToState, to_street = order.ToStreet, to_zip = order.ToZip, from_city = order.FromCity, from_country = order.FromCountry, from_state = order.FromState, from_street = order.FromStreet, from_zip = order.FromZip, amount = order.Amount, shipping = order.Shipping, line_items = order.LineItems.Select(line => new TaxService.Models.Order.LineItem { id = line.ID, quantity = line.Quantity, unit_price = line.UnitPrice, product_tax_code = line.ProductTaxCode }).ToList(), nexus_addresses = order.NexusAddresses == null ? null : order.NexusAddresses.Select(address => new TaxService.Models.Order.NexusAddress { country = address.Country, state = address.State, zip = address.Zip }).ToList() }; var serviceTax = await _taxService.GetTaxOnOrder(serviceOrder); var tax = new Tax { AmountToCollect = serviceTax.amount_to_collect, FreightTaxable = serviceTax.freight_taxable, HasNexus = serviceTax.has_nexus, OrderTotalAmount = serviceTax.order_total_amount, Rate = serviceTax.rate, Shipping = serviceTax.shipping, TaxSource = serviceTax.tax_source, TaxableAmount = serviceTax.taxable_amount }; return(tax); }