Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs =================================================================== diff -u -r31fe9de8d235e39e7cfd722a89bc39af495f99a7 -r36fb70b04307e0805488e2862cd94b1820f6bb1e --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision 31fe9de8d235e39e7cfd722a89bc39af495f99a7) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) @@ -131,6 +131,12 @@ LogCancelMessage(); return; } + + if (mergeDataProvider.SelectedAssessmentSection == null || mergeDataProvider.SelectedFailureMechanisms == null) + { + LogError(Resources.AssessmentSectionMerger_No_AssessmentSection_selected); + return; + } } private string SelectProject() Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs =================================================================== diff -u -r03733ab29bedcd18c213b3d62b87080514a9a67b -r36fb70b04307e0805488e2862cd94b1820f6bb1e --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 03733ab29bedcd18c213b3d62b87080514a9a67b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) @@ -142,6 +142,15 @@ } /// + /// Looks up a localized string similar to Er is geen traject geselecteerd.. + /// + public static string AssessmentSectionMerger_No_AssessmentSection_selected { + get { + return ResourceManager.GetString("AssessmentSectionMerger_No_AssessmentSection_selected", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Er zijn geen trajecten gevonden die samengevoegd kunnen worden.. /// public static string AssessmentSectionMerger_No_matching_AssessmentSections { Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx =================================================================== diff -u -r03733ab29bedcd18c213b3d62b87080514a9a67b -r36fb70b04307e0805488e2862cd94b1820f6bb1e --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 03733ab29bedcd18c213b3d62b87080514a9a67b) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Properties/Resources.resx (.../Resources.resx) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) @@ -188,4 +188,7 @@ Er zijn geen trajecten gevonden die samengevoegd kunnen worden. + + Er is geen traject geselecteerd. + \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs =================================================================== diff -u -r31fe9de8d235e39e7cfd722a89bc39af495f99a7 -r36fb70b04307e0805488e2862cd94b1820f6bb1e --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision 31fe9de8d235e39e7cfd722a89bc39af495f99a7) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) @@ -258,5 +258,70 @@ TestHelper.AssertLogMessageWithLevelIsGenerated(call, new Tuple("Importeren van gegevens is geannuleerd.", LogLevelConstant.Info), 1); mocks.VerifyAll(); } + + [Test] + public void GivenMatchedAssessmentSection_WhenMergeDataProviderReturnTrueButSelectedAssessmentSectionNull_ThenLogErrorMessageAndAbort() + { + // Given + var mocks = new MockRepository(); + var inquiryHelper = mocks.StrictMock(); + inquiryHelper.Expect(helper => helper.GetSourceFileLocation(null)).IgnoreArguments().Return(string.Empty); + var comparer = mocks.StrictMock(); + comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); + var mergeDataProvider = mocks.StrictMock(); + mergeDataProvider.Expect(mdp => mdp.SelectData(null)).IgnoreArguments().Return(true); + mergeDataProvider.Expect(mdp => mdp.SelectedAssessmentSection).Return(null); + mocks.ReplayAll(); + + Action getAssessmentSectionsAction = (path, owner) => + { + owner.AssessmentSections = new [] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }; + }; + + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + + // When + Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); + + // Then + TestHelper.AssertLogMessageWithLevelIsGenerated(call, new Tuple("Er is geen traject geselecteerd.", LogLevelConstant.Error), 1); + mocks.VerifyAll(); + } + + [Test] + public void GivenMatchedAssessmentSection_WhenMergeDataProviderReturnTrueButSelectedFailureMechanismsnNull_ThenLogErrorMessageAndAbort() + { + // Given + var mocks = new MockRepository(); + var inquiryHelper = mocks.StrictMock(); + inquiryHelper.Expect(helper => helper.GetSourceFileLocation(null)).IgnoreArguments().Return(string.Empty); + var comparer = mocks.StrictMock(); + comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); + var mergeDataProvider = mocks.StrictMock(); + mergeDataProvider.Expect(mdp => mdp.SelectData(null)).IgnoreArguments().Return(true); + mergeDataProvider.Expect(mdp => mdp.SelectedAssessmentSection).Return(new AssessmentSection(AssessmentSectionComposition.Dike)); + mergeDataProvider.Expect(mdp => mdp.SelectedFailureMechanisms).Return(null); + mocks.ReplayAll(); + + Action getAssessmentSectionsAction = (path, owner) => + { + owner.AssessmentSections = new [] + { + new AssessmentSection(AssessmentSectionComposition.Dike) + }; + }; + + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + + // When + Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); + + // Then + TestHelper.AssertLogMessageWithLevelIsGenerated(call, new Tuple("Er is geen traject geselecteerd.", LogLevelConstant.Error), 1); + mocks.VerifyAll(); + } } } \ No newline at end of file