public Task When_adding_grade_separated_junctions() { var message = _fixture.Create <BackOffice.Messages.RoadNetworkChangesBasedOnArchiveAccepted>(); var expectedRecords = Array.ConvertAll(message.Changes, change => { var junction = change.GradeSeparatedJunctionAdded; return((object)new GradeSeparatedJunctionRecord { Id = junction.Id, DbaseRecord = new GradeSeparatedJunctionDbaseRecord { OK_OIDN = { Value = junction.Id }, TYPE = { Value = GradeSeparatedJunctionType.Parse(junction.Type).Translation.Identifier }, LBLTYPE = { Value = GradeSeparatedJunctionType.Parse(junction.Type).Translation.Name }, BO_WS_OIDN = { Value = junction.UpperRoadSegmentId }, ON_WS_OIDN = { Value = junction.LowerRoadSegmentId }, BEGINTIJD = { Value = Editor.Projections.LocalDateTimeTranslator.TranslateFromWhen(message.When) }, BEGINORG = { Value = message.OrganizationId }, LBLBGNORG = { Value = message.Organization } }.ToBytes(_services.MemoryStreamManager, Encoding.UTF8) }); }); return(new RoadRegistry.Product.Projections.GradeSeparatedJunctionRecordProjection(_services.MemoryStreamManager, Encoding.UTF8) .Scenario() .Given(message) .Expect(expectedRecords)); }
public Task When_importing_grade_separated_junctions() { var data = _fixture .CreateMany <ImportedGradeSeparatedJunction>() .Select(junction => { var expected = new GradeSeparatedJunctionRecord { Id = junction.Id, DbaseRecord = new GradeSeparatedJunctionDbaseRecord { OK_OIDN = { Value = junction.Id }, TYPE = { Value = GradeSeparatedJunctionType.Parse(junction.Type).Translation.Identifier }, LBLTYPE = { Value = GradeSeparatedJunctionType.Parse(junction.Type).Translation.Name }, BO_WS_OIDN = { Value = junction.UpperRoadSegmentId }, ON_WS_OIDN = { Value = junction.LowerRoadSegmentId }, BEGINTIJD = { Value = junction.Origin.Since }, BEGINORG = { Value = junction.Origin.OrganizationId }, LBLBGNORG = { Value = junction.Origin.Organization } }.ToBytes(_services.MemoryStreamManager, Encoding.UTF8) }; return(new { junction, expected }); }).ToList(); return(new RoadRegistry.Product.Projections.GradeSeparatedJunctionRecordProjection(new RecyclableMemoryStreamManager(), Encoding.UTF8) .Scenario() .Given(data.Select(d => d.junction)) .Expect(data.Select(d => d.expected))); }
private static GradeSeparatedJunctionTypeDbaseRecord RecordFrom(GradeSeparatedJunctionType item) { return(new GradeSeparatedJunctionTypeDbaseRecord { TYPE = { Value = item.Translation.Identifier }, LBLTYPE = { Value = item.Translation.Name }, DEFTYPE = { Value = item.Translation.Description } }); }
public AddGradeSeparatedJunction( GradeSeparatedJunctionId temporaryId, GradeSeparatedJunctionType type, RoadSegmentId upperSegmentId, RoadSegmentId lowerSegmentId) { TemporaryId = temporaryId; Type = type ?? throw new ArgumentNullException(nameof(type)); UpperSegmentId = upperSegmentId; LowerSegmentId = lowerSegmentId; }
private AddGradeSeparatedJunction Translate(Messages.AddGradeSeparatedJunction command, IRequestedChangeIdentityTranslator translator) { var permanent = _nextGradeSeparatedJunctionId(); var temporary = new GradeSeparatedJunctionId(command.TemporaryId); var upperSegmentId = new RoadSegmentId(command.UpperSegmentId); RoadSegmentId?temporaryUpperSegmentId; if (translator.TryTranslateToPermanent(upperSegmentId, out var permanentUpperSegmentId)) { temporaryUpperSegmentId = upperSegmentId; upperSegmentId = permanentUpperSegmentId; } else { temporaryUpperSegmentId = null; } var lowerSegmentId = new RoadSegmentId(command.LowerSegmentId); RoadSegmentId?temporaryLowerSegmentId; if (translator.TryTranslateToPermanent(lowerSegmentId, out var permanentLowerSegmentId)) { temporaryLowerSegmentId = lowerSegmentId; lowerSegmentId = permanentLowerSegmentId; } else { temporaryLowerSegmentId = null; } return(new AddGradeSeparatedJunction( permanent, temporary, GradeSeparatedJunctionType.Parse(command.Type), upperSegmentId, temporaryUpperSegmentId, lowerSegmentId, temporaryLowerSegmentId)); }
public GradeSeparatedJunctionRecordProjection(RecyclableMemoryStreamManager manager, Encoding encoding) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } When <Envelope <ImportedGradeSeparatedJunction> >(async(context, envelope, token) => { var translation = GradeSeparatedJunctionType.Parse(envelope.Message.Type).Translation; var junctionRecord = new GradeSeparatedJunctionRecord { Id = envelope.Message.Id, DbaseRecord = new GradeSeparatedJunctionDbaseRecord { OK_OIDN = { Value = envelope.Message.Id }, TYPE = { Value = translation.Identifier }, LBLTYPE = { Value = translation.Name }, BO_WS_OIDN = { Value = envelope.Message.UpperRoadSegmentId }, ON_WS_OIDN = { Value = envelope.Message.LowerRoadSegmentId }, BEGINTIJD = { Value = envelope.Message.Origin.Since }, BEGINORG = { Value = envelope.Message.Origin.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Origin.Organization }, }.ToBytes(manager, encoding) }; await context.AddAsync(junctionRecord, token); }); When <Envelope <RoadNetworkChangesBasedOnArchiveAccepted> >(async(context, envelope, token) => { foreach (var change in envelope.Message.Changes.Flatten()) { switch (change) { case GradeSeparatedJunctionAdded junction: var translation = GradeSeparatedJunctionType.Parse(junction.Type).Translation; var junctionRecord = new GradeSeparatedJunctionRecord { Id = junction.Id, DbaseRecord = new GradeSeparatedJunctionDbaseRecord { OK_OIDN = { Value = junction.Id }, TYPE = { Value = translation.Identifier }, LBLTYPE = { Value = translation.Name }, BO_WS_OIDN = { Value = junction.UpperRoadSegmentId }, ON_WS_OIDN = { Value = junction.LowerRoadSegmentId }, BEGINTIJD = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINORG = { Value = envelope.Message.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Organization }, }.ToBytes(manager, encoding) }; await context.AddAsync(junctionRecord, token); break; } } }); }