public void When_Calculate( decimal taxRate, decimal taxableAmount, decimal expectedTaxAmount) { // Arrange var taxCalculate = new TaxCalculate(); var taxCalculateOptions = new TaxCalculateOptions { TaxRate = taxRate, TaxableAmount = taxableAmount }; // Act var taxAmount = taxCalculate.Calculate( taxCalculateOptions); // Assert Assert.Equal(expectedTaxAmount, taxAmount); }
public IActionResult Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] TaxCalculateOptions taxCalculateOptions, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var taxAmount = _taxCalculate.Calculate( taxCalculateOptions); return(new OkObjectResult($"The tax amount is {taxAmount:C2}.")); }
public decimal Calculate( TaxCalculateOptions taxCalculateOptions) { if (taxCalculateOptions.TaxableAmount < 0) { throw new ArgumentOutOfRangeException(nameof(taxCalculateOptions.TaxableAmount), "'taxableAmount' must be greater than 0."); } var taxAmount = taxCalculateOptions.TaxableAmount * taxCalculateOptions.TaxRate; // This rounds the result to two decimal places, e.g. 6.66666666 becomes 6.67 return(decimal.Round(taxAmount, 2, MidpointRounding.AwayFromZero)); }
public void When_Calculate( decimal taxRate, decimal taxableAmount, decimal expectedTaxAmount) { // Arrange var taxCalculate = new TaxCalculate(); var taxCalculateOptions = new TaxCalculateOptions { TaxRate = taxRate, TaxableAmount = taxableAmount }; var taxCalculateHttpTrigger = new TaxCalculateHttpTrigger( taxCalculate); // Act var result = taxCalculateHttpTrigger.Run( taxCalculateOptions, _logger); // Assert Assert.IsType <OkObjectResult>(result); var okObjectResult = (OkObjectResult)result; Assert.Equal($"The tax amount is {expectedTaxAmount:C2}.", okObjectResult.Value); }