Exemplo n.º 1
0
        /// <summary>
        ///  This method is used to fetch the sales tax that should be collected for a given order.
        /// </summary>
        /// <param name="getOrderSalesTaxRequest"></param>
        /// <returns>GetOrderSalesTaxResponse</returns>
        public async Task <GetOrderSalesTaxResponse> GetOrderSalesTax(GetOrderSalesTaxRequestModel getOrderSalesTaxRequest)
        {
            // Map Partner Request
            var apiRequest = _taxProviderMapper.MapGetOrderSalesTaxRequest(getOrderSalesTaxRequest);

            // Process Request
            var response = await _taxRepository.GetOrderSalesTax(apiRequest);

            // Return Response
            return(response);
        }
        public async void GetOrderSalesTax_ValidInput_Expect_Success(int amount, string fromCountry, string toCountry)
        {
            // Setup
            var mockResponse = new GetOrderSalesTaxResponse()
            {
                SalesTax = new SalesTax
                {
                    amount_to_collect  = 12.90,
                    Order_total_amount = 124.88,
                    breakdown          = new Breakdown
                    {
                        city_taxable_amount = 78,
                        city_tax_rate       = 7
                    },
                    jurisdictions = new Jurisdictions
                    {
                        city    = "Saint Pete",
                        country = "US"
                    }
                }
            };
            var fakeRequest = new GetOrderSalesTaxRequestModel
            {
                Amount       = amount,
                From_country = fromCountry,
                To_country   = toCountry
            };

            _taxProvider.Setup(x => x.GetOrderSalesTax(It.IsAny <GetOrderSalesTaxRequestModel>()))
            .Returns(Task.FromResult(mockResponse)).Verifiable();

            // Act
            var actualResponse = await _taxController.GetOrderSalesTax(fakeRequest) as OkObjectResult;

            var data = actualResponse.Value as GetOrderSalesTaxResponse;

            // Assert
            Assert.NotNull(actualResponse);
            Assert.NotNull(data);
            Assert.NotNull(data.SalesTax);
            Assert.Equal(12.90, data.SalesTax.amount_to_collect);
            Assert.Equal(124.88, data.SalesTax.Order_total_amount);
            Assert.NotNull(data.SalesTax.breakdown);
            Assert.Equal(78, data.SalesTax.breakdown.city_taxable_amount);
            Assert.NotNull(data.SalesTax.jurisdictions);
            Assert.Equal("Saint Pete", data.SalesTax.jurisdictions.city);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Mapper method for GetOrderSalesTax Request
 /// </summary>
 /// <param name="getOrderSalesTaxRequestModel"></param>
 /// <returns></returns>
 public GetOrderSalesTaxRequest MapGetOrderSalesTaxRequest(GetOrderSalesTaxRequestModel getOrderSalesTaxRequestModel)
 {
     return(new GetOrderSalesTaxRequest()
     {
         // Manadatory fields
         To_country = getOrderSalesTaxRequestModel.To_country,
         Shipping = getOrderSalesTaxRequestModel.Shipping,
         // Manadatory fields - END
         From_country = getOrderSalesTaxRequestModel.From_country,
         To_zip = getOrderSalesTaxRequestModel.To_zip,
         To_state = getOrderSalesTaxRequestModel.To_state,
         From_zip = getOrderSalesTaxRequestModel.From_zip,
         From_city = getOrderSalesTaxRequestModel.From_city,
         From_state = getOrderSalesTaxRequestModel.From_state,
         From_street = getOrderSalesTaxRequestModel.From_street,
         To_city = getOrderSalesTaxRequestModel.To_city,
         To_street = getOrderSalesTaxRequestModel.To_street,
         Amount = getOrderSalesTaxRequestModel.Amount,
         Nexus_addresses = getOrderSalesTaxRequestModel.Nexus_addresses,
         Line_items = getOrderSalesTaxRequestModel.Line_items,
     });
 }
Exemplo n.º 4
0
        public async Task <IActionResult> GetOrderSalesTax([FromBody] GetOrderSalesTaxRequestModel getOrderSalesTaxRequest)
        {
            var getOrderSalesTaxResponse = await _taxProvider.GetOrderSalesTax(getOrderSalesTaxRequest);

            return(Ok(getOrderSalesTaxResponse));
        }