Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs =================================================================== diff -u -r36fb70b04307e0805488e2862cd94b1820f6bb1e -r7fad62a843a5b8cd970b900800b851581e49476a --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/AssessmentSectionMerger.cs (.../AssessmentSectionMerger.cs) (revision 7fad62a843a5b8cd970b900800b851581e49476a) @@ -27,6 +27,7 @@ using Ringtoets.Integration.Data; using Ringtoets.Integration.Data.Merge; using Ringtoets.Integration.Forms.Merge; +using Ringtoets.Integration.Plugin.Handlers; using Ringtoets.Integration.Plugin.Properties; using Ringtoets.Integration.Service.Comparers; using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; @@ -45,6 +46,7 @@ private readonly Action getAssessmentSectionsAction; private readonly IAssessmentSectionMergeComparer comparer; private readonly IMergeDataProvider mergeDataProvider; + private readonly IAssessmentSectionMergeHandler mergeHandler; /// /// Creates a new instance of , @@ -54,9 +56,10 @@ /// to merge. /// The comparer to compare the assessment sections with. /// The provider to get the data to merge from. + /// The handler to perform the merge. /// Thrown when any parameter is null. public AssessmentSectionMerger(IInquiryHelper inquiryHandler, Action getAssessmentSectionsAction, - IAssessmentSectionMergeComparer comparer, IMergeDataProvider mergeDataProvider) + IAssessmentSectionMergeComparer comparer, IMergeDataProvider mergeDataProvider, IAssessmentSectionMergeHandler mergeHandler) { if (inquiryHandler == null) { @@ -78,10 +81,16 @@ throw new ArgumentNullException(nameof(mergeDataProvider)); } + if (mergeHandler == null) + { + throw new ArgumentNullException(nameof(mergeHandler)); + } + this.inquiryHandler = inquiryHandler; this.getAssessmentSectionsAction = getAssessmentSectionsAction; this.comparer = comparer; this.mergeDataProvider = mergeDataProvider; + this.mergeHandler = mergeHandler; } /// Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/IAssessmentSectionMergeHandler.cs =================================================================== diff -u -r61749a95649b845b5705ea40825b5f4257d38ed5 -r7fad62a843a5b8cd970b900800b851581e49476a --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/IAssessmentSectionMergeHandler.cs (.../IAssessmentSectionMergeHandler.cs) (revision 61749a95649b845b5705ea40825b5f4257d38ed5) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/IAssessmentSectionMergeHandler.cs (.../IAssessmentSectionMergeHandler.cs) (revision 7fad62a843a5b8cd970b900800b851581e49476a) @@ -28,7 +28,7 @@ /// /// Interface for handling the merge of the . /// - internal interface IAssessmentSectionMergeHandler + public interface IAssessmentSectionMergeHandler { /// /// Performs the merges. Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -r5d6ebe2e900dc53874bae15126eaa813b504da3c -r7fad62a843a5b8cd970b900800b851581e49476a --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 5d6ebe2e900dc53874bae15126eaa813b504da3c) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 7fad62a843a5b8cd970b900800b851581e49476a) @@ -282,7 +282,8 @@ assessmentSectionOwner.AssessmentSections = provider.GetAssessmentSections(filePath); }, new AssessmentSectionMergeComparer(), - new MergeDataProviderStub(Gui.MainWindow)); + new MergeDataProviderStub(Gui.MainWindow), + new AssessmentSectionMergeHandlerStub()); ribbonCommandHandler = new RingtoetsRibbon { Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs =================================================================== diff -u -r36fb70b04307e0805488e2862cd94b1820f6bb1e -r7fad62a843a5b8cd970b900800b851581e49476a --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision 36fb70b04307e0805488e2862cd94b1820f6bb1e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/AssessmentSectionMergerTest.cs (.../AssessmentSectionMergerTest.cs) (revision 7fad62a843a5b8cd970b900800b851581e49476a) @@ -29,6 +29,7 @@ using Ringtoets.Integration.Data; using Ringtoets.Integration.Data.Merge; using Ringtoets.Integration.Forms.Merge; +using Ringtoets.Integration.Plugin.Handlers; using Ringtoets.Integration.Service.Comparers; namespace Ringtoets.Integration.Plugin.Test @@ -43,10 +44,11 @@ var mocks = new MockRepository(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(null, (path, owner) => {}, comparer, mergeDataProvider); + TestDelegate call = () => new AssessmentSectionMerger(null, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -62,10 +64,11 @@ var inquiryHelper = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, null, comparer, mergeDataProvider); + TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, null, comparer, mergeDataProvider, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -80,10 +83,11 @@ var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, null, mergeDataProvider); + TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, null, mergeDataProvider, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -98,10 +102,11 @@ var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock(); var comparer = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); // Call - TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, null); + TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, null, mergeHandler); // Assert var exception = Assert.Throws(call); @@ -110,16 +115,36 @@ } [Test] + public void Constructor_MergeHandlerNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var inquiryHelper = mocks.StrictMock(); + var comparer = mocks.StrictMock(); + var mergeDataProvider = mocks.StrictMock(); + mocks.ReplayAll(); + + // Call + TestDelegate call = () => new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider, null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("mergeHandler", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void StartMerge_AssessmentSectionNull_ThrowsArgumentNullException() { // Setup var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock(); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); // Call TestDelegate call = () => merger.StartMerge(null); @@ -139,9 +164,10 @@ inquiryHelper.Expect(helper => helper.GetSourceFileLocation(null)).IgnoreArguments().Return(null); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); // Call Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -160,9 +186,10 @@ inquiryHelper.Expect(helper => helper.GetSourceFileLocation(null)).IgnoreArguments().Return(string.Empty); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, (path, owner) => {}, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -181,14 +208,12 @@ inquiryHelper.Expect(helper => helper.GetSourceFileLocation(null)).IgnoreArguments().Return(string.Empty); var comparer = mocks.StrictMock(); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); - Action getAssessmentSectionsAction = (path, owner) => - { - owner.AssessmentSections = Enumerable.Empty(); - }; + Action getAssessmentSectionsAction = (path, owner) => { owner.AssessmentSections = Enumerable.Empty(); }; - var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -208,17 +233,18 @@ var comparer = mocks.StrictMock(); comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(false); var mergeDataProvider = mocks.StrictMock(); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); Action getAssessmentSectionsAction = (path, owner) => { - owner.AssessmentSections = new [] + owner.AssessmentSections = new[] { new AssessmentSection(AssessmentSectionComposition.Dike) }; }; - var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -239,17 +265,18 @@ comparer.Expect(c => c.Compare(null, null)).IgnoreArguments().Return(true); var mergeDataProvider = mocks.StrictMock(); mergeDataProvider.Expect(mdp => mdp.SelectData(null)).IgnoreArguments().Return(false); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); Action getAssessmentSectionsAction = (path, owner) => { - owner.AssessmentSections = new [] + owner.AssessmentSections = new[] { new AssessmentSection(AssessmentSectionComposition.Dike) }; }; - var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -271,17 +298,18 @@ var mergeDataProvider = mocks.StrictMock(); mergeDataProvider.Expect(mdp => mdp.SelectData(null)).IgnoreArguments().Return(true); mergeDataProvider.Expect(mdp => mdp.SelectedAssessmentSection).Return(null); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); Action getAssessmentSectionsAction = (path, owner) => { - owner.AssessmentSections = new [] + owner.AssessmentSections = new[] { new AssessmentSection(AssessmentSectionComposition.Dike) }; }; - var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike)); @@ -304,17 +332,18 @@ 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); + var mergeHandler = mocks.StrictMock(); mocks.ReplayAll(); Action getAssessmentSectionsAction = (path, owner) => { - owner.AssessmentSections = new [] + owner.AssessmentSections = new[] { new AssessmentSection(AssessmentSectionComposition.Dike) }; }; - var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider); + var merger = new AssessmentSectionMerger(inquiryHelper, getAssessmentSectionsAction, comparer, mergeDataProvider, mergeHandler); // When Action call = () => merger.StartMerge(new AssessmentSection(AssessmentSectionComposition.Dike));