Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs =================================================================== diff -u -r0cd4944265ef5fba4bf385dd9f4eb48380ae8232 -r1042a38d3663daeda5a8e1083edbc63a4b6aae94 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs (.../HydraulicBoundaryLocationCalculationGuiServiceTest.cs) (revision 0cd4944265ef5fba4bf385dd9f4eb48380ae8232) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/GuiServices/HydraulicBoundaryLocationCalculationGuiServiceTest.cs (.../HydraulicBoundaryLocationCalculationGuiServiceTest.cs) (revision 1042a38d3663daeda5a8e1083edbc63a4b6aae94) @@ -24,7 +24,6 @@ using System.IO; using System.Linq; using System.Windows.Forms; -using Core.Common.Base; using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; @@ -77,76 +76,78 @@ public void CalculateDesignWaterLevels_NullCalculationServiceMessageProvider_ThrowsArgumentNullException() { // Setup - var observableMock = mockRepository.StrictMock(); - mockRepository.ReplayAll(); - var locations = Enumerable.Empty(); using (var viewParent = new Form()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateDesignWaterLevels(null, "", observableMock, locations, "", 1); + TestDelegate test = () => guiService.CalculateDesignWaterLevels(null, locations, "", 1, null); // Assert string paramName = Assert.Throws(test).ParamName; const string expectedParamName = "messageProvider"; Assert.AreEqual(expectedParamName, paramName); } - mockRepository.VerifyAll(); } [Test] - public void CalculateDesignWaterLevels_NullObservable_ThrowsArgumentNullException() + public void CalculateDesignWaterLevels_NullLocations_ThrowsArgumentNullException() { // Setup var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var locations = Enumerable.Empty(); + const string databasePath = "Does not exist"; + using (var viewParent = new Form()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateDesignWaterLevels(calculationMessageProviderMock, "", null, locations, "", 1); + TestDelegate test = () => guiService.CalculateDesignWaterLevels(databasePath, null, "", 1, calculationMessageProviderMock); // Assert string paramName = Assert.Throws(test).ParamName; - const string expectedParamName = "observable"; + const string expectedParamName = "locations"; Assert.AreEqual(expectedParamName, paramName); } mockRepository.VerifyAll(); } [Test] - public void CalculateDesignWaterLevels_NullLocations_ThrowsArgumentNullException() + public void CalculateDesignWaterLevels_HydraulicDatabaseDoesNotExist_LogsError() { // Setup - var observableMock = mockRepository.StrictMock(); + var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); + const string databasePath = "Does not exist"; + var locations = Enumerable.Empty(); using (var viewParent = new Form()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateDesignWaterLevels(calculationMessageProviderMock, databasePath, observableMock, null, "", 1); + Action call = () => guiService.CalculateDesignWaterLevels(databasePath, locations, "", 1, calculationMessageProviderMock); // Assert - string paramName = Assert.Throws(test).ParamName; - const string expectedParamName = "locations"; - Assert.AreEqual(expectedParamName, paramName); + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(1, msgs.Length); + StringAssert.StartsWith("Berekeningen konden niet worden gestart. ", msgs.First()); + }); } mockRepository.VerifyAll(); } [Test] - public void CalculateDesignWaterLevels_HydraulicDatabaseDoesNotExist_LogsErrorAndDoesNotNotifyObservers() + public void CalculateDesignWaterLevels_HydraulicDatabaseDoesNotExist_SuccessfulCalculationFalse() { // Setup - var observableMock = mockRepository.StrictMock(); + var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); @@ -158,27 +159,20 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateDesignWaterLevels(calculationMessageProviderMock, databasePath, observableMock, locations, "", 1); + bool succesfulCalculation = guiService.CalculateDesignWaterLevels(databasePath, locations, "", 1, calculationMessageProviderMock); // Assert - TestHelper.AssertLogMessages(call, messages => - { - var msgs = messages.ToArray(); - Assert.AreEqual(1, msgs.Length); - StringAssert.StartsWith("Berekeningen konden niet worden gestart. ", msgs.First()); - }); + Assert.IsFalse(succesfulCalculation); } mockRepository.VerifyAll(); } [Test] - public void CalculateDesignWaterLevels_ValidPathEmptyList_NotifyObserversButNoLog() + public void CalculateDesignWaterLevels_ValidPathEmptyList_NoLog() { // Setup string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); - var observableMock = mockRepository.StrictMock(); - observableMock.NotifyObservers(); var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); @@ -193,7 +187,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateDesignWaterLevels(calculationMessageProviderMock, validDatabasePath, observableMock, locations, "", 1); + Action call = () => guiService.CalculateDesignWaterLevels(validDatabasePath, locations, "", 1, calculationMessageProviderMock); // Assert TestHelper.AssertLogMessagesCount(call, 0); @@ -202,15 +196,41 @@ } [Test] - public void CalculateDesignWaterLevels_ValidPathOneLocationInTheList_NotifyObserversAndLogsMessages() + public void CalculateDesignWaterLevels_ValidPathEmptyList_SuccessfulCalculationTrue() { // Setup + string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + var calculationMessageProviderMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + DialogBoxHandler = (name, wnd) => + { + // Expect an activity dialog which is automatically closed + }; + + var locations = Enumerable.Empty(); + using (var viewParent = new Form()) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + bool successfulCalculation = guiService.CalculateDesignWaterLevels(validDatabasePath, locations, "", 1, calculationMessageProviderMock); + + // Assert + Assert.IsTrue(successfulCalculation); + } + mockRepository.VerifyAll(); + } + + [Test] + public void CalculateDesignWaterLevels_ValidPathOneLocationInTheList_LogsMessages() + { + // Setup const string hydraulicLocationName = "name"; const string calculationName = "calculationName"; string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); - var observableMock = mockRepository.StrictMock(); - observableMock.Expect(o=>o.NotifyObservers()); var calculationMessageProviderMock = mockRepository.StrictMock(); calculationMessageProviderMock.Expect(calc => calc.GetActivityName(hydraulicLocationName)).Return("GetActivityName"); calculationMessageProviderMock.Expect(calc => calc.GetCalculationName(hydraulicLocationName)).Return(calculationName).Repeat.AtLeastOnce(); @@ -230,7 +250,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateDesignWaterLevels(calculationMessageProviderMock, validDatabasePath, observableMock, locations, "", 1); + Action call = () => guiService.CalculateDesignWaterLevels(validDatabasePath, locations, "", 1, calculationMessageProviderMock); // Assert TestHelper.AssertLogMessages(call, messages => @@ -248,57 +268,63 @@ } [Test] - public void CalculateWaveHeights_NullCalculationServiceMessageProvider_ThrowsArgumentNullException() + public void CalculateDesignWaterLevels_ValidPathOneLocationInTheList_SuccessfulCalculationTrue() { // Setup - var observableMock = mockRepository.StrictMock(); + const string hydraulicLocationName = "name"; + const string calculationName = "calculationName"; + string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Expect(calc => calc.GetActivityName(hydraulicLocationName)).Return("GetActivityName"); + calculationMessageProviderMock.Expect(calc => calc.GetCalculationName(hydraulicLocationName)).Return(calculationName).Repeat.AtLeastOnce(); mockRepository.ReplayAll(); - var locations = Enumerable.Empty(); + DialogBoxHandler = (name, wnd) => + { + // Expect an activity dialog which is automatically closed + }; + + var locations = new List + { + new HydraulicBoundaryLocation(1, hydraulicLocationName, 2, 3) + }; using (var viewParent = new Form()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateWaveHeights(null, "", observableMock, locations, "", 1); + bool succesfulCalculation = guiService.CalculateDesignWaterLevels(validDatabasePath, locations, "", 1, calculationMessageProviderMock); // Assert - string paramName = Assert.Throws(test).ParamName; - const string expectedParamName = "messageProvider"; - Assert.AreEqual(expectedParamName, paramName); + Assert.IsTrue(succesfulCalculation); } mockRepository.VerifyAll(); } [Test] - public void CalculateWaveHeights_NullObservable_ThrowsArgumentNullException() + public void CalculateWaveHeights_NullCalculationServiceMessageProvider_ThrowsArgumentNullException() { // Setup - var calculationMessageProviderMock = mockRepository.StrictMock(); - mockRepository.ReplayAll(); - - var locations = Enumerable.Empty(); - + var locations = Enumerable.Empty(); using (var viewParent = new Form()) { var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateWaveHeights(calculationMessageProviderMock, "", null, locations, "", 1); + TestDelegate test = () => guiService.CalculateWaveHeights(null, locations, "", 1, null); // Assert string paramName = Assert.Throws(test).ParamName; - const string expectedParamName = "observable"; + const string expectedParamName = "messageProvider"; Assert.AreEqual(expectedParamName, paramName); } - mockRepository.VerifyAll(); } [Test] public void CalculateWaveHeights_NullLocations_ThrowsArgumentNullException() { // Setup - var observableMock = mockRepository.StrictMock(); var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); const string databasePath = "Does not exist"; @@ -308,7 +334,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - TestDelegate test = () => guiService.CalculateWaveHeights(calculationMessageProviderMock, databasePath, observableMock, null, "", 1); + TestDelegate test = () => guiService.CalculateWaveHeights(databasePath, null, "", 1, calculationMessageProviderMock); // Assert string paramName = Assert.Throws(test).ParamName; @@ -319,10 +345,9 @@ } [Test] - public void CalculateWaveHeights_HydraulicDatabaseDoesNotExist_LogsErrorAndDoesNotNotifyObservers() + public void CalculateWaveHeights_HydraulicDatabaseDoesNotExist_LogsError() { // Setup - var observableMock = mockRepository.StrictMock(); var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); @@ -335,7 +360,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateWaveHeights(calculationMessageProviderMock, databasePath, observableMock, locations, "", 1); + Action call = () => guiService.CalculateWaveHeights(databasePath, locations, "", 1, calculationMessageProviderMock); // Assert TestHelper.AssertLogMessages(call, messages => @@ -349,13 +374,35 @@ } [Test] - public void CalculateWaveHeights_ValidPathEmptyList_NotifyObserversButNoLog() + public void CalculateWaveHeights_HydraulicDatabaseDoesNotExist_SuccesfulCalculationFalse() { // Setup + var calculationMessageProviderMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + const string databasePath = "Does not exist"; + + var locations = Enumerable.Empty(); + + using (var viewParent = new Form()) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + bool succesfulCalculation = guiService.CalculateWaveHeights(databasePath, locations, "", 1, calculationMessageProviderMock); + + // Assert + Assert.IsFalse(succesfulCalculation); + } + mockRepository.VerifyAll(); + } + + [Test] + public void CalculateWaveHeights_ValidPathEmptyList_NoLog() + { + // Setup string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); - var observableMock = mockRepository.StrictMock(); - observableMock.Expect(o => o.NotifyObservers()); var calculationMessageProviderMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); @@ -371,7 +418,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateWaveHeights(calculationMessageProviderMock, validDatabasePath, observableMock, locations, "", 1); + Action call = () => guiService.CalculateWaveHeights(validDatabasePath, locations, "", 1, calculationMessageProviderMock); // Assert TestHelper.AssertLogMessagesCount(call, 0); @@ -380,15 +427,42 @@ } [Test] - public void CalculateWaveHeights_ValidPathOneLocationInTheList_NotifyObserversAndLogsMessages() + public void CalculateWaveHeights_ValidPathEmptyList_SuccesfulCalculationTrue() { // Setup + string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + var calculationMessageProviderMock = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + DialogBoxHandler = (name, wnd) => + { + // Expect an activity dialog which is automatically closed + }; + + var locations = Enumerable.Empty(); + + using (var viewParent = new Form()) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + bool succesfulCalculation = guiService.CalculateWaveHeights(validDatabasePath, locations, "", 1, calculationMessageProviderMock); + + // Assert + Assert.IsTrue(succesfulCalculation); + } + mockRepository.VerifyAll(); + } + + [Test] + public void CalculateWaveHeights_ValidPathOneLocationInTheList_LogsMessages() + { + // Setup const string hydraulicLocationName = "name"; const string calculationName = "calculationName"; string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); - var observableMock = mockRepository.StrictMock(); - observableMock.Expect(o => o.NotifyObservers()); var calculationMessageProviderMock = mockRepository.StrictMock(); calculationMessageProviderMock.Expect(calc => calc.GetActivityName(hydraulicLocationName)).Return("GetActivityName"); calculationMessageProviderMock.Expect(calc => calc.GetCalculationName(hydraulicLocationName)).Return(calculationName).Repeat.AtLeastOnce(); @@ -408,7 +482,7 @@ var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); // Call - Action call = () => guiService.CalculateWaveHeights(calculationMessageProviderMock, validDatabasePath, observableMock, locations, "", 1); + Action call = () => guiService.CalculateWaveHeights(validDatabasePath, locations, "", 1, calculationMessageProviderMock); // Assert TestHelper.AssertLogMessages(call, messages => @@ -424,5 +498,40 @@ } mockRepository.VerifyAll(); } + + [Test] + public void CalculateWaveHeights_ValidPathOneLocationInTheList_SuccessfulCalculationTrue() + { + // Setup + const string hydraulicLocationName = "name"; + const string calculationName = "calculationName"; + string validDatabasePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Expect(calc => calc.GetActivityName(hydraulicLocationName)).Return("GetActivityName"); + calculationMessageProviderMock.Expect(calc => calc.GetCalculationName(hydraulicLocationName)).Return(calculationName).Repeat.AtLeastOnce(); + mockRepository.ReplayAll(); + + DialogBoxHandler = (name, wnd) => + { + // Expect an activity dialog which is automatically closed + }; + + var locations = new List + { + new HydraulicBoundaryLocation(1, hydraulicLocationName, 2, 3) + }; + using (var viewParent = new Form()) + { + var guiService = new HydraulicBoundaryLocationCalculationGuiService(viewParent); + + // Call + bool successfulCalculation = guiService.CalculateWaveHeights(validDatabasePath, locations, "", 1, calculationMessageProviderMock); + + // Assert + Assert.IsTrue(successfulCalculation); + } + mockRepository.VerifyAll(); + } } } \ No newline at end of file