예제 #1
0
        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
            }));
        }
예제 #3
0
        /// <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);
        }