diff --git a/src/BuildingRegistry.Projections.Integration/Building/Version/BuildingVersionProjections-BuildingUnitEvents.cs b/src/BuildingRegistry.Projections.Integration/Building/Version/BuildingVersionProjections-BuildingUnitEvents.cs index 35934f847..15e9c8713 100644 --- a/src/BuildingRegistry.Projections.Integration/Building/Version/BuildingVersionProjections-BuildingUnitEvents.cs +++ b/src/BuildingRegistry.Projections.Integration/Building/Version/BuildingVersionProjections-BuildingUnitEvents.cs @@ -544,12 +544,12 @@ await context.CreateNewBuildingVersion( When>(async (context, message, ct) => { - foreach (var buildingUnitReaddresses in message.Message.BuildingUnitsReaddresses) - { - await context.CreateNewBuildingVersion( - message.Message.BuildingPersistentLocalId, - message, - building => + await context.CreateNewBuildingVersion( + message.Message.BuildingPersistentLocalId, + message, + building => + { + foreach (var buildingUnitReaddresses in message.Message.BuildingUnitsReaddresses) { var buildingUnit = building.BuildingUnits.Single(x => x.BuildingUnitPersistentLocalId == buildingUnitReaddresses.BuildingUnitPersistentLocalId); @@ -575,9 +575,9 @@ await context.CreateNewBuildingVersion( } buildingUnit.VersionTimestamp = message.Message.Provenance.Timestamp; - }, - ct); - } + } + }, + ct); }); When>(async (context, message, ct) => diff --git a/src/BuildingRegistry.Projections.Integration/Building/VersionFromMigration/BuildingVersionProjections-BuildingUnitEvents.cs b/src/BuildingRegistry.Projections.Integration/Building/VersionFromMigration/BuildingVersionProjections-BuildingUnitEvents.cs index 4bdaeabb1..412dfe614 100644 --- a/src/BuildingRegistry.Projections.Integration/Building/VersionFromMigration/BuildingVersionProjections-BuildingUnitEvents.cs +++ b/src/BuildingRegistry.Projections.Integration/Building/VersionFromMigration/BuildingVersionProjections-BuildingUnitEvents.cs @@ -544,12 +544,12 @@ await context.CreateNewBuildingVersion( When>(async (context, message, ct) => { - foreach (var buildingUnitReaddresses in message.Message.BuildingUnitsReaddresses) - { - await context.CreateNewBuildingVersion( - message.Message.BuildingPersistentLocalId, - message, - building => + await context.CreateNewBuildingVersion( + message.Message.BuildingPersistentLocalId, + message, + building => + { + foreach (var buildingUnitReaddresses in message.Message.BuildingUnitsReaddresses) { var buildingUnit = building.BuildingUnits.Single(x => x.BuildingUnitPersistentLocalId == buildingUnitReaddresses.BuildingUnitPersistentLocalId); @@ -575,9 +575,9 @@ await context.CreateNewBuildingVersion( } buildingUnit.VersionTimestamp = message.Message.Provenance.Timestamp; - }, - ct); - } + } + }, + ct); }); When>(async (context, message, ct) => diff --git a/test/BuildingRegistry.Tests/ProjectionTests/Integration/Building/BuildingVersionProjectionsTests-BuildingUnitEvents-Readdress.cs b/test/BuildingRegistry.Tests/ProjectionTests/Integration/Building/BuildingVersionProjectionsTests-BuildingUnitEvents-Readdress.cs index 9dfd64998..9624cd9b1 100644 --- a/test/BuildingRegistry.Tests/ProjectionTests/Integration/Building/BuildingVersionProjectionsTests-BuildingUnitEvents-Readdress.cs +++ b/test/BuildingRegistry.Tests/ProjectionTests/Integration/Building/BuildingVersionProjectionsTests-BuildingUnitEvents-Readdress.cs @@ -34,7 +34,7 @@ public async Task GivenOnlyPreviousBuildingUnitAddressRelationExistsWithCountOne .WithAddress(addressPersistentLocalId) .Build()) .Build(); - + var buildingUnitAddressWasReplacedBecauseAddressWasReaddressed = new BuildingUnitAddressWasReplacedBecauseAddressWasReaddressed( _fixture.Create(), buildingUnitPersistentLocalId, @@ -242,15 +242,24 @@ public async Task WhenBuildingBuildingUnitsAddressesWereReaddressed() var position = _fixture.Create(); var buildingUnitPersistentLocalId = _fixture.Create(); + var buildingUnitPersistentLocalId2 = new BuildingUnitPersistentLocalId(buildingUnitPersistentLocalId + 1); var sourceAddressPersistentLocalId = _fixture.Create(); - var destinationAddressPersistentLocalId = _fixture.Create(); + var sourceAddressPersistentLocalId2 = sourceAddressPersistentLocalId + 1; + var destinationAddressPersistentLocalId = sourceAddressPersistentLocalId2 + 10; + var destinationAddressPersistentLocalId2 = destinationAddressPersistentLocalId + 1; var buildingWasMigrated = new BuildingWasMigratedBuilder(_fixture) .WithBuildingUnit(new BuildingUnitBuilder(_fixture) .WithAddress(sourceAddressPersistentLocalId) .Build() - ).Build(); - + ) + .WithBuildingUnit(new BuildingUnitBuilder(_fixture) + .WithPersistentLocalId(buildingUnitPersistentLocalId2) + .WithAddress(sourceAddressPersistentLocalId2) + .Build() + ) + .Build(); + var buildingBuildingUnitsAddressesWereReaddressed = new BuildingBuildingUnitsAddressesWereReaddressed( _fixture.Create(), [ @@ -258,6 +267,11 @@ public async Task WhenBuildingBuildingUnitsAddressesWereReaddressed() _fixture.Create(), [new AddressPersistentLocalId(destinationAddressPersistentLocalId)], [new AddressPersistentLocalId(sourceAddressPersistentLocalId)] + ), + new BuildingUnitAddressesWereReaddressed( + buildingUnitPersistentLocalId2, + [new AddressPersistentLocalId(destinationAddressPersistentLocalId2)], + [new AddressPersistentLocalId(sourceAddressPersistentLocalId2)] ) ], []); @@ -301,6 +315,21 @@ await Sut var sourceAddress = buildingUnitVersion.Addresses.SingleOrDefault(x => x.AddressPersistentLocalId == sourceAddressPersistentLocalId); sourceAddress.Should().BeNull(); + + var buildingUnitVersion2 = buildingVersion!.BuildingUnits.SingleOrDefault(x => + x.BuildingUnitPersistentLocalId == buildingUnitPersistentLocalId2); + buildingUnitVersion2.Should().NotBeNull(); + + buildingUnitVersion2!.VersionTimestamp.Should().Be(buildingBuildingUnitsAddressesWereReaddressed.Provenance.Timestamp); + buildingUnitVersion2.Type.Should().Be("EventName"); + + var destinationAddress2 = buildingUnitVersion2.Addresses.SingleOrDefault(x => + x.AddressPersistentLocalId == destinationAddressPersistentLocalId2); + destinationAddress2.Should().NotBeNull(); + + var sourceAddress2 = buildingUnitVersion2.Addresses.SingleOrDefault(x => + x.AddressPersistentLocalId == sourceAddressPersistentLocalId2); + sourceAddress2.Should().BeNull(); }); } }