private async Task SendNotification(string type, BuildReadModel oldBuild, BuildReadModel newBuild)
        {
            Guid        distributionId = newBuild.IsUnTracked ? oldBuild.DistributionId : newBuild.DistributionId;
            List <User> users          = await distributionsRepository.ProjectOne(x => x.Id == distributionId, x => x.Owners);

            await mediator.Publish(new SendDiffEntitiesNotifications.Notification(type, oldBuild, newBuild, users));
        }
        public async Task <IActionResult> Get([Required(AllowEmptyStrings = false)] string location, BuildSourceType sourceType)
        {
            BuildReadModel build =
                await buildReadOnlyRepository
                .WithCaseSensitive()
                .Query(x => x.Location == location && x.SourceType == sourceType);

            return(Ok(new GetBuildResponse {
                Build = mapper.Map <BuildDto>(build)
            }));
        }
        public void IsSatisfiedBy_BuildNumbers_ResultExpected(
            string[] specificationbuildNumbers,
            string buildNumber,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                Number = buildNumber
            };
            var specification = new WithBuildNumbersSpecification(specificationbuildNumbers);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
        public void IsSatisfiedBy_LifeCycleStates_ResultExpected(
            LifeCycleState[] specificationLifeCycleStates,
            LifeCycleState buildLifeCycleState,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                LifeCycleState = buildLifeCycleState
            };
            var specification = new WithLifeCycleStateSpecification(specificationLifeCycleStates);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
Esempio n. 5
0
        private void IsSatisfiedBy_BuildDateWithRange_ResultExpected(
            Guid specificationDistributionId,
            Guid buildDistributionId,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                DistributionId = buildDistributionId
            };
            var specification = new WithDistributionsIdsSpecification(specificationDistributionId);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
Esempio n. 6
0
        private void IsSatisfiedBy_ReleaseNumbers_ResultExpected(
            string specificationReleaseNumber,
            string buildReleaseNumber,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                ReleaseNumber = buildReleaseNumber
            };
            var specification = new WithReleaseNumberSpecification(specificationReleaseNumber);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
        private void IsSatisfiedBy_WithSuffixes_ResultExpected(
            string[] specificationSuffixes,
            SelectCondition condition,
            string[] buildSuffixes,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                Suffixes = buildSuffixes.ToList()
            };
            var specification = new WithSuffixesSpecification(specificationSuffixes, condition);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
        public void IsSatisfiedBy_WithTags_ResultExpected(
            string[] specificationTags,
            SelectCondition tagsCondition,
            string[] buildTags,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                Tags = buildTags.ToList()
            };
            var specification = new WithTagsSpecification(specificationTags, tagsCondition);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
Esempio n. 9
0
        private void IsSatisfiedBy_BuildDateInsideRange_ResultExpected(
            DateTime startRange,
            DateTime endRange,
            DateTime buildDate,
            bool expectedResult)
        {
            var build = new BuildReadModel {
                BuildDate = buildDate
            };
            var range = new DateRange {
                StartDate = startRange, EndDate = endRange
            };
            var specification = new WithCreationDateRangeSpecification(range);

            var result = specification.IsSatisfiedBy(build);

            Assert.Equal(expectedResult, result);
        }
        private async Task Update(Event @event, Action <BuildReadModel> update, CancellationToken cancellationToken)
        {
            Guid buildId = @event.Metadata.AggregateId;

            BuildReadModel build = await buildRepository.Query(b => b.Id == buildId, cancellationToken);

            if (build == null)
            {
                throw new UpdateBuildException($"Build {buildId} not found.");
            }

            BuildReadModel oldBuild = build.DeepClone();

            update(build);

            await buildRepository.Update(x => x.Id == buildId, build, cancellationToken);

            await SendNotification(ServerEventType.BuildUpdated, oldBuild, build);
        }
        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);
        }
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="buildReadOnlyRepository"><see cref="IReadOnlyRepository{BuildReadModel}"/>.</param>
        /// <param name="mediator">Медиатр.</param>
        public UpdateBuildEventValidator(IReadOnlyRepository <BuildReadModel> buildReadOnlyRepository, IMediator mediator)
        {
            CascadeMode = CascadeMode.Stop;

            RuleFor(b => b.BuildId).NotEmpty();
            RuleFor(b => b.Location).NotEmpty();
            RuleFor(b => b.Suffixes).NotNull();
            RuleFor(b => b.Number).NotEmpty();

            RuleFor(e => e)
            .CustomAsync(async(@event, context, token) =>
            {
                BuildReadModel build = await buildReadOnlyRepository.Query(x => x.Id == @event.BuildId, token);
                if (build == null)
                {
                    context.AddFailure("Build doesn't exist");
                    return;
                }

                IEnumerable <BuildReadModel> existedBuilds =
                    await mediator.Send(new GetSameBuilds.Query()
                {
                    DistributionId = build.DistributionId,
                    BuildNumber    = @event.Number,
                    Suffixes       = @event.Suffixes,
                    SourceType     = build.SourceType,
                });

                var otherBuilds = existedBuilds.Where(x => x.Id != @event.BuildId);

                if (otherBuilds.Any())
                {
                    AddExistBuildsValidationFailure(otherBuilds, context);
                }
            });
        }