public void Should_ReturnSingleInquiryInEveryCategory_WhenSeveralTagsAreAssignedAndAllViewIsRequested()
{
// arrange
var tags = Builder<Tag>.CreateListOfSize(2).Build();
var inquiries = Builder<Inquiry>.CreateListOfSize(10)
.All()
.With(x => x.Client = Builder<Person>.CreateNew().Build())
.With(x => x.ReferenceDate = July.The14th)
.With(x => x.Tags = tags.Take(1).ToList())
.TheLast(3)
.With(x => x.Tags = tags)
.Build();
tags.ForEach(x => x.Inquiries = inquiries.Where(z => z.Tags.Any(y => y.Name == x.Name)).ToList());
var repository = Substitute.For<IRepository>();
repository.Query<Tag>().ReturnsForAnyArgs(tags.AsQueryable());
repository.Query<Inquiry>().ReturnsForAnyArgs(inquiries.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[0].Tag.Name.Should().Be("Name1");
categories[0].Inquiries.Count().Should().Be(10);
categories[1].Tag.Name.Should().Be("Name2");
categories[1].Inquiries.Count().Should().Be(3);
categories[0].Inquiries.Should().Contain(x => x.Id == 9);
categories[1].Inquiries.Should().Contain(x => x.Id == 9);
categories[0].Inquiries.Should().Contain(x => x.Id == 1);
categories[1].Inquiries.Should().NotContain(x => x.Id == 1);
}