Index: Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCalculationCreateExtensions.cs
===================================================================
diff -u -r87b871f1ce03d1909e2402890a01154c5d9b797b -r06b82f3137d117242ecf5f69bded51c103216c0a
--- Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCalculationCreateExtensions.cs (.../HydraulicBoundaryLocationCalculationCreateExtensions.cs) (revision 87b871f1ce03d1909e2402890a01154c5d9b797b)
+++ Application/Ringtoets/src/Application.Ringtoets.Storage/Create/HydraulicBoundaryLocationCalculationCreateExtensions.cs (.../HydraulicBoundaryLocationCalculationCreateExtensions.cs) (revision 06b82f3137d117242ecf5f69bded51c103216c0a)
@@ -36,19 +36,26 @@
/// .
///
/// The calculation to create a database entity for.
+ /// The object keeping track of create operations.
/// A new .
- /// Thrown when
- /// is null.
- internal static HydraulicLocationCalculationEntity Create(this HydraulicBoundaryLocationCalculation calculation)
+ /// Thrown when any parameter is null.
+ public static HydraulicLocationCalculationEntity Create(this HydraulicBoundaryLocationCalculation calculation,
+ PersistenceRegistry registry)
{
if (calculation == null)
{
throw new ArgumentNullException(nameof(calculation));
}
+ if (registry == null)
+ {
+ throw new ArgumentNullException(nameof(registry));
+ }
+
var hydraulicLocationCalculationEntity = new HydraulicLocationCalculationEntity
{
- ShouldIllustrationPointsBeCalculated = Convert.ToByte(calculation.InputParameters.ShouldIllustrationPointsBeCalculated)
+ ShouldIllustrationPointsBeCalculated = Convert.ToByte(calculation.InputParameters.ShouldIllustrationPointsBeCalculated),
+ HydraulicLocationEntity = registry.Get(calculation.HydraulicBoundaryLocation)
};
CreateHydraulicBoundaryLocationOutput(hydraulicLocationCalculationEntity, calculation.Output);
Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs
===================================================================
diff -u -r8aca9e7a0c1324719d2b609a05df4739e6c095a9 -r06b82f3137d117242ecf5f69bded51c103216c0a
--- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs) (revision 8aca9e7a0c1324719d2b609a05df4739e6c095a9)
+++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/Create/HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs (.../HydraulicBoundaryLocationCalculationCreateExtensionsTest.cs) (revision 06b82f3137d117242ecf5f69bded51c103216c0a)
@@ -34,10 +34,24 @@
public class HydraulicBoundaryLocationCalculationCreateExtensionsTest
{
[Test]
+ public void Create_RegistryNull_ThrowsArgumentNullException()
+ {
+ // Setup
+ var calculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation());
+
+ // Call
+ TestDelegate call = () => calculation.Create(null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("registry", exception.ParamName);
+ }
+
+ [Test]
public void Create_CalculationNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => ((HydraulicBoundaryLocationCalculation) null).Create();
+ TestDelegate call = () => ((HydraulicBoundaryLocationCalculation) null).Create(new PersistenceRegistry());
// Assert
var exception = Assert.Throws(call);
@@ -50,7 +64,9 @@
// Setup
var random = new Random(33);
bool shouldIllustrationPointsBeCalculated = random.NextBoolean();
- var calculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation())
+
+ var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation();
+ var calculation = new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation)
{
InputParameters =
{
@@ -59,8 +75,12 @@
Output = null
};
+ var registry = new PersistenceRegistry();
+ var hydraulicLocationEntity = new HydraulicLocationEntity();
+ registry.Register(hydraulicLocationEntity, hydraulicBoundaryLocation);
+
// Call
- HydraulicLocationCalculationEntity entity = calculation.Create();
+ HydraulicLocationCalculationEntity entity = calculation.Create(registry);
// Assert
Assert.IsNotNull(entity);
@@ -74,7 +94,9 @@
// Setup
var random = new Random(33);
bool shouldIllustrationPointsBeCalculated = random.NextBoolean();
- var calculation = new HydraulicBoundaryLocationCalculation(new TestHydraulicBoundaryLocation())
+
+ var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation();
+ var calculation = new HydraulicBoundaryLocationCalculation(hydraulicBoundaryLocation)
{
InputParameters =
{
@@ -86,8 +108,12 @@
null)
};
+ var registry = new PersistenceRegistry();
+ var hydraulicLocationEntity = new HydraulicLocationEntity();
+ registry.Register(hydraulicLocationEntity, hydraulicBoundaryLocation);
+
// Call
- HydraulicLocationCalculationEntity entity = calculation.Create();
+ HydraulicLocationCalculationEntity entity = calculation.Create(registry);
// Assert
Assert.IsNotNull(entity);
@@ -103,5 +129,25 @@
Assert.IsNull(outputEntity.GeneralResultSubMechanismIllustrationPointEntity);
Assert.AreEqual(Convert.ToByte(expectedOutput.CalculationConvergence), outputEntity.CalculationConvergence);
}
+
+ [Test]
+ public void Create_CalculationWithAlreadyCreatedHydraulicBoundaryLocation_ReturnsEntityWithHydraulicBoundaryLocationEntity()
+ {
+ // Setup
+ var hydraulicLocation = new TestHydraulicBoundaryLocation();
+
+ var registry = new PersistenceRegistry();
+ var hydraulicLocationEntity = new HydraulicLocationEntity();
+ registry.Register(hydraulicLocationEntity, hydraulicLocation);
+
+ var calculation = new HydraulicBoundaryLocationCalculation(hydraulicLocation);
+
+ // Call
+ HydraulicLocationCalculationEntity entity = calculation.Create(registry);
+
+ // Assert
+ Assert.IsNotNull(entity);
+ Assert.AreSame(hydraulicLocationEntity, entity.HydraulicLocationEntity);
+ }
}
}
\ No newline at end of file