Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs =================================================================== diff -u -r9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4 -rd5a5129cfad8fd5ef146976fc6601db731a43af3 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs (.../HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs) (revision 9cf89e3f60d17b61c5ef1ba1c4c7e18ca0c9b2f4) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs (.../HydraulicBoundaryDatabaseContextTreeNodeInfoTest.cs) (revision d5a5129cfad8fd5ef146976fc6601db731a43af3) @@ -40,7 +40,6 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Hydraulics; using Ringtoets.Common.IO.FileImporters; -using Ringtoets.Common.IO.HydraRing; using Ringtoets.GrassCoverErosionOutwards.Data; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.PresentationObjects; @@ -53,13 +52,13 @@ [TestFixture] public class HydraulicBoundaryDatabaseContextTreeNodeInfoTest : NUnitFormTest { - private MockRepository mocks; + private const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; private readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Forms, "HydraulicBoundaryDatabase"); private readonly string testDataPathNoHlcd = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Forms, "HydraulicBoundaryDatabaseNoHLCD"); - private readonly string testDataPathNoSettings = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Forms, "HydraulicBoundaryDatabaseNoSettings"); - private readonly string testDataPathInvalidSettings = TestHelper.GetTestDataPath(TestDataPath.Ringtoets.Integration.Forms, "HydraulicBoundaryDatabaseSettingsInvalid"); + private MockRepository mocks; + [Test] public void Initialized_Always_ExpectedPropertiesSet() { @@ -170,7 +169,7 @@ } [Test] - public void ForeColor_ContextHasNoReferenceLine_ReturnDisabledColor() + public void ForeColor_HydraulicBoundaryDatabaseNotCoupled_ReturnDisabledColor() { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); @@ -179,6 +178,7 @@ using (var plugin = new RingtoetsPlugin()) { TreeNodeInfo info = GetInfo(plugin); + // Call Color color = info.ForeColor(hydraulicBoundaryDatabaseContext); @@ -188,14 +188,16 @@ } [Test] - public void ForeColor_ContextHasReferenceLineData_ReturnControlText() + public void ForeColor_HydraulicBoundaryDatabaseCoupled_ReturnEnabledColor() { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) { - HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() + HydraulicBoundaryDatabase = + { + FilePath = "databaseFile" + } }; - var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); using (var plugin = new RingtoetsPlugin()) @@ -211,7 +213,7 @@ } [Test] - public void ChildNodeObjects_NoHydraulicBoundaryDatabaseSet_ReturnsEmpty() + public void ChildNodeObjects_HydraulicBoundaryDatabaseNotCoupled_ReturnsEmpty() { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); @@ -230,14 +232,16 @@ } [Test] - public void ChildNodeObjects_HydraulicBoundaryDatabaseSet_ReturnsChildrenOfData() + public void ChildNodeObjects_HydraulicBoundaryDatabaseCoupled_ReturnsChildrenOfData() { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) { - HydraulicBoundaryDatabase = new HydraulicBoundaryDatabase() + HydraulicBoundaryDatabase = + { + FilePath = "databaseFile" + } }; - var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); using (var plugin = new RingtoetsPlugin()) @@ -259,7 +263,7 @@ [Test] [Apartment(ApartmentState.STA)] - public void GivenNoFilePathIsSet_WhenOpeningValidFileFromContextMenu_ThenPathWillBeSetAndNotifiesObserverAndLogMessageAdded() + public void GivenNoDatabaseCoupled_WhenOpeningValidFileFromContextMenu_ThenDatabaseCoupledObserversNotifiedAndLogMessagesAdded() { // Given var assessmentSectionObserver = mocks.StrictMock(); @@ -270,8 +274,6 @@ string testFile = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); @@ -315,7 +317,10 @@ Assert.AreEqual($"Database op pad '{testFile}' gekoppeld.", msgs[1]); }); - Assert.IsNotNull(assessmentSection.HydraulicBoundaryDatabase); + Assert.IsTrue(assessmentSection.HydraulicBoundaryDatabase.IsCoupled()); + Assert.AreEqual(testFile, assessmentSection.HydraulicBoundaryDatabase.FilePath); + Assert.AreEqual("Dutch coast South19-11-2015 12:0013", assessmentSection.HydraulicBoundaryDatabase.Version); + CollectionAssert.IsNotEmpty(assessmentSection.HydraulicBoundaryDatabase.Locations); CollectionAssert.IsNotEmpty(assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations); } } @@ -324,13 +329,14 @@ [Test] [Apartment(ApartmentState.STA)] - public void GivenNoFilePathIsSet_WhenOpeneningInvalidFileFromContextMenu_ThenPathWillNotBeSetAndLogMessageAdded() + public void GivenNoDatabaseCoupled_WhenOpeningInvalidFileFromContextMenu_ThenNoDatabaseCoupledNoObserversNotifiedAndLogMessagesAdded() { // Given + var assessmentSectionObserver = mocks.StrictMock(); + var grassCoverErosionOutwardsLocationsObserver = mocks.StrictMock(); + string testFile = Path.Combine(testDataPath, "empty.sqlite"); - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); @@ -346,6 +352,9 @@ gui.Stub(cmp => cmp.Get(hydraulicBoundaryDatabaseContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); mocks.ReplayAll(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsLocationsObserver); + DialogBoxHandler = (name, wnd) => { var tester = new OpenFileDialogTester(wnd); @@ -364,21 +373,22 @@ string expectedMessage = $"Fout bij het lezen van bestand '{testFile}': kon geen locaties verkrijgen van de database."; TestHelper.AssertLogMessageIsGenerated(action, expectedMessage); - Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); + Assert.IsFalse(assessmentSection.HydraulicBoundaryDatabase.IsCoupled()); } } mocks.VerifyAll(); } [Test] [Apartment(ApartmentState.STA)] - public void GivenNoFilePathIsSet_WhenOpeneningValidFileWithoutHLCDFromContextMenu_ThenPathWillNotBeSetAndLogMessageAdded() + public void GivenNoDatabaseCoupled_WhenOpeningValidFileWithoutHLCDFromContextMenu_ThenNoDatabaseCoupledNoObserversNotifiedAndLogMessagesAdded() { // Given + var assessmentSectionObserver = mocks.StrictMock(); + var grassCoverErosionOutwardsLocationsObserver = mocks.StrictMock(); + string testFile = Path.Combine(testDataPathNoHlcd, "HRD dutch coast south.sqlite"); - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); @@ -394,6 +404,9 @@ gui.Stub(cmp => cmp.Get(hydraulicBoundaryDatabaseContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); mocks.ReplayAll(); + assessmentSection.Attach(assessmentSectionObserver); + assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsLocationsObserver); + DialogBoxHandler = (name, wnd) => { var tester = new OpenFileDialogTester(wnd); @@ -413,70 +426,20 @@ $"Fout bij het lezen van bestand '{testFile}': het bijbehorende HLCD bestand is niet gevonden in dezelfde map als het HRD bestand."; TestHelper.AssertLogMessageIsGenerated(action, expectedMessage); - Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); + Assert.IsFalse(assessmentSection.HydraulicBoundaryDatabase.IsCoupled()); } } mocks.VerifyAll(); } [Test] [Apartment(ApartmentState.STA)] - public void GivenNoFilePathIsSet_WhenOpeneningValidFileWithoutSettingsDatabaseFromContextMenu_ThenPathWillNotBeSetAndLogMessageAdded() + public void GivenDatabaseCoupled_WhenOpeningSameFileFromContextMenu_ThenCalculationsWillNotBeClearedAndNoObserversNotified() { // Given - string testFile = Path.Combine(testDataPathNoSettings, "HRD dutch coast south.sqlite"); - - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; - - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - var hydraulicBoundaryDatabaseContext = new HydraulicBoundaryDatabaseContext(assessmentSection); - - using (var treeViewControl = new TreeViewControl()) - using (var plugin = new RingtoetsPlugin()) - { - var mainWindow = mocks.Stub(); - - var gui = mocks.Stub(); - gui.Stub(g => g.MainWindow).Return(mainWindow); - gui.Stub(g => g.ProjectOpened += null).IgnoreArguments(); - gui.Stub(g => g.ProjectOpened -= null).IgnoreArguments(); - gui.Stub(cmp => cmp.Get(hydraulicBoundaryDatabaseContext, treeViewControl)).Return(new CustomItemsOnlyContextMenuBuilder()); - mocks.ReplayAll(); - - DialogBoxHandler = (name, wnd) => - { - var tester = new OpenFileDialogTester(wnd); - tester.OpenFile(testFile); - }; - - TreeNodeInfo info = GetInfo(plugin); - plugin.Gui = gui; - - using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(hydraulicBoundaryDatabaseContext, null, treeViewControl)) - { - // When - Action action = () => contextMenuStrip.Items[contextMenuImportHydraulicBoundaryDatabaseIndex].PerformClick(); - - // Then - string expectedMessage = - $"Fout bij het lezen van bestand '{testFile}': kon het rekeninstellingen bestand niet openen. Fout bij het lezen van bestand '{HydraulicBoundaryDatabaseHelper.GetHydraulicBoundarySettingsDatabase(testFile)}': het bestand bestaat niet."; - TestHelper.AssertLogMessageIsGenerated(action, expectedMessage); - - Assert.IsNull(assessmentSection.HydraulicBoundaryDatabase); - } - } - mocks.VerifyAll(); - } - - [Test] - [Apartment(ApartmentState.STA)] - public void GivenFilePathIsSet_WhenOpeningSameFileFromContextMenu_ThenCalculationsWillNotBeClearedAndNoNotifyObservers() - { - // Given string validFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); var assessmentObserver = mocks.StrictMock(); var grassCoverErosionOutwardsLocationsObserver = mocks.StrictMock(); - const int contextMenuImportHydraulicBoundaryDatabaseIndex = 0; var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); using (var importer = new HydraulicBoundaryDatabaseImporter()) @@ -543,7 +506,7 @@ string expectedMessage = $"Database op pad '{validFilePath}' gekoppeld."; TestHelper.AssertLogMessageIsGenerated(action, expectedMessage); - Assert.IsNotNull(assessmentSection.HydraulicBoundaryDatabase); + Assert.IsTrue(assessmentSection.HydraulicBoundaryDatabase.IsCoupled()); Assert.AreEqual(currentFilePath, assessmentSection.HydraulicBoundaryDatabase.FilePath); Assert.AreEqual(currentVersion, assessmentSection.HydraulicBoundaryDatabase.Version); CollectionAssert.AreEqual(currentLocations, assessmentSection.HydraulicBoundaryDatabase.Locations);