/// <summary> /// Extracts the specified message content. /// </summary> /// <param name="messageContent">Content of the message.</param> /// <returns></returns> /// <exception cref="ArgumentException">Value cannot be null or whitespace. - messageContent</exception> // TODO: This method only extracts a single Expense object. Nice to have would be to expand and extract multiple Expenses. public Expense Extract(string messageContent) { if (string.IsNullOrWhiteSpace(messageContent)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(messageContent)); } ValidateMessageContent(messageContent); ExpenseDto expense = ExtractAndDeserializeExpenseXmlElement(messageContent); VendorDto vendor = ExtractAndDeserializeXmlElement <VendorDto>(messageContent, ExpenseConstants.Vendor); DescriptionDto description = ExtractAndDeserializeXmlElement <DescriptionDto>(messageContent, ExpenseConstants.Description); EventDateDto eventDate = ExtractAndDeserializeXmlElement <EventDateDto>(messageContent, ExpenseConstants.Date); return(ExpenseMapper.Map(expense, vendor, description, eventDate)); }
public void MissingCostCentreDefaultsToUnknown(string costCentre) { ExpenseDto expenseDto = new ExpenseDto { Expense = new ExpenseDataDtoBuilder() .WithCostCentre(costCentre) .WithTotal(1024.01m) .Build() }; VendorDto vendorDto = new VendorDtoBuilder().Build(); DescriptionDto descriptionDto = new DescriptionDtoBuilder().Build(); EventDateDto eventDateDto = new EventDateDtoBuilder().Build(); Expense expense = ExpenseMapper.Map(expenseDto, vendorDto, descriptionDto, eventDateDto); expense.CostCentre.Should().Be("UNKNOWN"); }
public IActionResult Add(ExpenseMapper em) { if (ModelState.IsValid) { if (em.MembersInvolved.Count() == 1 && em.MembersInvolved.Contains(em.Name)) { ModelState.AddModelError("MembersInvolved", $"Choose different member than {em.Name}"); ViewBag.TableNumber = em.TableNumber; return(View()); } Expense expense = ExpenseMaker.CreateExpense(em.TableNumber, em.Name, em.Amount, em.MembersInvolved, em.Comment); expenseRepository.AddNewExpense(expense); return(RedirectToAction("Success", new { id = em.TableNumber })); } ViewBag.TableNumber = em.TableNumber; return(View(em)); }
public void CanCalculateExpectedTotals() { ExpenseDto expenseDto = new ExpenseDto { Expense = new ExpenseDataDtoBuilder() .WithCostCentre("DEV002") .WithTotal(1024.01m) .Build() }; VendorDto vendorDto = new VendorDtoBuilder().Build(); DescriptionDto descriptionDto = new DescriptionDtoBuilder().Build(); EventDateDto eventDateDto = new EventDateDtoBuilder().Build(); Expense expense = ExpenseMapper.Map(expenseDto, vendorDto, descriptionDto, eventDateDto); expense.CostCentre.Should().Be(expenseDto.Expense.CostCentre); expense.TotalInclGst.Should().Be(expenseDto.Expense.Total); expense.TotalExclGst.Should().Be(890.44m); expense.GstAmount.Should().Be(133.57m); expense.Vendor.Should().Be(vendorDto.Vendor); expense.Description.Should().Be(descriptionDto.Description); expense.EventDate.Should().Be(eventDateDto.Date); }