Index: Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs =================================================================== diff -u -r16f6bd5805e77d549cded91fc48fff35ffbdec00 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision 16f6bd5805e77d549cded91fc48fff35ffbdec00) +++ Ringtoets/Common/src/Ringtoets.Common.Service/DesignWaterLevelCalculationService.cs (.../DesignWaterLevelCalculationService.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -91,6 +91,8 @@ calculator = HydraRingCalculatorFactory.Instance.CreateDesignWaterLevelCalculator(hlcdDirectory, ringId); + var exceptionThrown = false; + try { calculator.Calculate(CreateInput(hydraulicBoundaryLocation, norm, hydraulicBoundaryDatabaseFilePath)); @@ -108,14 +110,31 @@ { if (!canceled) { - log.Error(messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name)); + var lastErrorContent = calculator.LastErrorContent; + log.Error(string.IsNullOrEmpty(lastErrorContent) + ? messageProvider.GetCalculationFailedUnexplainedMessage(hydraulicBoundaryLocation.Name) + : messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name, lastErrorContent)); + + exceptionThrown = true; throw; } } finally { - log.InfoFormat(Resources.DesignWaterLevelCalculationService_Calculate_Calculation_temporary_directory_can_be_found_on_location_0, calculator.OutputDirectory); - CalculationServiceHelper.LogCalculationEndTime(calculationName); + try + { + var lastErrorContent = calculator.LastErrorContent; + if (!exceptionThrown && !string.IsNullOrEmpty(lastErrorContent)) + { + log.Error(messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name, lastErrorContent)); + throw new HydraRingFileParserException(lastErrorContent); + } + } + finally + { + log.InfoFormat(Resources.DesignWaterLevelCalculationService_Calculate_Calculation_temporary_directory_can_be_found_on_location_0, calculator.OutputDirectory); + CalculationServiceHelper.LogCalculationEndTime(calculationName); + } } } Index: Ringtoets/Common/src/Ringtoets.Common.Service/MessageProviders/ICalculationMessageProvider.cs =================================================================== diff -u -r1042a38d3663daeda5a8e1083edbc63a4b6aae94 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/src/Ringtoets.Common.Service/MessageProviders/ICalculationMessageProvider.cs (.../ICalculationMessageProvider.cs) (revision 1042a38d3663daeda5a8e1083edbc63a4b6aae94) +++ Ringtoets/Common/src/Ringtoets.Common.Service/MessageProviders/ICalculationMessageProvider.cs (.../ICalculationMessageProvider.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -44,10 +44,18 @@ /// Gets the message that should be used when a calculation fails. /// /// The calculation subject used in the calculation name. + /// The failure message provided from the calculation. /// The message. - string GetCalculationFailedMessage(string calculationSubject); + string GetCalculationFailedMessage(string calculationSubject, string failureMessage); /// + /// Gets the message that should be used when a calculation fails without explanation. + /// + /// The calculation subject used in the calculation name. + /// The message. + string GetCalculationFailedUnexplainedMessage(string calculationSubject); + + /// /// Gets the message that should be used when a calculation cannot be converged. /// /// The calculation subject used in the calculation name. Index: Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.Designer.cs =================================================================== diff -u -r6279011a954055d718ba3acf1144fc0da8923bf7 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 6279011a954055d718ba3acf1144fc0da8923bf7) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -147,16 +147,27 @@ } /// - /// Looks up a localized string similar to Er is een fout opgetreden tijdens de toetspeil berekening '{0}': inspecteer het logbestand.. + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Bekijk het foutrapport door op details te klikken. + ///{1}. /// - public static string DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calculation { + public static string DesignwaterlevelCalculationService_Calculate_Error_in_DesignWaterLevel_0_calculation_click_details_for_last_error_1 { get { - return ResourceManager.GetString("DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calcul" + - "ation", resourceCulture); + return ResourceManager.GetString("DesignwaterlevelCalculationService_Calculate_Error_in_DesignWaterLevel_0_calculat" + + "ion_click_details_for_last_error_1", resourceCulture); } } /// + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Er is geen foutrapport beschikbaar.. + /// + public static string DesignWaterLevelCalculationService_Calculate_Unexplained_error_in_design_water_level_0_calculation { + get { + return ResourceManager.GetString("DesignWaterLevelCalculationService_Calculate_Unexplained_error_in_design_water_le" + + "vel_0_calculation", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Toetspeil berekenen voor locatie '{0}'. /// public static string DesignWaterLevelCalculationService_Name_Calculate_assessment_level_for_location_0_ { @@ -288,15 +299,27 @@ } /// - /// Looks up a localized string similar to Er is een fout opgetreden tijdens de golfhoogte berekening '{0}': inspecteer het logbestand.. + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Bekijk het foutrapport door op details te klikken. + ///{1}. /// - public static string WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation { + public static string WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation_click_details_for_last_error_1 { get { - return ResourceManager.GetString("WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation", resourceCulture); + return ResourceManager.GetString("WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation_click_d" + + "etails_for_last_error_1", resourceCulture); } } /// + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Er is geen foutrapport beschikbaar.. + /// + public static string WaveHeightCalculationService_Calculate_Unexplained_error_in_wave_height_0_calculation { + get { + return ResourceManager.GetString("WaveHeightCalculationService_Calculate_Unexplained_error_in_wave_height_0_calcula" + + "tion", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Golfhoogte berekenen voor locatie '{0}'. /// public static string WaveHeightCalculationService_Name_Calculate_wave_height_for_location_0_ { Index: Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.resx =================================================================== diff -u -r6279011a954055d718ba3acf1144fc0da8923bf7 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.resx (.../Resources.resx) (revision 6279011a954055d718ba3acf1144fc0da8923bf7) +++ Ringtoets/Common/src/Ringtoets.Common.Service/Properties/Resources.resx (.../Resources.resx) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -141,8 +141,8 @@ Toetspeil berekening voor locatie {0} is niet geconvergeerd. - - Er is een fout opgetreden tijdens de toetspeil berekening '{0}': inspecteer het logbestand. + + Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Er is geen foutrapport beschikbaar. Toetspeil berekenen voor locatie '{0}' @@ -153,8 +153,8 @@ Golfhoogte berekening voor locatie {0} is niet geconvergeerd. - - Er is een fout opgetreden tijdens de golfhoogte berekening '{0}': inspecteer het logbestand. + + Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Er is geen foutrapport beschikbaar. Golfhoogte berekenen voor locatie '{0}' @@ -189,4 +189,12 @@ Golfhoogte berekening is uitgevoerd op de tijdelijke locatie: {0}. Gedetailleerde invoer en uitvoer kan in de bestanden op deze locatie worden gevonden. + + Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Bekijk het foutrapport door op details te klikken. +{1} + + + Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Bekijk het foutrapport door op details te klikken. +{1} + \ No newline at end of file Index: Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs =================================================================== diff -u -r8e182435811ddd7f9cf29ae57f62b91a2ce5a29c -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision 8e182435811ddd7f9cf29ae57f62b91a2ce5a29c) +++ Ringtoets/Common/src/Ringtoets.Common.Service/WaveHeightCalculationService.cs (.../WaveHeightCalculationService.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -90,6 +90,8 @@ calculator = HydraRingCalculatorFactory.Instance.CreateWaveHeightCalculator(hlcdDirectory, ringId); + var exceptionThrown = false; + try { calculator.Calculate(CreateInput(hydraulicBoundaryLocation, norm)); @@ -107,14 +109,31 @@ { if (!canceled) { - log.Error(messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name)); + var lastErrorContent = calculator.LastErrorContent; + log.Error(string.IsNullOrEmpty(lastErrorContent) + ? messageProvider.GetCalculationFailedUnexplainedMessage(hydraulicBoundaryLocation.Name) + : messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name, lastErrorContent)); + + exceptionThrown = true; throw; } } finally { - log.InfoFormat(Resources.WaveHeightCalculationService_Calculate_Calculation_temporary_directory_can_be_found_on_location_0, calculator.OutputDirectory); - CalculationServiceHelper.LogCalculationEndTime(calculationName); + try + { + var lastErrorContent = calculator.LastErrorContent; + if (!exceptionThrown && !string.IsNullOrEmpty(lastErrorContent)) + { + log.Error(messageProvider.GetCalculationFailedMessage(hydraulicBoundaryLocation.Name, lastErrorContent)); + throw new HydraRingFileParserException(lastErrorContent); + } + } + finally + { + log.InfoFormat(Resources.WaveHeightCalculationService_Calculate_Calculation_temporary_directory_can_be_found_on_location_0, calculator.OutputDirectory); + CalculationServiceHelper.LogCalculationEndTime(calculationName); + } } } Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs =================================================================== diff -u -r18a3f0bab0ce260604820928c136e66abca7daab -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision 18a3f0bab0ce260604820928c136e66abca7daab) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationActivityTest.cs (.../DesignWaterLevelCalculationActivityTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -307,7 +307,7 @@ var calculationMessageProviderMock = mockRepository.StrictMock(); calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(string.Empty); calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(string.Empty); - calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(locationName)).Return(calculationFailedMessage); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); mockRepository.ReplayAll(); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, locationName, 0, 0) @@ -325,7 +325,9 @@ using (new HydraRingCalculatorFactoryConfig()) { - ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator.EndInFailure = true; + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.EndInFailure = true; + calculator.LastErrorContent = calculationFailedMessage; // Call Action call = () => activity.Run(); @@ -384,5 +386,110 @@ } mockRepository.VerifyAll(); } + + [Test] + public void Run_UnexplainedErrorInCalculation_PerformValidationAndCalculationAndLogStartAndEndAndError() + { + // Setup + const string locationName = "locationName 1"; + string calculationFailedMessage = "Something went wrong"; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN), + DesignWaterLevelCalculationConvergence = CalculationConvergence.NotCalculated + }; + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(string.Empty); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedUnexplainedMessage(locationName)).Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + string validFilePath = Path.Combine(testDataPath, validFile); + + var norm = 30; + + var activity = new DesignWaterLevelCalculationActivity(hydraulicBoundaryLocation, + validFilePath, + string.Empty, + norm, + calculationMessageProviderMock); + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.EndInFailure = true; + + // Call + Action call = () => activity.Run(); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(6, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", locationName), msgs[0]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", locationName), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", locationName), msgs[2]); + Assert.AreEqual(calculationFailedMessage, msgs[3]); + StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie:", msgs[4]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", locationName), msgs[5]); + }); + Assert.AreEqual(ActivityState.Failed, activity.State); + } + } + + [Test] + public void Run_ErrorInCalculation_PerformValidationAndCalculationAndLogStartAndEndAndError() + { + // Setup + const string locationName = "locationName 1"; + string calculationFailedMessage = "Something went wrong"; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN), + DesignWaterLevelCalculationConvergence = CalculationConvergence.NotCalculated + }; + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + string validFilePath = Path.Combine(testDataPath, validFile); + + var norm = 30; + + var activity = new DesignWaterLevelCalculationActivity(hydraulicBoundaryLocation, + validFilePath, + string.Empty, + norm, + calculationMessageProviderMock); + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.EndInFailure = false; + calculator.LastErrorContent = "An error occured"; + + // Call + Action call = () => activity.Run(); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(6, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", locationName), msgs[0]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", locationName), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", locationName), msgs[2]); + Assert.AreEqual(calculationFailedMessage, msgs[3]); + StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie:", msgs[4]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", locationName), msgs[5]); + }); + Assert.AreEqual(ActivityState.Failed, activity.State); + } + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs =================================================================== diff -u -r18a3f0bab0ce260604820928c136e66abca7daab -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs (.../DesignWaterLevelCalculationServiceTest.cs) (revision 18a3f0bab0ce260604820928c136e66abca7daab) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/DesignWaterLevelCalculationServiceTest.cs (.../DesignWaterLevelCalculationServiceTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -194,7 +194,7 @@ var mockRepository = new MockRepository(); var calculationMessageProviderMock = mockRepository.StrictMock(); calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); - calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(locationName)).Return(calculationFailedMessage); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); mockRepository.ReplayAll(); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) @@ -207,6 +207,7 @@ var testFactory = (TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance; var testCalculator = testFactory.DesignWaterLevelCalculator; testCalculator.EndInFailure = true; + testCalculator.LastErrorContent = calculationFailedMessage; bool exceptionThrown = false; // Call @@ -242,6 +243,188 @@ mockRepository.VerifyAll(); } + [Test] + public void Calculate_CalculationFailedWithExceptionAndLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.LastErrorContent = "An error occured"; + calculator.EndInFailure = true; + + var exceptionThrown = false; + + // Call + Action call = () => + { + try + { + new DesignWaterLevelCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException) + { + exceptionThrown = true; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + } + } + + [Test] + public void Calculate_CalculationFailedWithExceptionAndNoLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedUnexplainedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedUnexplainedMessage(locationName)).Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.EndInFailure = true; + + var exceptionThrown = false; + + // Call + Action call = () => + { + try + { + new DesignWaterLevelCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException) + { + exceptionThrown = true; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + } + } + + [Test] + public void Calculate_CalculationFailedWithoutExceptionAndWithLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).DesignWaterLevelCalculator; + calculator.EndInFailure = false; + calculator.LastErrorContent = "An error occured"; + + var exceptionThrown = false; + var exceptionMessage = string.Empty; + + // Call + Action call = () => + { + try + { + new DesignWaterLevelCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException e) + { + exceptionThrown = true; + exceptionMessage = e.Message; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Toetspeil berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + Assert.AreEqual(calculator.LastErrorContent, exceptionMessage); + } + } + private static void AssertInput(AssessmentLevelCalculationInput expectedInput, HydraRingCalculationInput hydraRingCalculationInput) { Assert.AreEqual(expectedInput.Section.SectionId, hydraRingCalculationInput.Section.SectionId); Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs =================================================================== diff -u -r18a3f0bab0ce260604820928c136e66abca7daab -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs (.../WaveHeightCalculationActivityTest.cs) (revision 18a3f0bab0ce260604820928c136e66abca7daab) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationActivityTest.cs (.../WaveHeightCalculationActivityTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -289,7 +289,7 @@ var calculationMessageProviderMock = mockRepository.Stub(); calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(string.Empty); calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(string.Empty); - calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(locationName)).Return(calculationFailedMessage); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); mockRepository.ReplayAll(); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) @@ -308,7 +308,9 @@ using (new HydraRingCalculatorFactoryConfig()) { - ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator.EndInFailure = true; + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.EndInFailure = true; + calculator.LastErrorContent = calculationFailedMessage; // Call Action call = () => activity.Run(); @@ -367,5 +369,110 @@ } mockRepository.VerifyAll(); } + + [Test] + public void Run_UnexplainedErrorInCalculation_PerformValidationAndCalculationAndLogStartAndEndAndError() + { + // Setup + const string locationName = "locationName 1"; + string calculationFailedMessage = "Something went wrong"; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN), + DesignWaterLevelCalculationConvergence = CalculationConvergence.NotCalculated + }; + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(string.Empty); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedUnexplainedMessage(locationName)).Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + string validFilePath = Path.Combine(testDataPath, validFile); + + var norm = 30; + + var activity = new WaveHeightCalculationActivity(hydraulicBoundaryLocation, + validFilePath, + string.Empty, + norm, + calculationMessageProviderMock); + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.EndInFailure = true; + + // Call + Action call = () => activity.Run(); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(6, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", locationName), msgs[0]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", locationName), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", locationName), msgs[2]); + Assert.AreEqual(calculationFailedMessage, msgs[3]); + StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[4]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", locationName), msgs[5]); + }); + Assert.AreEqual(ActivityState.Failed, activity.State); + } + } + + [Test] + public void Run_ErrorInCalculation_PerformValidationAndCalculationAndLogStartAndEndAndError() + { + // Setup + const string locationName = "locationName 1"; + string calculationFailedMessage = "Something went wrong"; + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN), + DesignWaterLevelCalculationConvergence = CalculationConvergence.NotCalculated + }; + + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetActivityName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(locationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + string validFilePath = Path.Combine(testDataPath, validFile); + + var norm = 30; + + var activity = new WaveHeightCalculationActivity(hydraulicBoundaryLocation, + validFilePath, + string.Empty, + norm, + calculationMessageProviderMock); + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory)HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.EndInFailure = false; + calculator.LastErrorContent = "An error occured"; + + // Call + Action call = () => activity.Run(); + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(6, msgs.Length); + StringAssert.StartsWith(string.Format("Validatie van '{0}' gestart om: ", locationName), msgs[0]); + StringAssert.StartsWith(string.Format("Validatie van '{0}' beëindigd om: ", locationName), msgs[1]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", locationName), msgs[2]); + Assert.AreEqual(calculationFailedMessage, msgs[3]); + StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[4]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", locationName), msgs[5]); + }); + Assert.AreEqual(ActivityState.Failed, activity.State); + } + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs =================================================================== diff -u -r18a3f0bab0ce260604820928c136e66abca7daab -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs (.../WaveHeightCalculationServiceTest.cs) (revision 18a3f0bab0ce260604820928c136e66abca7daab) +++ Ringtoets/Common/test/Ringtoets.Common.Service.Test/WaveHeightCalculationServiceTest.cs (.../WaveHeightCalculationServiceTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -192,7 +192,7 @@ var mockRepository = new MockRepository(); var calculationMessageProviderMock = mockRepository.StrictMock(); calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); - calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(locationName)).Return(calculationFailedMessage).Repeat.AtLeastOnce(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage).Repeat.AtLeastOnce(); mockRepository.ReplayAll(); var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) @@ -205,6 +205,7 @@ var testFactory = (TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance; var testCalculator = testFactory.WaveHeightCalculator; testCalculator.EndInFailure = true; + testCalculator.LastErrorContent = calculationFailedMessage; bool exceptionThrown = false; // Call Action call = () => @@ -239,6 +240,188 @@ mockRepository.VerifyAll(); } + [Test] + public void Calculate_CalculationFailedWithExceptionAndLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.LastErrorContent = "An error occured"; + calculator.EndInFailure = true; + + var exceptionThrown = false; + + // Call + Action call = () => + { + try + { + new WaveHeightCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException) + { + exceptionThrown = true; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + } + } + + [Test] + public void Calculate_CalculationFailedWithExceptionAndNoLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedUnexplainedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedUnexplainedMessage(locationName)).Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.EndInFailure = true; + + var exceptionThrown = false; + + // Call + Action call = () => + { + try + { + new WaveHeightCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException) + { + exceptionThrown = true; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + } + } + + [Test] + public void Calculate_CalculationFailedWithoutExceptionAndWithLastErrorPresent_LogErrorAndThrowException() + { + // Setup + string validFilePath = Path.Combine(testDataPath, validFile); + + const string locationName = "punt_flw_ 1"; + const string calculationName = "locationName"; + const string calculationFailedMessage = "calculationFailedMessage"; + + var mockRepository = new MockRepository(); + var calculationMessageProviderMock = mockRepository.StrictMock(); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationName(locationName)).Return(calculationName); + calculationMessageProviderMock.Stub(calc => calc.GetCalculationFailedMessage(null, null)).IgnoreArguments().Return(calculationFailedMessage); + mockRepository.ReplayAll(); + + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(1, locationName, 0, 0) + { + DesignWaterLevel = new RoundedDouble(2, double.NaN) + }; + + using (new HydraRingCalculatorFactoryConfig()) + { + var calculator = ((TestHydraRingCalculatorFactory) HydraRingCalculatorFactory.Instance).WaveHeightCalculator; + calculator.EndInFailure = false; + calculator.LastErrorContent = "An error occured"; + + var exceptionThrown = false; + var exceptionMessage = string.Empty; + + // Call + Action call = () => + { + try + { + new WaveHeightCalculationService().Calculate(hydraulicBoundaryLocation, + validFilePath, + "ringId", + 30, + calculationMessageProviderMock); + } + catch (HydraRingFileParserException e) + { + exceptionThrown = true; + exceptionMessage = e.Message; + } + }; + + // Assert + TestHelper.AssertLogMessages(call, messages => + { + var msgs = messages.ToArray(); + Assert.AreEqual(4, msgs.Length); + StringAssert.StartsWith(string.Format("Berekening van '{0}' gestart om: ", calculationName), msgs[0]); + StringAssert.StartsWith(calculationFailedMessage, msgs[1]); + StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[2]); + StringAssert.StartsWith(string.Format("Berekening van '{0}' beëindigd om: ", calculationName), msgs[3]); + }); + Assert.IsTrue(exceptionThrown); + Assert.AreEqual(calculator.LastErrorContent, exceptionMessage); + } + } + private static void AssertInput(AssessmentLevelCalculationInput expectedInput, HydraRingCalculationInput hydraRingCalculationInput) { Assert.AreEqual(expectedInput.Section.SectionId, hydraRingCalculationInput.Section.SectionId); Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider.cs =================================================================== diff -u -r2973c5f790a5131e427bd5f73e2a620044199639 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider.cs (.../GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider.cs) (revision 2973c5f790a5131e427bd5f73e2a620044199639) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider.cs (.../GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -40,11 +40,16 @@ return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Name_Calculate_DesignWaterLevel_for_location_0_, locationName); } - public string GetCalculationFailedMessage(string locationName) + public string GetCalculationFailedMessage(string locationName, string failureMessage) { - return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation, locationName); + return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation_click_details_for_last_error_1, locationName, failureMessage); } + public string GetCalculationFailedUnexplainedMessage(string locationName) + { + return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_DesignWaterLevel_0_calculation, locationName); + } + public string GetCalculatedNotConvergedMessage(string locationName) { return string.Format(Resources.GrassCoverErosionOutwardsPlugin_DesignWaterLevel_calculation_for_location_0_not_converged, locationName); Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider.cs =================================================================== diff -u -r1e533850c7711172462df1e8f569b9f3ff950045 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider.cs (.../GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider.cs) (revision 1e533850c7711172462df1e8f569b9f3ff950045) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider.cs (.../GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -40,11 +40,16 @@ return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Name_Calculate_WaveHeight_for_location_0_, locationName); } - public string GetCalculationFailedMessage(string locationName) + public string GetCalculationFailedMessage(string locationName, string failureMessage) { - return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation, locationName); + return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation_click_details_for_last_error_1, locationName, failureMessage); } + public string GetCalculationFailedUnexplainedMessage(string locationName) + { + return string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_WaveHeight_0_calculation, locationName); + } + public string GetCalculatedNotConvergedMessage(string locationName) { return string.Format(Resources.GrassCoverErosionOutwardsPlugin_WaveHeight_calculation_for_location_0_not_converged, locationName); Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.Designer.cs =================================================================== diff -u -r03ec489f1a084da620f85271fdbd28e081ea0eb5 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 03ec489f1a084da620f85271fdbd28e081ea0eb5) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -22,7 +22,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Runtime Version:4.0.30319.17929 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -82,25 +82,48 @@ } /// - /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}': inspecteer het logbestand.. + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken. + ///{1}. /// - public static string GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation { + public static string GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation_click_details_for_last_error_1 { get { return ResourceManager.GetString("GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation" + - "", resourceCulture); + "_click_details_for_last_error_1", resourceCulture); } } /// - /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}': inspecteer het logbestand.. + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken. + ///{1}. /// - public static string GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation { + public static string GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation_click_details_for_last_error_1 { get { - return ResourceManager.GetString("GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation", resourceCulture); + return ResourceManager.GetString("GrassCoverErosionOutwardsPlugin_Calculate_Error_in_WaveHeight_0_calculation_click" + + "_details_for_last_error_1", resourceCulture); } } /// + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar. + /// + public static string GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_DesignWaterLevel_0_calculation { + get { + return ResourceManager.GetString("GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_DesignWaterLevel_0" + + "_calculation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar. + /// + public static string GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_WaveHeight_0_calculation { + get { + return ResourceManager.GetString("GrassCoverErosionOutwardsPlugin_Calculate_Unexplained_error_in_WaveHeight_0_calcu" + + "lation", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Waterstand bij doorsnede-eis berekening voor locatie '{0}' is niet geconvergeerd.. /// public static string GrassCoverErosionOutwardsPlugin_DesignWaterLevel_calculation_for_location_0_not_converged { Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.resx =================================================================== diff -u -r03ec489f1a084da620f85271fdbd28e081ea0eb5 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.resx (.../Resources.resx) (revision 03ec489f1a084da620f85271fdbd28e081ea0eb5) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Service/Properties/Resources.resx (.../Resources.resx) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -117,12 +117,20 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}': inspecteer het logbestand. + + Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken. +{1} - - Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}': inspecteer het logbestand. + + Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken. +{1} + + Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar + + + Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar + Waterstand bij doorsnede-eis berekening voor locatie '{0}' is niet geconvergeerd. Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProviderTest.cs =================================================================== diff -u -r8aea6e032ff8aeb4a4f1b85210fd0e2fbbce3a4a -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProviderTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProviderTest.cs) (revision 8aea6e032ff8aeb4a4f1b85210fd0e2fbbce3a4a) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProviderTest.cs (.../GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProviderTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -22,7 +22,6 @@ using NUnit.Framework; using Ringtoets.Common.Service.MessageProviders; using Ringtoets.GrassCoverErosionOutwards.Service.MessageProviders; -using Ringtoets.GrassCoverErosionOutwards.Service.Properties; namespace Ringtoets.GrassCoverErosionOutwards.Service.Test.MessageProviders { @@ -52,7 +51,7 @@ var calculationName = provider.GetCalculationName(name); // Assert - var expectedName = string.Format(Resources.GrassCoverErosionOutwardsPlugin_Name_DesignWaterLevel_for_location_0_, name); + var expectedName = string.Format("Waterstand bij doorsnede-eis voor locatie '{0}'", name); Assert.AreEqual(expectedName, calculationName); } @@ -69,7 +68,7 @@ var activityName = provider.GetActivityName(name); // Assert - var expectedName = string.Format(Resources.GrassCoverErosionOutwardsPlugin_Name_Calculate_DesignWaterLevel_for_location_0_, name); + var expectedName = string.Format("Waterstand bij doorsnede-eis berekenen voor locatie '{0}'", name); Assert.AreEqual(expectedName, activityName); } @@ -81,12 +80,14 @@ { // Setup var provider = new GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider(); + var failureMessage = "It failed!"; // Call - var message = provider.GetCalculationFailedMessage(name); + var message = provider.GetCalculationFailedMessage(name, failureMessage); // Assert - var expectedMessage = string.Format(Resources.GrassCoverErosionOutwardsPlugin_Calculate_Error_in_DesignWaterLevel_0_calculation, name); + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken.\r\n{1}", + name, failureMessage); Assert.AreEqual(expectedMessage, message); } @@ -103,8 +104,25 @@ var message = provider.GetCalculatedNotConvergedMessage(name); // Assert - var expectedMessage = string.Format(Resources.GrassCoverErosionOutwardsPlugin_DesignWaterLevel_calculation_for_location_0_not_converged, name); + var expectedMessage = string.Format("Waterstand bij doorsnede-eis berekening voor locatie '{0}' is niet geconvergeerd.", name); Assert.AreEqual(expectedMessage, message); } + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase("value")] + public void GetCalculationFailedUnexplainedMessage_ValidNames_ExpectedValues(string name) + { + // Setup + var provider = new GrassCoverErosionOutwardsDesignWaterLevelCalculationMessageProvider(); + + // Call + var message = provider.GetCalculationFailedUnexplainedMessage(name); + + // Assert + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de Waterstand bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar", name); + Assert.AreEqual(expectedMessage, message); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProviderTest.cs =================================================================== diff -u -r03ec489f1a084da620f85271fdbd28e081ea0eb5 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProviderTest.cs (.../GrassCoverErosionOutwardsWaveHeightCalculationMessageProviderTest.cs) (revision 03ec489f1a084da620f85271fdbd28e081ea0eb5) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Service.Test/MessageProviders/GrassCoverErosionOutwardsWaveHeightCalculationMessageProviderTest.cs (.../GrassCoverErosionOutwardsWaveHeightCalculationMessageProviderTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -80,13 +80,14 @@ { // Setup var provider = new GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider(); + var failureMessage = "It failed!"; // Call - var message = provider.GetCalculationFailedMessage(name); + var message = provider.GetCalculationFailedMessage(name, failureMessage); // Assert - var expectedMessage = string.Format("Er is een fout opgetreden tijdens de Golfhoogte bij " + - "doorsnede-eis berekening '{0}': inspecteer het logbestand.", name); + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Bekijk het foutrapport door op details te klikken.\r\n{1}", + name, failureMessage); Assert.AreEqual(expectedMessage, message); } @@ -106,5 +107,22 @@ var expectedMessage = string.Format("Golfhoogte bij doorsnede-eis berekening voor locatie '{0}' is niet geconvergeerd.", name); Assert.AreEqual(expectedMessage, message); } + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase("value")] + public void GetCalculationFailedUnexplainedMessage_ValidNames_ExpectedValues(string name) + { + // Setup + var provider = new GrassCoverErosionOutwardsWaveHeightCalculationMessageProvider(); + + // Call + var message = provider.GetCalculationFailedUnexplainedMessage(name); + + // Assert + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de Golfhoogte bij doorsnede-eis berekening '{0}'. Er is geen foutrapport beschikbaar", name); + Assert.AreEqual(expectedMessage, message); + } } } \ No newline at end of file Index: Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs =================================================================== diff -u -r636633d6507bef2735fd9b712b3a20feb3ac88c4 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs (.../HeightStructuresCalculationServiceTest.cs) (revision 636633d6507bef2735fd9b712b3a20feb3ac88c4) +++ Ringtoets/HeightStructures/test/Ringtoets.HeightStructures.Service.Test/HeightStructuresCalculationServiceTest.cs (.../HeightStructuresCalculationServiceTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -890,6 +890,7 @@ exceptionThrown = true; } }; + // Assert TestHelper.AssertLogMessages(call, messages => { @@ -951,6 +952,7 @@ exceptionThrown = true; } }; + // Assert TestHelper.AssertLogMessages(call, messages => { @@ -1015,6 +1017,7 @@ exceptionMessage = e.Message; } }; + // Assert TestHelper.AssertLogMessages(call, messages => { Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IDesignWaterLevelCalculator.cs =================================================================== diff -u -rbd73023d5f8926a411da214fb5ce522056a0e30a -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IDesignWaterLevelCalculator.cs (.../IDesignWaterLevelCalculator.cs) (revision bd73023d5f8926a411da214fb5ce522056a0e30a) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IDesignWaterLevelCalculator.cs (.../IDesignWaterLevelCalculator.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -45,6 +45,11 @@ string OutputDirectory { get; } /// + /// Gets the content of the last error file generated during the Hydra-Ring calculation. + /// + string LastErrorContent { get; } + + /// /// Performs the actual calculation by running the Hydra-Ring executable. /// /// The which contains all the necessary input Index: Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveHeightCalculator.cs =================================================================== diff -u -rbd73023d5f8926a411da214fb5ce522056a0e30a -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveHeightCalculator.cs (.../IWaveHeightCalculator.cs) (revision bd73023d5f8926a411da214fb5ce522056a0e30a) +++ Ringtoets/HydraRing/src/Ringtoets.HydraRing.Calculation/Calculator/IWaveHeightCalculator.cs (.../IWaveHeightCalculator.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -45,6 +45,11 @@ string OutputDirectory { get; } /// + /// Gets the content of the last error file generated during the Hydra-Ring calculation. + /// + string LastErrorContent { get; } + + /// /// Performs the actual calculation by running the Hydra-Ring executable. /// /// The which contains all the necessary input Index: Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs =================================================================== diff -u -re07044ef611f4a005447703ffba9f24b7c5acb90 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs (.../TestHydraRingCalculatorFactory.cs) (revision e07044ef611f4a005447703ffba9f24b7c5acb90) +++ Ringtoets/HydraRing/test/Ringtoets.HydraRing.Calculation.TestUtil/Calculator/TestHydraRingCalculatorFactory.cs (.../TestHydraRingCalculatorFactory.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -102,6 +102,7 @@ public class TestWaveHeightCalculator : TestHydraRingCalculator, IWaveHeightCalculator { public string OutputDirectory { get; set; } + public string LastErrorContent { get; set; } public double WaveHeight { get; set; } public double ReliabilityIndex { get; set; } } @@ -132,6 +133,7 @@ public class TestDesignWaterLevelCalculator : TestHydraRingCalculator, IDesignWaterLevelCalculator { public string OutputDirectory { get; set; } + public string LastErrorContent { get; set; } public double DesignWaterLevel { get; set; } public double ReliabilityIndex { get; set; } } Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/DesignWaterLevelCalculationMessageProvider.cs =================================================================== diff -u -rc399d2d0b6ce75c643c256bf605b748fc1dea88b -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/DesignWaterLevelCalculationMessageProvider.cs (.../DesignWaterLevelCalculationMessageProvider.cs) (revision c399d2d0b6ce75c643c256bf605b748fc1dea88b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/DesignWaterLevelCalculationMessageProvider.cs (.../DesignWaterLevelCalculationMessageProvider.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -39,11 +39,16 @@ return string.Format(Resources.DesignWaterLevelCalculationService_Name_Calculate_assessment_level_for_location_0_, locationName); } - public string GetCalculationFailedMessage(string locationName) + public string GetCalculationFailedMessage(string locationName, string failureMessage) { - return string.Format(Resources.DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calculation, locationName); + return string.Format(Resources.DesignwaterlevelCalculationService_Calculate_Error_in_DesignWaterLevel_0_calculation_click_details_for_last_error_1, locationName, failureMessage); } + public string GetCalculationFailedUnexplainedMessage(string locationName) + { + return string.Format(Resources.DesignWaterLevelCalculationService_Calculate_Unexplained_error_in_design_water_level_0_calculation, locationName); + } + public string GetCalculatedNotConvergedMessage(string locationName) { return string.Format(Resources.DesignWaterLevelCalculationActivity_DesignWaterLevel_calculation_for_location_0_not_converged, locationName); Index: Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/WaveHeightCalculationMessageProvider.cs =================================================================== diff -u -r06b2840a2bb64c0960c8ac29322b5a0971c73c77 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/WaveHeightCalculationMessageProvider.cs (.../WaveHeightCalculationMessageProvider.cs) (revision 06b2840a2bb64c0960c8ac29322b5a0971c73c77) +++ Ringtoets/Integration/src/Ringtoets.Integration.Service/MessageProviders/WaveHeightCalculationMessageProvider.cs (.../WaveHeightCalculationMessageProvider.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -39,11 +39,16 @@ return string.Format(Resources.WaveHeightCalculationService_Name_Calculate_wave_height_for_location_0_, locationName); } - public string GetCalculationFailedMessage(string locationName) + public string GetCalculationFailedMessage(string locationName, string failureMessage) { - return string.Format(Resources.WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation, locationName); + return string.Format(Resources.WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation_click_details_for_last_error_1, locationName, failureMessage); } + public string GetCalculationFailedUnexplainedMessage(string locationName) + { + return string.Format(Resources.WaveHeightCalculationService_Calculate_Unexplained_error_in_wave_height_0_calculation, locationName); + } + public string GetCalculatedNotConvergedMessage(string locationName) { return string.Format(Resources.WaveHeightCalculationActivity_WaveHeight_calculation_for_location_0_not_converged, locationName); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs =================================================================== diff -u -r74817f4dbb43aa0346f8b839e59370f786c5d452 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs (.../WaveHeightLocationsContextTreeNodeInfoTest.cs) (revision 74817f4dbb43aa0346f8b839e59370f786c5d452) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/TreeNodeInfos/WaveHeightLocationsContextTreeNodeInfoTest.cs (.../WaveHeightLocationsContextTreeNodeInfoTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -409,7 +409,7 @@ StringAssert.StartsWith(string.Format("Validatie van 'Golfhoogte berekenen voor locatie '{0}'' gestart om:", locationName), msgs[0]); StringAssert.StartsWith(string.Format("Validatie van 'Golfhoogte berekenen voor locatie '{0}'' beëindigd om:", locationName), msgs[1]); StringAssert.StartsWith(string.Format("Berekening van 'Golfhoogte berekenen voor locatie '{0}'' gestart om:", locationName), msgs[2]); - StringAssert.StartsWith(string.Format("Er is een fout opgetreden tijdens de golfhoogte berekening '{0}': inspecteer het logbestand.", locationName), msgs[3]); + StringAssert.StartsWith(string.Format("Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Er is geen foutrapport beschikbaar.", locationName), msgs[3]); StringAssert.StartsWith("Golfhoogte berekening is uitgevoerd op de tijdelijke locatie:", msgs[4]); StringAssert.StartsWith(string.Format("Berekening van 'Golfhoogte berekenen voor locatie '{0}'' beëindigd om:", locationName), msgs[5]); StringAssert.StartsWith(string.Format("Uitvoeren van 'Golfhoogte berekenen voor locatie '{0}'' is mislukt.", locationName), msgs[6]); Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/DesignWaterLevelCalculationMessageProviderTest.cs =================================================================== diff -u -rc399d2d0b6ce75c643c256bf605b748fc1dea88b -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/DesignWaterLevelCalculationMessageProviderTest.cs (.../DesignWaterLevelCalculationMessageProviderTest.cs) (revision c399d2d0b6ce75c643c256bf605b748fc1dea88b) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/DesignWaterLevelCalculationMessageProviderTest.cs (.../DesignWaterLevelCalculationMessageProviderTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -52,7 +52,7 @@ var calculationName = provider.GetCalculationName(name); // Assert - var expectedName = string.Format(Resources.DesignWaterLevelCalculationService_Name_Calculate_assessment_level_for_location_0_, name); + var expectedName = string.Format("Toetspeil berekenen voor locatie '{0}'", name); Assert.AreEqual(expectedName, calculationName); } @@ -69,7 +69,7 @@ var activityName = provider.GetActivityName(name); // Assert - var expectedName = string.Format(Resources.DesignWaterLevelCalculationService_Name_Calculate_assessment_level_for_location_0_, name); + var expectedName = string.Format("Toetspeil berekenen voor locatie '{0}'", name); Assert.AreEqual(expectedName, activityName); } @@ -81,12 +81,14 @@ { // Setup var provider = new DesignWaterLevelCalculationMessageProvider(); + var failureMessage = "It failed!"; // Call - var message = provider.GetCalculationFailedMessage(name); + var message = provider.GetCalculationFailedMessage(name, failureMessage); // Assert - var expectedMessage = string.Format(Resources.DesignWaterLevelCalculationService_Calculate_Error_in_design_water_level_0_calculation, name); + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Bekijk het foutrapport door op details te klikken.\r\n{1}", + name, failureMessage); Assert.AreEqual(expectedMessage, message); } @@ -103,8 +105,25 @@ var message = provider.GetCalculatedNotConvergedMessage(name); // Assert - var expectedMessage = string.Format(Resources.DesignWaterLevelCalculationActivity_DesignWaterLevel_calculation_for_location_0_not_converged, name); + var expectedMessage = string.Format("Toetspeil berekening voor locatie {0} is niet geconvergeerd.", name); Assert.AreEqual(expectedMessage, message); } + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase("value")] + public void GetCalculationFailedUnexplainedMessage_VariousParameters_ReturnsExpectedValue(string name) + { + // Setup + var provider = new DesignWaterLevelCalculationMessageProvider(); + + // Call + var message = provider.GetCalculationFailedUnexplainedMessage(name); + + // Assert + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de toetspeil berekening '{0}'. Er is geen foutrapport beschikbaar.", name); + Assert.AreEqual(expectedMessage, message); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/WaveHeightCalculationMessageProviderTest.cs =================================================================== diff -u -r06b2840a2bb64c0960c8ac29322b5a0971c73c77 -rc7d39e2c22a5df98a9f398cab98040a51faba283 --- Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/WaveHeightCalculationMessageProviderTest.cs (.../WaveHeightCalculationMessageProviderTest.cs) (revision 06b2840a2bb64c0960c8ac29322b5a0971c73c77) +++ Ringtoets/Integration/test/Ringtoets.Integration.Service.Test/MessageProviders/WaveHeightCalculationMessageProviderTest.cs (.../WaveHeightCalculationMessageProviderTest.cs) (revision c7d39e2c22a5df98a9f398cab98040a51faba283) @@ -52,7 +52,7 @@ var calculationName = provider.GetCalculationName(name); // Assert - var expectedName = string.Format(Resources.WaveHeightCalculationService_Name_Calculate_wave_height_for_location_0_, name); + var expectedName = string.Format("Golfhoogte berekenen voor locatie '{0}'", name); Assert.AreEqual(expectedName, calculationName); } @@ -69,24 +69,43 @@ var activityName = provider.GetActivityName(name); // Assert - var expectedName = string.Format(Resources.WaveHeightCalculationService_Name_Calculate_wave_height_for_location_0_, name); + var expectedName = string.Format("Golfhoogte berekenen voor locatie '{0}'", name); Assert.AreEqual(expectedName, activityName); } [Test] [TestCase(null)] [TestCase("")] [TestCase("value")] + public void GetCalculationFailedUnexplainedMessage_VariousParameters_ReturnsExpectedValue(string name) + { + // Setup + var provider = new WaveHeightCalculationMessageProvider(); + + // Call + var message = provider.GetCalculationFailedUnexplainedMessage(name); + + // Assert + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Er is geen foutrapport beschikbaar.", name); + Assert.AreEqual(expectedMessage, message); + } + + [Test] + [TestCase(null)] + [TestCase("")] + [TestCase("value")] public void GetCalculationFailedMessage_VariousParameters_ReturnsExpectedValue(string name) { // Setup var provider = new WaveHeightCalculationMessageProvider(); + var failureMessage = "It failed!"; // Call - var message = provider.GetCalculationFailedMessage(name); + var message = provider.GetCalculationFailedMessage(name, failureMessage); // Assert - var expectedMessage = string.Format(Resources.WaveHeightCalculationService_Calculate_Error_in_wave_height_0_calculation, name); + var expectedMessage = string.Format("Er is een fout opgetreden tijdens de golfhoogte berekening '{0}'. Bekijk het foutrapport door op details te klikken.\r\n{1}", + name, failureMessage); Assert.AreEqual(expectedMessage, message); } @@ -103,7 +122,7 @@ var message = provider.GetCalculatedNotConvergedMessage(name); // Assert - var expectedMessage = string.Format(Resources.WaveHeightCalculationActivity_WaveHeight_calculation_for_location_0_not_converged, name); + var expectedMessage = string.Format("Golfhoogte berekening voor locatie {0} is niet geconvergeerd.", name); Assert.AreEqual(expectedMessage, message); } }