Beispiel #1
0
        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);
        }
Beispiel #6
0
        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);
        }