Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler.cs =================================================================== diff -u -r72f6ec295cfcb9a674bf8cb97b95dd8c79abd46b -rc1242c336a97112343b2e37c6dfc644cedddfd69 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler.cs) (revision 72f6ec295cfcb9a674bf8cb97b95dd8c79abd46b) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler.cs) (revision c1242c336a97112343b2e37c6dfc644cedddfd69) @@ -21,11 +21,14 @@ using System; using System.Collections.Generic; +using System.Linq; using Core.Common.Base; +using Core.Common.Gui.Commands; using Core.Common.Gui.Helpers; using Riskeer.Common.Forms.ChangeHandlers; using Riskeer.GrassCoverErosionInwards.Data; using Riskeer.GrassCoverErosionInwards.Service; +using Riskeer.GrassCoverErosionInwards.Util; using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; namespace Riskeer.GrassCoverErosionInwards.Forms.ChangeHandlers @@ -34,19 +37,20 @@ /// Class for handling clearing the illustration points of a collection of grass cover erosion inwards calculations. /// public class ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler - : ClearIllustrationPointsOfCalculationCollectionChangeHandlerBase + : ClearIllustrationPointsAndCloseViewOfCalculationCollectionChangeHandlerBase { private readonly IEnumerable calculations; /// /// Creates a new instance of . /// - /// Object responsible for inquiring confirmation. /// The calculations for which the illustration points should be cleared. - /// Thrown when any parameter is null. - public ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler(IInquiryHelper inquiryHelper, - IEnumerable calculations) - : base(inquiryHelper) + /// Object responsible for inquiring confirmation. + /// The view commands used to close views for the illustration points. + /// Thrown when any parameter is null. + public ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler( + IEnumerable calculations, IInquiryHelper inquiryHelper, IViewCommands viewCommands) + : base(inquiryHelper, viewCommands) { if (calculations == null) { @@ -56,11 +60,34 @@ this.calculations = calculations; } - public override IEnumerable ClearIllustrationPoints() + protected override IEnumerable PerformClearIllustrationPoints() { return GrassCoverErosionInwardsDataSynchronizationService.ClearIllustrationPoints(calculations); } + protected override void CloseView(IViewCommands viewCommands) + { + foreach (GrassCoverErosionInwardsCalculation calculation in calculations.Where(GrassCoverErosionInwardsIllustrationPointsHelper.HasIllustrationPoints)) + { + GrassCoverErosionInwardsOutput output = calculation.Output; + + if (GrassCoverErosionInwardsIllustrationPointsHelper.HasOverToppingIllustrationPoints(output)) + { + viewCommands.RemoveAllViewsForItem(output.OvertoppingOutput.GeneralResult); + } + + if (GrassCoverErosionInwardsIllustrationPointsHelper.HasDikeHeightOutputWithIllustrationPoints(output)) + { + viewCommands.RemoveAllViewsForItem(output.DikeHeightOutput.GeneralResult); + } + + if (GrassCoverErosionInwardsIllustrationPointsHelper.HasOverToppingRateOutputWithIllustrationPoints(output)) + { + viewCommands.RemoveAllViewsForItem(output.OvertoppingRateOutput.GeneralResult); + } + } + } + protected override string GetConfirmationMessage() { return RiskeerCommonFormsResources.ClearIllustrationPointsCalculationCollection_ConfirmationMessage; Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs =================================================================== diff -u -r9aedaf69371866ed6f94fc6a53de20a803a7b546 -rc1242c336a97112343b2e37c6dfc644cedddfd69 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision 9aedaf69371866ed6f94fc6a53de20a803a7b546) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsPlugin.cs (.../GrassCoverErosionInwardsPlugin.cs) (revision c1242c336a97112343b2e37c6dfc644cedddfd69) @@ -1052,7 +1052,7 @@ private static ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler CreateIllustrationPointsChangeHandler( IInquiryHelper inquiryHelper, IEnumerable calculations) { - return new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler(inquiryHelper, calculations); + return new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler(calculations, inquiryHelper); } private static ClearGrassCoverErosionInwardsCalculationOutputChangeHandler CreateClearCalculationOutputChangeHandler( Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandlerTest.cs =================================================================== diff -u -re9b8aa3e972b9f07a3201f143c26de0e3f082d49 -rc1242c336a97112343b2e37c6dfc644cedddfd69 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandlerTest.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandlerTest.cs) (revision e9b8aa3e972b9f07a3201f143c26de0e3f082d49) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/ChangeHandlers/ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandlerTest.cs (.../ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandlerTest.cs) (revision c1242c336a97112343b2e37c6dfc644cedddfd69) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.Linq; using Core.Common.Base; +using Core.Common.Gui.Commands; using Core.Common.Gui.Helpers; using Core.Common.TestUtil; using NUnit.Framework; @@ -32,6 +33,7 @@ using Riskeer.GrassCoverErosionInwards.Data; using Riskeer.GrassCoverErosionInwards.Data.TestUtil; using Riskeer.GrassCoverErosionInwards.Forms.ChangeHandlers; +using Riskeer.GrassCoverErosionInwards.Util; namespace Riskeer.GrassCoverErosionInwards.Forms.Test.ChangeHandlers { @@ -44,32 +46,33 @@ // Setup var mocks = new MockRepository(); var inquiryHelper = mocks.Stub(); + var viewCommands = mocks.Stub(); mocks.ReplayAll(); // Call - TestDelegate call = () => new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler( - inquiryHelper, null); + void Call() => new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler(null, inquiryHelper, viewCommands); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("calculations", exception.ParamName); mocks.VerifyAll(); } [Test] - public void Constructor_WithArguments_ExpectedValues() + public void Constructor_ExpectedValues() { // Setup var mocks = new MockRepository(); var inquiryHelper = mocks.Stub(); + var viewCommands = mocks.Stub(); mocks.ReplayAll(); // Call var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler( - inquiryHelper, Enumerable.Empty()); + Enumerable.Empty(), inquiryHelper, viewCommands); // Assert - Assert.IsInstanceOf(handler); + Assert.IsInstanceOf(handler); mocks.VerifyAll(); } @@ -83,10 +86,11 @@ var mocks = new MockRepository(); var inquiryHelper = mocks.StrictMock(); inquiryHelper.Expect(h => h.InquireContinuation("Weet u zeker dat u alle illustratiepunten wilt wissen?")).Return(expectedConfirmation); + var viewCommands = mocks.Stub(); mocks.ReplayAll(); var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler( - inquiryHelper, Enumerable.Empty()); + Enumerable.Empty(), inquiryHelper, viewCommands); // Call bool confirmation = handler.InquireConfirmation(); @@ -101,82 +105,73 @@ { // Setup var random = new Random(21); - var overtoppingOutputWithIllustrationPoints = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(new TestGeneralResultFaultTreeIllustrationPoint()), - null, - null); - var calculationWithOverToppingOutputWithIllustrationPoints = new GrassCoverErosionInwardsCalculation + var calculationWithOvertoppingOutputWithIllustrationPoints = new GrassCoverErosionInwardsCalculation { - Output = overtoppingOutputWithIllustrationPoints + Output = new GrassCoverErosionInwardsOutput( + new TestOvertoppingOutput(new TestGeneralResultFaultTreeIllustrationPoint()), + null, null) }; - var dikeHeightOutputWithIllustrationPoints = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()), - new TestDikeHeightOutput(new TestGeneralResultFaultTreeIllustrationPoint()), - null); var calculationWithDikeHeightWithIllustrationPoints = new GrassCoverErosionInwardsCalculation { - Output = dikeHeightOutputWithIllustrationPoints + Output = new GrassCoverErosionInwardsOutput( + new TestOvertoppingOutput(random.NextDouble()), + new TestDikeHeightOutput(new TestGeneralResultFaultTreeIllustrationPoint()), + null) }; - var overtoppingRateOutputWithIllustrationPoints = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()), - null, - new TestOvertoppingRateOutput(new TestGeneralResultFaultTreeIllustrationPoint())); var calculationWithOvertoppingRateWithIllustrationPoints = new GrassCoverErosionInwardsCalculation { - Output = overtoppingRateOutputWithIllustrationPoints + Output = new GrassCoverErosionInwardsOutput( + new TestOvertoppingOutput(random.NextDouble()), + null, new TestOvertoppingRateOutput(new TestGeneralResultFaultTreeIllustrationPoint())) }; - var outputWithNoIllustrationPoints = new GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(random.NextDouble()), - null, - null); var calculationWitNoIllustrationPoints = new GrassCoverErosionInwardsCalculation { - Output = outputWithNoIllustrationPoints + Output = new GrassCoverErosionInwardsOutput( + new TestOvertoppingOutput(random.NextDouble()), null, null) }; GrassCoverErosionInwardsCalculation[] calculations = { calculationWitNoIllustrationPoints, - calculationWithOverToppingOutputWithIllustrationPoints, + calculationWithOvertoppingOutputWithIllustrationPoints, calculationWithOvertoppingRateWithIllustrationPoints, calculationWithDikeHeightWithIllustrationPoints, new GrassCoverErosionInwardsCalculation() }; var mocks = new MockRepository(); - var inquiryHelper = mocks.StrictMock(); + var inquiryHelper = mocks.Stub(); + var viewCommands = mocks.StrictMock(); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculationWithOvertoppingOutputWithIllustrationPoints.Output.OvertoppingOutput.GeneralResult)); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculationWithOvertoppingRateWithIllustrationPoints.Output.OvertoppingRateOutput.GeneralResult)); + viewCommands.Expect(vc => vc.RemoveAllViewsForItem(calculationWithDikeHeightWithIllustrationPoints.Output.DikeHeightOutput.GeneralResult)); mocks.ReplayAll(); - var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler( - inquiryHelper, calculations); + var handler = new ClearIllustrationPointsOfGrassCoverErosionInwardsCalculationCollectionChangeHandler(calculations, inquiryHelper, viewCommands); // Call IEnumerable affectedObjects = handler.ClearIllustrationPoints(); // Assert CollectionAssert.AreEquivalent(new[] { - calculationWithOverToppingOutputWithIllustrationPoints, + calculationWithOvertoppingOutputWithIllustrationPoints, calculationWithOvertoppingRateWithIllustrationPoints, calculationWithDikeHeightWithIllustrationPoints }, affectedObjects); GrassCoverErosionInwardsCalculation[] calculationsWithOutput = { calculationWitNoIllustrationPoints, - calculationWithOverToppingOutputWithIllustrationPoints, + calculationWithOvertoppingOutputWithIllustrationPoints, calculationWithOvertoppingRateWithIllustrationPoints, calculationWithDikeHeightWithIllustrationPoints }; Assert.IsTrue(calculationsWithOutput.All(calc => calc.HasOutput)); - - Assert.IsTrue(calculationsWithOutput.All(calc => - { - GrassCoverErosionInwardsOutput output = calc.Output; - - return !output.OvertoppingOutput.HasGeneralResult - && output.DikeHeightOutput?.GeneralResult == null - && output.OvertoppingRateOutput?.GeneralResult == null; - })); + Assert.IsFalse(calculationsWithOutput.Any(GrassCoverErosionInwardsIllustrationPointsHelper.HasIllustrationPoints)); mocks.VerifyAll(); } }