Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicBoundaryDatabaseUpdateHandler.cs
===================================================================
diff -u -rd9300262e0d5781121dda84b7d13393acc3eb14b -r507bd6317ac627f4ab97027d1a9c51428ed6af42
--- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicBoundaryDatabaseUpdateHandler.cs (.../HydraulicBoundaryDatabaseUpdateHandler.cs) (revision d9300262e0d5781121dda84b7d13393acc3eb14b)
+++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/HydraulicBoundaryDatabaseUpdateHandler.cs (.../HydraulicBoundaryDatabaseUpdateHandler.cs) (revision 507bd6317ac627f4ab97027d1a9c51428ed6af42)
@@ -23,6 +23,7 @@
using System.Collections.Generic;
using System.Windows.Forms;
using Core.Common.Base;
+using Core.Common.Gui.Commands;
using Ringtoets.Common.Data.Hydraulics;
using Ringtoets.HydraRing.IO.HydraulicBoundaryDatabase;
using Ringtoets.HydraRing.IO.HydraulicLocationConfigurationDatabase;
@@ -40,21 +41,29 @@
public class HydraulicBoundaryDatabaseUpdateHandler : IHydraulicBoundaryDatabaseUpdateHandler
{
private readonly AssessmentSection assessmentSection;
+ private readonly IViewCommands viewCommands;
///
/// Creates a new instance of .
///
/// The assessment section to update for.
+ /// The view commands used to close views for removed data.
/// Thrown when
/// is null.
- public HydraulicBoundaryDatabaseUpdateHandler(AssessmentSection assessmentSection)
+ public HydraulicBoundaryDatabaseUpdateHandler(AssessmentSection assessmentSection, IViewCommands viewCommands)
{
if (assessmentSection == null)
{
throw new ArgumentNullException(nameof(assessmentSection));
}
+ if (viewCommands == null)
+ {
+ throw new ArgumentNullException(nameof(viewCommands));
+ }
+
this.assessmentSection = assessmentSection;
+ this.viewCommands = viewCommands;
}
public bool IsConfirmationRequired(HydraulicBoundaryDatabase hydraulicBoundaryDatabase, ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase)
Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicBoundaryDatabaseUpdateHandlerTest.cs
===================================================================
diff -u -rd9300262e0d5781121dda84b7d13393acc3eb14b -r507bd6317ac627f4ab97027d1a9c51428ed6af42
--- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicBoundaryDatabaseUpdateHandlerTest.cs (.../HydraulicBoundaryDatabaseUpdateHandlerTest.cs) (revision d9300262e0d5781121dda84b7d13393acc3eb14b)
+++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/HydraulicBoundaryDatabaseUpdateHandlerTest.cs (.../HydraulicBoundaryDatabaseUpdateHandlerTest.cs) (revision 507bd6317ac627f4ab97027d1a9c51428ed6af42)
@@ -23,8 +23,10 @@
using System.Collections.Generic;
using System.Linq;
using Core.Common.Base;
+using Core.Common.Gui.Commands;
using NUnit.Extensions.Forms;
using NUnit.Framework;
+using Rhino.Mocks;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.Hydraulics;
@@ -36,8 +38,6 @@
using Ringtoets.Integration.IO.Handlers;
using Ringtoets.Integration.Plugin.Handlers;
using Ringtoets.Integration.TestUtil;
-using Ringtoets.Piping.Data;
-using Ringtoets.Piping.Data.TestUtil;
namespace Ringtoets.Integration.Plugin.Test.Handlers
{
@@ -47,70 +47,112 @@
[Test]
public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException()
{
+ // Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
// Call
- TestDelegate call = () => new HydraulicBoundaryDatabaseUpdateHandler(null);
+ TestDelegate call = () => new HydraulicBoundaryDatabaseUpdateHandler(null, viewCommands);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("assessmentSection", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
+ public void Constructor_ViewCommandsNull_ThrowsArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), null);
+
+ // Assert
+ var exception = Assert.Throws(call);
+ Assert.AreEqual("viewCommands", exception.ParamName);
+ }
+
+ [Test]
public void Constructor_ExpectedValues()
{
+ // Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
// Call
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
// Assert
Assert.IsInstanceOf(handler);
+ mocks.VerifyAll();
}
[Test]
public void IsConfirmationRequired_HydraulicBoundaryDatabaseNull_ThrowsArgumentNullException()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
TestDelegate call = () => handler.IsConfirmationRequired(null, ReadHydraulicBoundaryDatabaseTestFactory.Create());
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("hydraulicBoundaryDatabase", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
public void IsConfirmationRequired_ReadHydraulicBoundaryDatabaseNull_ThrowsArgumentNullException()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
TestDelegate call = () => handler.IsConfirmationRequired(new HydraulicBoundaryDatabase(), null);
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("readHydraulicBoundaryDatabase", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
public void IsConfirmationRequired_HydraulicBoundaryDatabaseNotLinked_ReturnsFalse()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
bool confirmationRequired = handler.IsConfirmationRequired(new HydraulicBoundaryDatabase(), ReadHydraulicBoundaryDatabaseTestFactory.Create());
// Assert
Assert.IsFalse(confirmationRequired);
+ mocks.VerifyAll();
}
[Test]
public void IsConfirmationRequired_HydraulicBoundaryDatabaseLinkedAndReadDatabaseSameVersion_ReturnsFalse()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
var database = new HydraulicBoundaryDatabase
{
FilePath = "some/file/path",
@@ -122,13 +164,18 @@
// Assert
Assert.IsFalse(confirmationRequired);
+ mocks.VerifyAll();
}
[Test]
public void IsConfirmationRequired_HydraulicBoundaryDatabaseLinkedAndReadDatabaseDifferentVersion_ReturnsTrue()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
var database = new HydraulicBoundaryDatabase
{
FilePath = "some/file/path",
@@ -140,6 +187,7 @@
// Assert
Assert.IsTrue(confirmationRequired);
+ mocks.VerifyAll();
}
[Test]
@@ -148,6 +196,10 @@
public void InquireConfirmation_ClickDialog_ReturnTrueIfOkAndFalseIfCancel(bool clickOk)
{
// Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
string dialogTitle = null, dialogMessage = null;
DialogBoxHandler = (name, wnd) =>
{
@@ -164,7 +216,7 @@
}
};
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
// Call
bool result = handler.InquireConfirmation();
@@ -173,61 +225,82 @@
Assert.AreEqual(clickOk, result);
Assert.AreEqual("Bevestigen", dialogTitle);
- Assert.AreEqual("U heeft een ander hydraulische belastingendatabase bestand geselecteerd. Als gevolg hiervan moet de uitvoer van alle ervan afhankelijke berekeningen verwijderd worden." + Environment.NewLine +
+ Assert.AreEqual("U heeft een ander hydraulische belastingendatabase bestand geselecteerd. Als gevolg hiervan moet de uitvoer van alle ervan afhankelijke berekeningen verwijderd worden." +
Environment.NewLine +
+ Environment.NewLine +
"Wilt u doorgaan?",
dialogMessage);
+ mocks.VerifyAll();
}
[Test]
public void Update_HydraulicBoundaryDatabaseNull_ThrowsArgumentNullException()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
TestDelegate call = () => handler.Update(null, ReadHydraulicBoundaryDatabaseTestFactory.Create(), ReadHydraulicLocationConfigurationDatabaseTestFactory.Create(), "");
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("hydraulicBoundaryDatabase", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
public void Update_ReadHydraulicBoundaryDatabaseNull_ThrowsArgumentNullException()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
TestDelegate call = () => handler.Update(new HydraulicBoundaryDatabase(), null, ReadHydraulicLocationConfigurationDatabaseTestFactory.Create(), "");
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("readHydraulicBoundaryDatabase", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
public void Update_ReadHydraulicLocationConfigurationDatabaseNull_ThrowsArgumentNullException()
{
// Setup
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike));
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(new AssessmentSection(AssessmentSectionComposition.Dike), viewCommands);
+
// Call
TestDelegate call = () => handler.Update(new HydraulicBoundaryDatabase(), ReadHydraulicBoundaryDatabaseTestFactory.Create(), null, "");
// Assert
var exception = Assert.Throws(call);
Assert.AreEqual("readHydraulicLocationConfigurationDatabase", exception.ParamName);
+ mocks.VerifyAll();
}
[Test]
public void Update_FilePathAndVersionSame_NothingUpdatesAndReturnsEmptyCollection()
{
// Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
{
FilePath = filePath,
@@ -256,15 +329,20 @@
Assert.AreEqual(filePath, hydraulicBoundaryDatabase.FilePath);
Assert.AreEqual("version", hydraulicBoundaryDatabase.Version);
AssertHydraulicBoundaryLocationsAndCalculations(locations, assessmentSection);
+ mocks.VerifyAll();
}
[Test]
public void Update_VersionSameAndFilePathNotSame_UpdatesFilePathAndReturnsChangedObjects()
{
// Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
{
FilePath = "old/file/path",
@@ -293,12 +371,17 @@
Assert.AreEqual(filePath, hydraulicBoundaryDatabase.FilePath);
Assert.AreEqual("version", hydraulicBoundaryDatabase.Version);
AssertHydraulicBoundaryLocationsAndCalculations(locations, assessmentSection);
+ mocks.VerifyAll();
}
[Test]
public void Update_DatabaseLinkedAndVersionNotSame_RemovesOldLocationsAndCalculations()
{
// Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase
@@ -315,7 +398,7 @@
assessmentSection.SetHydraulicBoundaryLocationCalculations(hydraulicBoundaryDatabase.Locations);
assessmentSection.GrassCoverErosionOutwards.SetHydraulicBoundaryLocationCalculations(hydraulicBoundaryDatabase.Locations);
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
HydraulicBoundaryLocation[] oldLocations = hydraulicBoundaryDatabase.Locations.ToArray();
@@ -345,16 +428,21 @@
CollectionAssert.IsNotSubsetOf(oldLocations, grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificFactorizedSignalingNorm.Select(hblc => hblc.HydraulicBoundaryLocation));
CollectionAssert.IsNotSubsetOf(oldLocations, grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificSignalingNorm.Select(hblc => hblc.HydraulicBoundaryLocation));
CollectionAssert.IsNotSubsetOf(oldLocations, grassCoverErosionOutwardsFailureMechanism.WaveHeightCalculationsForMechanismSpecificLowerLimitNorm.Select(hblc => hblc.HydraulicBoundaryLocation));
+ mocks.VerifyAll();
}
[Test]
public void Update_DatabaseNotLinked_SetsAllData()
{
// Setup
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
// Precondition
Assert.IsFalse(hydraulicBoundaryDatabase.IsLinked());
@@ -372,6 +460,7 @@
AssertHydraulicBoundaryLocations(readHydraulicBoundaryDatabase.Locations, hydraulicBoundaryDatabase.Locations);
AssertHydraulicBoundaryLocationsAndCalculations(hydraulicBoundaryDatabase.Locations, assessmentSection);
+ mocks.VerifyAll();
}
[Test]
@@ -380,10 +469,14 @@
public void GivenDatabase_WhenUpdatingDataWithNewLocations_ThenChangedObjectsReturned(bool isLinked)
{
// Given
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike);
var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase();
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
// Precondition
Assert.IsFalse(hydraulicBoundaryDatabase.IsLinked());
@@ -411,12 +504,17 @@
assessmentSection.GrassCoverErosionOutwards.WaveHeightCalculationsForMechanismSpecificSignalingNorm,
assessmentSection.GrassCoverErosionOutwards.WaveHeightCalculationsForMechanismSpecificLowerLimitNorm
}, changedObjects);
+ mocks.VerifyAll();
}
[Test]
public void GivenCalculationsWithLocation_WhenUpdatingDatabaseWithNewLocations_ThenCalculationOutputClearedAndChangedObjectsReturned()
{
// Given
+ var mocks = new MockRepository();
+ var viewCommands = mocks.Stub();
+ mocks.ReplayAll();
+
const string filePath = "some/file/path";
AssessmentSection assessmentSection = TestDataGenerator.GetAssessmentSectionWithAllCalculationConfigurations();
@@ -425,7 +523,7 @@
.Where(c => c.HasOutput)
.ToArray();
- var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection);
+ var handler = new HydraulicBoundaryDatabaseUpdateHandler(assessmentSection, viewCommands);
// When
IEnumerable changedObjects = handler.Update(assessmentSection.HydraulicBoundaryDatabase, ReadHydraulicBoundaryDatabaseTestFactory.Create(),
@@ -434,6 +532,7 @@
// Then
Assert.IsTrue(calculationsWithOutput.All(c => !c.HasOutput));
CollectionAssert.IsSubsetOf(calculationsWithOutput, changedObjects);
+ mocks.VerifyAll();
}
private static void AssertHydraulicBoundaryLocationsAndCalculations(IEnumerable locations, AssessmentSection assessmentSection)