public ViewResult All()
{
var categoryWithEmptyTag =
new CategoryViewModel
{
Tag = new TagViewModel { Name = "" },
Inquiries = repository
.Query<Inquiry>(x=>x.Client,x=>x.Tags)
.Where(x => !x.Tags.Any() && x.ReferenceDate.HasValue)
.Select(inquiry => new TaggedInquiryViewModel
{
Id = inquiry.Id,
FirstName = inquiry.Client.FirstName,
LastName = inquiry.Client.LastName,
Subject = inquiry.Subject
})
.ToList()
};
var categories = repository
.Query<Tag>()
.Where(x => x.Inquiries.Any(z => z.ReferenceDate.HasValue))
.Select(tag => new CategoryViewModel
{
Tag = new TagViewModel
{
Name = tag.Name,
},
Inquiries = tag.Inquiries
.Where(x => x.ReferenceDate.HasValue)
.Select(x => new TaggedInquiryViewModel
{
Id = x.Id,
FirstName = x.Client.FirstName,
LastName = x.Client.LastName,
Subject = x.Subject
})
})
.ToList();
if (categoryWithEmptyTag.Inquiries.Any())
{
categories.Add(categoryWithEmptyTag);
}
return View(new AllInquiriesViewModel
{
InquiryDetailsUrl = Url.Action("Details", "Inquiries"),
Categories = categories
});
}
public void Should_ReturnFullListOfInquiriesSortedByTag_WhenCalledAllFunction() { // arrange var repository = Substitute.For<IRepository>(); repository.Query<Inquiry>().ReturnsForAnyArgs(inquiries.AsQueryable()); repository.Query<Tag>().ReturnsForAnyArgs(tags.AsQueryable()); var inquiriesController = new InquiriesController(repository).MockHttpContext(); // act var viewResult = (AllInquiriesViewModel) inquiriesController.All().Model; var categories = viewResult.Categories.ToList(); // assert categories.Count.Should().Be(2); categories[1].Tag.Name.Should().Be(""); categories[1].Inquiries.Count().Should().Be(20); categories[0].Tag.Name.Should().Be("tag2"); categories[0].Inquiries.Count().Should().Be(10); }