@@ -11,6 +11,7 @@ namespace BuildingRegistry.Tests.AggregateTests.WhenRepairingBuilding
1111 using BuildingRegistry . Legacy ;
1212 using Extensions ;
1313 using Fixtures ;
14+ using NetTopologySuite . Geometries ;
1415 using Xunit ;
1516 using Xunit . Abstractions ;
1617 using BuildingGeometry = BuildingRegistry . Legacy . BuildingGeometry ;
@@ -23,6 +24,7 @@ namespace BuildingRegistry.Tests.AggregateTests.WhenRepairingBuilding
2324 using BuildingUnitPositionGeometryMethod = BuildingRegistry . Legacy . BuildingUnitPositionGeometryMethod ;
2425 using BuildingUnitStatus = BuildingRegistry . Legacy . BuildingUnitStatus ;
2526 using ExtendedWkbGeometry = BuildingRegistry . Legacy . ExtendedWkbGeometry ;
27+ using GeometryFactory = BuildingRegistry . GeometryFactory ;
2628
2729 public class GivenBuildingExists : BuildingRegistryTest
2830 {
@@ -63,5 +65,38 @@ public void WithUnitsDerivedButNotInCenter_ThenBuildingAndUnitsWereRepaired()
6365 BuildingRegistry . Building . BuildingUnitPositionGeometryMethod . DerivedFromObject ,
6466 new BuildingRegistry . Building . BuildingGeometry ( BuildingRegistry . Building . ExtendedWkbGeometry . CreateEWkb ( migrated . ExtendedWkbGeometry . ToByteArray ( ) ) , BuildingGeometryMethod . MeasuredByGrb ) . Center ) ) ) ) ;
6567 }
68+
69+ [ Fact ]
70+ public void WithUnitsDerivedButCloseToCenter_ThenBuildingAndUnitsWereRepaired ( )
71+ {
72+ var command = Fixture . Create < RepairBuilding > ( ) ;
73+
74+ var migrated = new BuildingWasMigratedBuilder ( Fixture )
75+ . WithBuildingStatus ( BuildingStatus . Realized )
76+ . Build ( ) ;
77+
78+ var reader = WKBReaderFactory . Create ( ) ;
79+ reader . HandleSRID = true ;
80+
81+ var centroid = reader . Read ( migrated . ExtendedWkbGeometry . ToByteArray ( ) ) . Centroid ;
82+ var closePosition = new Point ( centroid . X - 0.001 , centroid . Y + 0.001 ) { SRID = GeometryFactory . CreateGeometryFactory ( ) . SRID } ;
83+
84+ migrated . BuildingUnits . Add ( new BuildingWasMigrated . BuildingUnit ( new BuildingUnit (
85+ new BuildingUnitId ( Fixture . Create < Guid > ( ) ) ,
86+ new PersistentLocalId ( Fixture . Create < int > ( ) ) ,
87+ BuildingUnitFunction . Unknown ,
88+ BuildingUnitStatus . Realized ,
89+ [ ] ,
90+ new BuildingUnitPosition ( ExtendedWkbGeometry . CreateEWkb ( closePosition . AsBinary ( ) ) , BuildingUnitPositionGeometryMethod . DerivedFromObject ) ,
91+ new BuildingGeometry ( new ExtendedWkbGeometry ( migrated . ExtendedWkbGeometry . ToByteArray ( ) ) , BuildingRegistry . Legacy . BuildingGeometryMethod . MeasuredByGrb ) ,
92+ false ) ) ) ;
93+
94+ Assert ( new Scenario ( )
95+ . Given (
96+ new BuildingStreamId ( Fixture . Create < BuildingPersistentLocalId > ( ) ) ! ,
97+ migrated )
98+ . When ( command )
99+ . ThenNone ( ) ) ;
100+ }
66101 }
67102}
0 commit comments