public ViewResult Week()
{
var today = Clock.Now.Date;
var start = today.GetStartOfBusinessWeek();
var end = today.GetEndOfBusinessWeek().AddDays(1);
var thisWeekInquiries = repository.Query<Inquiry>(x => x.Client)
.Where(x => x.ReferenceDate >= start && x.ReferenceDate < end)
.ToList();
return View(new WeekViewModel
{
Days =
from index in Enumerable.Range(0, 5)
let date = start.AddDays(index)
select new WeekItemViewModel
{
Name = "{0} ({1})".Fill(date.ToString("ddd"), date.ToString("dd.MM")),
Date = date,
Inquiries = thisWeekInquiries
.Where(x => x.ReferenceDate.Value.Date == date)
.OrderBy(x => x.ReferenceDate)
.Select(x => new InquiryViewModel
{
Id = x.Id,
Name = x.Client.FullName,
Subject = x.Subject,
Email = x.Client.Email,
Assignee = x.SafeGet(z => z.Assignee.FullName),
Phone = x.Client.Phone,
PhotoUri = x.Client.PhotoUri
})
},
Employees = repository.Query<Person>()
.Where(x => x.Role == PersonRole.Employee)
.OrderBy(x => x.FirstName)
.ThenBy(x => x.LastName)
.ToList(),
Tags = repository.Query<Tag>().ToList()
});
}
public void Should_ReturnListOfInquiriesForCurrentBusinessWeekAndFullListOfEmployees_WhenWeekRequested() { // arrange var mock = new Mock<IRepository>(); mock.Setup(z => z.Query<Inquiry>(x => x.Client)).Returns(inquiries.AsQueryable()); mock.Setup(x => x.Query<Person>()).Returns( Builder<Person>.CreateListOfSize(10) .All() .With(x => x.Role = PersonRole.Client) .Random(7) .With(x => x.Role = PersonRole.Employee) .Build() .AsQueryable()); var inquiriesController = new InquiriesController(mock.Object); // act var viewModel = inquiriesController.Week().Model as WeekViewModel; var inquiriesList = viewModel.Days; // assert var inquiriesCount = inquiriesList.Sum(day => day.Inquiries.Count()); inquiriesCount.Should().Be(10); var employeesList = viewModel.Employees; employeesList.Count.Should().Be(7); }