Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs =================================================================== diff -u -r736f04ea6f24399148ab8efd7f3b03ae8f8f56b5 -r6c049c504e7f599a8cebb26ae37fcd82b03782f2 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 736f04ea6f24399148ab8efd7f3b03ae8f8f56b5) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Integration.Test/GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs (.../GrassCoverErosionInwardsCalculationActivityIntegrationTest.cs) (revision 6c049c504e7f599a8cebb26ae37fcd82b03782f2) @@ -285,59 +285,13 @@ } [Test] - public void Run_InvalidOvertoppingCalculationWithExceptionAndLastErrorPresent_LogErrorAndThrowException() + [TestCaseSource(typeof(HydraRingCalculatorTestCaseProvider), nameof(HydraRingCalculatorTestCaseProvider.GetCalculatorFailingConditionsWithReportDetails), new object[] { - // Setup - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - ImportHydraulicBoundaryDatabase(assessmentSection); - AddSectionToAssessmentSection(assessmentSection); - - var calculation = new GrassCoverErosionInwardsCalculation - { - InputParameters = - { - HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001), - DikeProfile = CreateDikeProfile() - } - }; - - var calculator = new TestOvertoppingCalculator - { - LastErrorFileContent = "An error occurred", - EndInFailure = true - }; - var mockRepository = new MockRepository(); - var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateOvertoppingCalculator(testDataPath)).Return(calculator); - mockRepository.ReplayAll(); - - using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) - { - var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, validFile, assessmentSection.GrassCoverErosionInwards, assessmentSection); - - // Call - Action call = () => activity.Run(); - - // Assert - TestHelper.AssertLogMessages(call, messages => - { - string[] msgs = messages.ToArray(); - Assert.AreEqual(6, msgs.Length); - Assert.AreEqual($"Validatie van '{calculation.Name}' gestart.", msgs[0]); - Assert.AreEqual($"Validatie van '{calculation.Name}' beëindigd.", msgs[1]); - Assert.AreEqual($"Berekening van '{calculation.Name}' gestart.", msgs[2]); - StringAssert.StartsWith($"De overloop en overslag berekening voor grasbekleding erosie kruin en binnentalud '{calculation.Name}' is niet gelukt. Bekijk het foutrapport door op details te klikken.", msgs[3]); - StringAssert.StartsWith("De overloop en overslag berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); - Assert.AreEqual($"Berekening van '{calculation.Name}' beëindigd.", msgs[5]); - }); - Assert.AreEqual(ActivityState.Failed, activity.State); - } - - mockRepository.VerifyAll(); - } - - [Test] - public void Run_InvalidOvertoppingCalculationWithExceptionAndNoLastErrorPresent_LogErrorAndThrowException() + nameof(Run_InvalidOvertoppingCalculationAndRan_LogErrorAndActivityStateFailed) + })] + public void Run_InvalidOvertoppingCalculationAndRan_LogErrorAndActivityStateFailed(bool endInFailure, + string lastErrorFileContent, + string detailedReport) { // Setup var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); @@ -352,60 +306,11 @@ DikeProfile = CreateDikeProfile() } }; - var calculator = new TestOvertoppingCalculator - { - EndInFailure = true - }; - var mockRepository = new MockRepository(); - var calculatorFactory = mockRepository.StrictMock(); - calculatorFactory.Expect(cf => cf.CreateOvertoppingCalculator(testDataPath)).Return(calculator); - mockRepository.ReplayAll(); - using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) - { - var activity = new GrassCoverErosionInwardsCalculationActivity(calculation, validFile, assessmentSection.GrassCoverErosionInwards, assessmentSection); - - // Call - Action call = () => activity.Run(); - - // Assert - TestHelper.AssertLogMessages(call, messages => - { - string[] msgs = messages.ToArray(); - Assert.AreEqual(6, msgs.Length); - Assert.AreEqual($"Validatie van '{calculation.Name}' gestart.", msgs[0]); - Assert.AreEqual($"Validatie van '{calculation.Name}' beëindigd.", msgs[1]); - Assert.AreEqual($"Berekening van '{calculation.Name}' gestart.", msgs[2]); - Assert.AreEqual($"De overloop en overslag berekening voor grasbekleding erosie kruin en binnentalud '{calculation.Name}' is niet gelukt. Er is geen foutrapport beschikbaar.", msgs[3]); - StringAssert.StartsWith("De overloop en overslag berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); - Assert.AreEqual($"Berekening van '{calculation.Name}' beëindigd.", msgs[5]); - }); - Assert.AreEqual(ActivityState.Failed, activity.State); - } - - mockRepository.VerifyAll(); - } - - [Test] - public void Run_InvalidOvertoppingCalculationWithoutExceptionAndWithLastErrorPresent_LogErrorAndThrowException() - { - // Setup - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - ImportHydraulicBoundaryDatabase(assessmentSection); - AddSectionToAssessmentSection(assessmentSection); - - var calculation = new GrassCoverErosionInwardsCalculation - { - InputParameters = - { - HydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations.First(hl => hl.Id == 1300001), - DikeProfile = CreateDikeProfile() - } - }; var calculator = new TestOvertoppingCalculator { - LastErrorFileContent = "An error occurred", - EndInFailure = false + LastErrorFileContent = lastErrorFileContent, + EndInFailure = endInFailure }; var mockRepository = new MockRepository(); var calculatorFactory = mockRepository.StrictMock(); @@ -427,7 +332,7 @@ Assert.AreEqual($"Validatie van '{calculation.Name}' gestart.", msgs[0]); Assert.AreEqual($"Validatie van '{calculation.Name}' beëindigd.", msgs[1]); Assert.AreEqual($"Berekening van '{calculation.Name}' gestart.", msgs[2]); - StringAssert.StartsWith($"De overloop en overslag berekening voor grasbekleding erosie kruin en binnentalud '{calculation.Name}' is niet gelukt. Bekijk het foutrapport door op details te klikken.", msgs[3]); + Assert.AreEqual($"De overloop en overslag berekening voor grasbekleding erosie kruin en binnentalud '{calculation.Name}' is niet gelukt. {detailedReport}", msgs[3]); StringAssert.StartsWith("De overloop en overslag berekening is uitgevoerd op de tijdelijke locatie", msgs[4]); Assert.AreEqual($"Berekening van '{calculation.Name}' beëindigd.", msgs[5]); }); @@ -484,16 +389,22 @@ } [Test] - public void Finish_InvalidOvertoppingCalculation_DoesNotSetOutputAndNotifyObservers() + [TestCaseSource(typeof(HydraRingCalculatorTestCaseProvider), nameof(HydraRingCalculatorTestCaseProvider.GetCalculatorFailingConditions), new object[] { + nameof(Finish_InvalidOvertoppingCalculation_DoesNotSetOutputAndNotifyObservers) + })] + public void Finish_InvalidOvertoppingCalculation_DoesNotSetOutputAndNotifyObservers(bool endInFailure, + string lastErrorFileContent) + { // Setup var mockRepository = new MockRepository(); var observerMock = mockRepository.StrictMock(); observerMock.Expect(o => o.UpdateObserver()); var calculator = new TestOvertoppingCalculator { - EndInFailure = true + EndInFailure = endInFailure, + LastErrorFileContent = lastErrorFileContent }; var calculatorFactory = mockRepository.StrictMock(); calculatorFactory.Expect(cf => cf.CreateOvertoppingCalculator(testDataPath)).Return(calculator);