public IActionResult Create([FromBody] ExpenseReportReq req) { var report = _expenseService.GetExpenseReport(req); _logger.LogInformation("Report ready."); return(Ok(report)); }
public void Post_TextWithInvalidXml_Returns_HttpBadRequest() { var req = new ExpenseReportReq { TextWithXml = Resources.TextWithInvalidXml }; var request = new RestRequest(_apiurl, Method.POST); request.AddJsonBody(req); var res = RestClient.Execute(request); Assert.AreEqual(HttpStatusCode.BadRequest, res.StatusCode); }
public void Post_TextWithMissingCostCentre_Returns_ReportWithUnknownCostCentre() { var req = new ExpenseReportReq { TextWithXml = Resources.TextWithMissingCostCentre }; var request = new RestRequest(_apiurl, Method.POST); request.AddJsonBody(req); var res = RestClient.Execute <ExpenseReport>(request); Assert.AreEqual("UNKNOWN", res.Data.Expense.CostCentre); }
public void Post_TextWithMissingTotal_Returns_HttpNotFound() { var req = new ExpenseReportReq { TextWithXml = Resources.TextWithMissingTotal }; var request = new RestRequest(_apiurl, Method.POST); request.AddJsonBody(req); var res = RestClient.Execute(request); Assert.AreEqual(HttpStatusCode.NotFound, res.StatusCode); }
public void Post_TextWithValidXml_Returns_Report() { var req = new ExpenseReportReq { TextWithXml = Resources.TextWithValidXml }; var request = new RestRequest(_apiurl, Method.POST); request.AddJsonBody(req); var res = RestClient.Execute <ExpenseReport>(request); Assert.AreEqual(1024.01M, res.Data.Expense.Total); Assert.AreEqual("personal card", res.Data.Expense.PaymentMethod); Assert.AreEqual("DEV002", res.Data.Expense.CostCentre); Assert.AreEqual("Tuesday 27 April 2017", res.Data.Date); Assert.AreEqual("development team’s project end celebration dinner", res.Data.Description); Assert.AreEqual("Viaduct Steakhouse", res.Data.Vendor); }
public ExpenseReport GetExpenseReport(ExpenseReportReq req) { // Get expense and GST amount var text = req.TextWithXml; var expense = ExtractExpenseMarkup(text); var gstAmount = CalculateGSTAmount(expense.Total.Value); // Prepare the report _logger.LogInformation("Preparing expense report..."); var report = new ExpenseReport { Expense = expense, Vendor = _xmlService.ExtractXmlIslandInnerValue(text, VendorTag), Description = _xmlService.ExtractXmlIslandInnerValue(text, DescriptionTag), Date = _xmlService.ExtractXmlIslandInnerValue(text, DateTag) }; return(report); }