private Specification <BuildReadModel> CreateFromDistributionBuildsFilter(DistributionBuildsFilter filter) { List <Specification <BuildReadModel> > specifications = new(); if (filter.LifeCycleStates.Any()) { specifications.Add(new WithLifeCycleStateSpecification(filter.LifeCycleStates)); } if (filter.Tags.Any()) { specifications.Add(new WithTagsSpecification(filter.Tags, filter.TagsCondition)); } if (filter.Suffixes.Any()) { specifications.Add(new WithSuffixesSpecification(filter.Suffixes, filter.SuffixesCondition)); } if (filter.Builds.Any()) { specifications.Add(new WithBuildNumbersSpecification(filter.Builds)); } if (specifications.Count == 0) { return(null); } return(new AndSpecification <BuildReadModel>(specifications.ToArray())); }
public async Task <IList <BuildReadModel> > FilterBuilds([FromBody] DistributionBuildsFilter filter) { var user = authorizedUserProvider.Get(); return(await mediator.Send(new GetBuildsByFilter.Query { Filter = filter, UserSid = user.Sid, IsAdmin = user.IsAdmin })); }
/// <inheritdoc /> public Specification <BuildReadModel> CreateFromFilter(DistributionBuildsFilter filter) { List <Specification <BuildReadModel> > specifications = new (); Specification <BuildReadModel> buildsFilterSpecification = CreateFromDistributionBuildsFilter(filter); if (buildsFilterSpecification != null) { specifications.Add(buildsFilterSpecification); } specifications.AddRange(new List <Specification <BuildReadModel> > { new WithDistributionsIdsSpecification(filter.DistributionId), new WithCreationDateRangeSpecification(filter.CreationDateRange) }); return(new AndSpecification <BuildReadModel>(specifications.ToArray())); }
public async Task CreateFromFilter_IsSatisfiedBy_ResultExpected( DistributionBuildsFilter filter, BuildReadModel entityToCheck, bool expectedResult) { var mockDistro = new Mock <IReadOnlyRepository <DistributionReadModel> >(); mockDistro .Setup(x => x.QueryAll( It.IsAny <Expression <Func <DistributionReadModel, bool> > >(), It.IsAny <CancellationToken>()) ) .ReturnsAsync(new List <DistributionReadModel>()); var distributionBuildsSpecificationFactory = new DistributionBuildsSpecificationFactory(mockDistro.Object); Specification <BuildReadModel> specification = await distributionBuildsSpecificationFactory.CreateFromFilter(filter, null, true); bool result = specification.IsSatisfiedBy(entityToCheck); Assert.Equal(expectedResult, result); }