Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/ReferenceLineReplacementHandlerTest.cs =================================================================== diff -u -ra4cd22ab000aa81906e43b5fd2898e52fee0e366 -rce9e1d476f00cfb42ce2a8ab6c762baf5abfd97b --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/ReferenceLineReplacementHandlerTest.cs (.../ReferenceLineReplacementHandlerTest.cs) (revision a4cd22ab000aa81906e43b5fd2898e52fee0e366) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/ReferenceLineReplacementHandlerTest.cs (.../ReferenceLineReplacementHandlerTest.cs) (revision ce9e1d476f00cfb42ce2a8ab6c762baf5abfd97b) @@ -22,8 +22,10 @@ using System; using System.Linq; using Core.Common.Base; +using Core.Common.Gui.Commands; using NUnit.Extensions.Forms; using NUnit.Framework; +using Rhino.Mocks; using Ringtoets.ClosingStructures.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.IO.ReferenceLines; @@ -46,14 +48,34 @@ [TestFixture] public class ReferenceLineReplacementHandlerTest : NUnitFormTest { + [Test] + public void Constructor_ViewCommandsNull_ThrowArgumentNullException() + { + // Setup + + // Call + TestDelegate call = () => new ReferenceLineReplacementHandler(null); + + // Assert + string paramName = Assert.Throws(call).ParamName; + Assert.AreEqual("viewCommands", paramName); + } + + [Test] public void Constructor_ExpectedValues() { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.Stub(); + mocks.ReplayAll(); + // Call - var handler = new ReferenceLineReplacementHandler(); + var handler = new ReferenceLineReplacementHandler(viewCommands); // Assert Assert.IsInstanceOf(handler); + mocks.VerifyAll(); } [Test] @@ -62,6 +84,10 @@ public void ConfirmReplace_ClickDialog_ReturnTrueIfOkAndFalseIfCancel(bool clickOk) { // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.Stub(); + mocks.ReplayAll(); + string dialogTitle = null, dialogMessage = null; DialogBoxHandler = (name, wnd) => { @@ -78,7 +104,7 @@ } }; - var handler = new ReferenceLineReplacementHandler(); + var handler = new ReferenceLineReplacementHandler(viewCommands); // Call bool result = handler.ConfirmReplace(); @@ -91,25 +117,40 @@ Environment.NewLine + "Wilt u doorgaan?", dialogMessage); + mocks.VerifyAll(); } + [Test] - public void ClearReferenceLine_AssessmentSectionNull_ThrowArgumentNullException() + public void Replace_AssessmentSectionNull_ThrownArgumentNullException() { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.Stub(); + mocks.ReplayAll(); + + var handler = new ReferenceLineReplacementHandler(viewCommands); + + var referenceLine = new ReferenceLine(); + // Call - TestDelegate call = () => RingtoetsDataSynchronizationService.ClearReferenceLine(null); + TestDelegate call = () => handler.Replace(null, referenceLine); // Assert string paramName = Assert.Throws(call).ParamName; Assert.AreEqual("assessmentSection", paramName); } [Test] - public void ClearReferenceLine_FullyConfiguredAssessmentSection_AllReferenceLineDependentDataCleared() + public void Replace_FullyConfiguredAssessmentSection_AllReferenceLineDependentDataCleared() { // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.Stub(); + mocks.ReplayAll(); + AssessmentSection assessmentSection = TestDataGenerator.GetFullyConfiguredAssessmentSection(); - var handler = new ReferenceLineReplacementHandler(); + var handler = new ReferenceLineReplacementHandler(viewCommands); var referenceLine = new ReferenceLine(); @@ -251,6 +292,75 @@ Assert.AreSame(referenceLine, assessmentSection.ReferenceLine); CollectionAssert.Contains(observables, assessmentSection); + + mocks.VerifyAll(); } + + [Test] + public void DoPostReplacementUpdates_NoReplaceCalled_DoNothing() + { + // Setup + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + mocks.ReplayAll(); + + var handler = new ReferenceLineReplacementHandler(viewCommands); + + // Call + handler.DoPostReplacementUpdates(); + + // Assert + mocks.VerifyAll(); // Expect not calls in 'viewCommands' + } + + + [Test] + public void DoPostReplacementUpdates_AfterReplacingReferenceLine_CloseViewsForRemovedData() + { + // Setup + const int expectedNumberOfRemovedInstances = 95; + + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(Arg.Is.NotNull)) + .Repeat.Times(expectedNumberOfRemovedInstances); + mocks.ReplayAll(); + + var handler = new ReferenceLineReplacementHandler(viewCommands); + + AssessmentSection assessmentSection = TestDataGenerator.GetFullyConfiguredAssessmentSection(); + handler.Replace(assessmentSection, new ReferenceLine()); + + // Call + handler.DoPostReplacementUpdates(); + + // Assert + mocks.VerifyAll(); + } + + [Test] + public void DoPostReplacementUpdates_CalledSecondTimeAfterReplaceAndUpdateCycle_DoNothing() + { + // Setup + const int expectedNumberOfRemovedInstances = 95; + + var mocks = new MockRepository(); + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(Arg.Is.NotNull)) + .Repeat.Times(expectedNumberOfRemovedInstances); + mocks.ReplayAll(); + + var handler = new ReferenceLineReplacementHandler(viewCommands); + + AssessmentSection assessmentSection = TestDataGenerator.GetFullyConfiguredAssessmentSection(); + handler.Replace(assessmentSection, new ReferenceLine()); + handler.DoPostReplacementUpdates(); + + // Call + handler.DoPostReplacementUpdates(); // Expected number should be identical to that of DoPostReplacementUpdates_AfterReplacingReferenceLine_CloseViewsForRemovedData + + // Assert + mocks.VerifyAll(); + } } } \ No newline at end of file