Ejemplo n.º 1
0
        public void Post_NoExceptions_OkResponseWithExtractedData()
        {
            _emailCleaner.Clean("").ReturnsForAnyArgs("");
            var extractedExpenseData = new ExtractedExpenseData
            {
                Expense = new Expense {
                    CostCenter = "DEV002", Total = 1024.01M, PaymentMethod = "personal card"
                },
                Vendor      = "Viaduct Steakhouse",
                Description = "development team’s project end celebration dinner",
                Date        = "Tuesday 27 April 2017"
            };

            _emailParser.ExtractData("").ReturnsForAnyArgs(extractedExpenseData);
            _totalsCalculator.Calculate(0M).ReturnsForAnyArgs(new ExpenseTotals());

            // Act
            var result = _controller.Post(new PostEmailDataRequest());

            // Assert
            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnValue = Assert.IsType <PostEmailDataResponse>(okResult.Value);

            Assert.Equal("DEV002", returnValue.ExtractedData.Expense.CostCenter);
            Assert.Equal(1024.01M, returnValue.ExtractedData.Expense.Total);
            Assert.Equal("personal card", returnValue.ExtractedData.Expense.PaymentMethod);
            Assert.Equal("Viaduct Steakhouse", returnValue.ExtractedData.Vendor);
            Assert.Equal("development team’s project end celebration dinner", returnValue.ExtractedData.Description);
            Assert.Equal("Tuesday 27 April 2017", returnValue.ExtractedData.Date);
        }
Ejemplo n.º 2
0
        public void ExtractData_ValidFullEmailText_ValidEmailDataModel()
        {
            // Data obtained from http://gstcal.co.nz/default.aspx
            var calculatedExpenseData = _totalsCalculator.Calculate(1024.01M);

            Assert.Equal(1024.01M, calculatedExpenseData.TotalIncludingGst);
            Assert.Equal(133.57M, calculatedExpenseData.Gst);
            Assert.Equal(890.44M, calculatedExpenseData.TotalExcludingGst);
        }
Ejemplo n.º 3
0
        public IActionResult Post([FromBody] PostEmailDataRequest input)
        {
            PostEmailDataResponse response;

            try
            {
                var cleanedText   = _emailCleaner.Clean(input.Data);
                var extractedData = _emailParser.ExtractData(cleanedText);
                var totals        = _totalsCalculator.Calculate(extractedData.Expense.Total ?? 0);
                response = new PostEmailDataResponse {
                    ExtractedData = extractedData, Totals = totals
                };
            }
            catch (ExtractDataException ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
            catch (MissingTotalException ex)
            {
                return(BadRequest(ex.Message));
            }

            return(Ok(response));
        }