public void GetTickets_gets_query_provider_from_factory(IGetsTicketSpecification specProvider, ISpecificationExpression <Ticket> spec, IGetsQueryForTickets queryProvider, TicketListRequest request) { // Arrange var queryProviderFactoryUsed = false; var specFactory = GetSpecFactory(s => specProvider); var queryProviderFactory = GetQueryProviderFactory(s => { if (s != spec) { return(null); } queryProviderFactoryUsed = true; return(queryProvider); }); Mock.Get(specProvider).Setup(x => x.GetSpecification()).Returns(spec); Mock.Get(queryProvider).Setup(x => x.GetQuery()).Returns(() => null); var sut = new TicketLister(queryProviderFactory, specFactory); // Act sut.GetTickets(request); // Assert Assert.That(queryProviderFactoryUsed, Is.True); }
IReadOnlyList <Ticket> GetTickets(IGetsTicketSpecification specificationProvider) { if (specificationProvider == null) { return(new Ticket[0]); } var spec = specificationProvider.GetSpecification(); var queryProvider = queryProviderFactory(spec); var query = queryProvider.GetQuery(); if (query == null) { return(new Ticket[0]); } query = query.OrderByDescending(x => x.CreationTimestamp); return(query .FetchChild(x => x.User) .FetchChild(x => x.Type) .FetchChildren(x => x.PrimaryRelationships) .FetchChildren(x => x.SecondaryRelationships) .ToList()); }
public void GetTickets_gets_specification_from_factory(IGetsTicketSpecification specProvider, IGetsQueryForTickets queryProvider, TicketListRequest request, Search search) { // Arrange var specFactoryUsed = false; var specFactory = GetSpecFactory(s => { if (s != search) { return(null); } specFactoryUsed = true; return(specProvider); }); Mock.Get(queryProvider).Setup(x => x.GetQuery()).Returns(() => null); var sut = new TicketLister(GetQueryProviderFactory(x => queryProvider), specFactory); request.SearchModel = search; // Act sut.GetTickets(request); // Assert Assert.That(specFactoryUsed, Is.True); }
public CurrentProjectCriterionAddingSpecProviderDecorator(Search search, IGetsTicketSpecification wrapped, IGetsWhetherSearchContainsProjectCriteria projectCriteriaDetector, IGetsCurrentProject projectProvider, Func <IIdentity <Project>, ISpecForTicketInProject> projectSpecFactory) { this.search = search ?? throw new ArgumentNullException(nameof(search)); this.wrapped = wrapped ?? throw new ArgumentNullException(nameof(wrapped)); this.projectCriteriaDetector = projectCriteriaDetector ?? throw new ArgumentNullException(nameof(projectCriteriaDetector)); this.projectProvider = projectProvider ?? throw new ArgumentNullException(nameof(projectProvider)); this.projectSpecFactory = projectSpecFactory ?? throw new ArgumentNullException(nameof(projectSpecFactory)); }
public void GetTickets_returns_result_using_query(IGetsTicketSpecification specProvider, IGetsQueryForTickets queryProvider, TicketListRequest request, Ticket ticket) { // Arrange var specFactory = GetSpecFactory(s => specProvider); var queryProviderFactory = GetQueryProviderFactory(s => queryProvider); var sut = new TicketLister(queryProviderFactory, specFactory); var query = new [] { ticket }.AsQueryable(); Mock.Get(queryProvider).Setup(x => x.GetQuery()).Returns(query); // Act var result = sut.GetTickets(request); // Assert Assert.That(result.FirstOrDefault(), Is.EqualTo(ticket)); }