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); }
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); }
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); }
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); } }); }