Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs =================================================================== diff -u -rac2ef64a966ba1988c30df9773b383716e133eef -r0a3fd57580aff0d6487e195c67f315f628b1ced4 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision ac2ef64a966ba1988c30df9773b383716e133eef) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Merge/AssessmentSectionMergeHandler.cs (.../AssessmentSectionMergeHandler.cs) (revision 0a3fd57580aff0d6487e195c67f315f628b1ced4) @@ -54,6 +54,27 @@ public void PerformMerge(AssessmentSection targetAssessmentSection, AssessmentSection sourceAssessmentSection, IEnumerable failureMechanismsToMerge) { + if (targetAssessmentSection == null) + { + throw new ArgumentNullException(nameof(targetAssessmentSection)); + } + + if (sourceAssessmentSection == null) + { + throw new ArgumentNullException(nameof(sourceAssessmentSection)); + } + + if (failureMechanismsToMerge == null) + { + throw new ArgumentNullException(nameof(failureMechanismsToMerge)); + } + + BeforeMerge(targetAssessmentSection); } + + private void BeforeMerge(AssessmentSection assessmentSection) + { + viewCommands.RemoveAllViewsForItem(assessmentSection); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergeHandlerTest.cs =================================================================== diff -u -rac2ef64a966ba1988c30df9773b383716e133eef -r0a3fd57580aff0d6487e195c67f315f628b1ced4 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergeHandlerTest.cs (.../AssessmentSectionMergeHandlerTest.cs) (revision ac2ef64a966ba1988c30df9773b383716e133eef) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Merge/AssessmentSectionMergeHandlerTest.cs (.../AssessmentSectionMergeHandlerTest.cs) (revision 0a3fd57580aff0d6487e195c67f315f628b1ced4) @@ -20,9 +20,13 @@ // All rights reserved. using System; +using System.Linq; using Core.Common.Gui.Commands; using NUnit.Framework; using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Integration.Data; using Ringtoets.Integration.Plugin.Merge; namespace Ringtoets.Integration.Plugin.Test.Merge @@ -56,5 +60,88 @@ Assert.IsInstanceOf(handler); mocks.VerifyAll(); } + + [Test] + public void PerformMerge_targetAssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + mocks.ReplayAll(); + + var handler = new AssessmentSectionMergeHandler(viewCommands); + + // Call + TestDelegate call = () => handler.PerformMerge(null, new AssessmentSection(AssessmentSectionComposition.Dike), + Enumerable.Empty()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("targetAssessmentSection", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void PerformMerge_sourceAssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + mocks.ReplayAll(); + + var handler = new AssessmentSectionMergeHandler(viewCommands); + + // Call + TestDelegate call = () => handler.PerformMerge(new AssessmentSection(AssessmentSectionComposition.Dike), + null, Enumerable.Empty()); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("sourceAssessmentSection", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void PerformMerge_FailureMechanismsToMergeNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + mocks.ReplayAll(); + + var handler = new AssessmentSectionMergeHandler(viewCommands); + + // Call + TestDelegate call = () => handler.PerformMerge(new AssessmentSection(AssessmentSectionComposition.Dike), + new AssessmentSection(AssessmentSectionComposition.Dike), + null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanismsToMerge", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void PerformMerge_WithAllData_AllViewsForTargetAssessmentSectionClosed() + { + // Setup + var targetAssessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(targetAssessmentSection)); + mocks.ReplayAll(); + + var handler = new AssessmentSectionMergeHandler(viewCommands); + + // Call + handler.PerformMerge(targetAssessmentSection, + new AssessmentSection(AssessmentSectionComposition.Dike), + Enumerable.Empty()); + + // Assert + mocks.VerifyAll(); + } } } \ No newline at end of file