Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/FailureMechanismContributionContextProperties.cs =================================================================== diff -u -r1ddd0ecb63ccdcb00ce2f1f757ba5e0c64a5fb90 -rc8f94bae0d4f9b0c33bfd871991a969b203e3f45 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/FailureMechanismContributionContextProperties.cs (.../FailureMechanismContributionContextProperties.cs) (revision 1ddd0ecb63ccdcb00ce2f1f757ba5e0c64a5fb90) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/PropertyClasses/FailureMechanismContributionContextProperties.cs (.../FailureMechanismContributionContextProperties.cs) (revision c8f94bae0d4f9b0c33bfd871991a969b203e3f45) @@ -24,7 +24,6 @@ using Core.Common.Base; using Core.Common.Gui.Attributes; using Core.Common.Gui.PropertyBag; -using Core.Common.Utils; using Core.Common.Utils.Attributes; using Core.Common.Utils.Reflection; using Ringtoets.Common.Data.AssessmentSection; @@ -46,15 +45,22 @@ [ResourcesCategory(typeof(RingtoetsCommonFormsResources), "Categories_General")] [ResourcesDisplayName(typeof(Resources), "FailureMechanismContribution_Composition_DisplayName")] [ResourcesDescription(typeof(Resources), "FailureMechanismContribution_Composition_Description")] - public string AssessmentSectionComposition + public AssessmentSectionComposition AssessmentSectionComposition { get { - return new EnumDisplayWrapper(AssessmentSection.Composition).DisplayName; + return AssessmentSection.Composition; } set { - + if (compositionChangeHandler.ConfirmCompositionChange()) + { + IEnumerable changedObjects = compositionChangeHandler.ChangeComposition(AssessmentSection, value); + foreach (IObservable changedObject in changedObjects) + { + changedObject.NotifyObservers(); + } + } } } @@ -69,6 +75,15 @@ } set { + if (value != 0 && normChangeHandler.ConfirmNormChange()) + { + double newNormValue = 1.0/Convert.ToInt32(value); + IEnumerable changedObjects = normChangeHandler.ChangeNorm(AssessmentSection, newNormValue); + foreach (IObservable changedObject in changedObjects) + { + changedObject.NotifyObservers(); + } + } } } @@ -85,7 +100,7 @@ [DynamicVisible] public IFailureMechanismContributionNormChangeHandler NormChangeHandler { - get + private get { return normChangeHandler; } @@ -106,7 +121,7 @@ [DynamicVisible] public IAssessmentSectionCompositionChangeHandler CompositionChangeHandler { - get + private get { return compositionChangeHandler; } @@ -140,4 +155,4 @@ return true; } } -} +} \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionContextPropertiesTest.cs =================================================================== diff -u -r1ddd0ecb63ccdcb00ce2f1f757ba5e0c64a5fb90 -rc8f94bae0d4f9b0c33bfd871991a969b203e3f45 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionContextPropertiesTest.cs (.../FailureMechanismContributionContextPropertiesTest.cs) (revision 1ddd0ecb63ccdcb00ce2f1f757ba5e0c64a5fb90) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/PropertyClasses/FailureMechanismContributionContextPropertiesTest.cs (.../FailureMechanismContributionContextPropertiesTest.cs) (revision c8f94bae0d4f9b0c33bfd871991a969b203e3f45) @@ -24,20 +24,31 @@ using System.Linq; using Core.Common.Gui.PropertyBag; using Core.Common.TestUtil; +using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.PropertyClasses; +using Ringtoets.Integration.Forms.Views; +using Ringtoets.Integration.Plugin.Handlers; namespace Ringtoets.Integration.Forms.Test.PropertyClasses { [TestFixture] - public class FailureMechanismContributionContextPropertiesTest + public class FailureMechanismContributionContextPropertiesTest : NUnitFormTest { - private readonly MockRepository mocks = new MockRepository(); + private MockRepository mocks; + [SetUp] + public override void Setup() + { + base.Setup(); + mocks = new MockRepository(); + } + [Test] public void DefaultConstructor_ExpectedValues() { @@ -82,19 +93,16 @@ } [Test] - [TestCase(AssessmentSectionComposition.Dike, "Dijk")] - [TestCase(AssessmentSectionComposition.Dune, "Duin")] - [TestCase(AssessmentSectionComposition.DikeAndDune, "Dijk / Duin")] - public void GetProperties_WithData_ReturnExpectedValues(AssessmentSectionComposition composition, string expectedValue) + public void GetProperties_WithData_ReturnExpectedValues() { // Setup + var assessmentSectionComposition = AssessmentSectionComposition.DikeAndDune; var assessmentSection = mocks.Stub(); - assessmentSection.Stub(section => section.Composition).Return(composition); + assessmentSection.Stub(section => section.Composition).Return(assessmentSectionComposition); mocks.ReplayAll(); - var failureMechanisms = Enumerable.Empty(); - int returnPeriod = 30000; + var failureMechanisms = Enumerable.Empty(); var contribution = new FailureMechanismContribution(failureMechanisms, 1.1, 1.0/returnPeriod); // Call @@ -106,7 +114,7 @@ // Assert Assert.AreEqual(returnPeriod, properties.ReturnPeriod); - Assert.AreEqual(expectedValue, properties.AssessmentSectionComposition); + Assert.AreEqual(assessmentSectionComposition, properties.AssessmentSectionComposition); mocks.VerifyAll(); } @@ -137,5 +145,102 @@ string paramName = Assert.Throws(call).ParamName; Assert.AreEqual("value", paramName); } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void GivenReturnPeriod_WhenConfirmingChanges_ReturnPeriodSet(bool confirmChange) + { + // Given + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + int originalReturnPeriod = Convert.ToInt32(1/failureMechanismContribution.Norm); + + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + + var compositionChangeHandler = mocks.Stub(); + compositionChangeHandler.Stub(h => h.ConfirmCompositionChange()).Return(false); + mocks.ReplayAll(); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = normChangeHandler, + CompositionChangeHandler = compositionChangeHandler + }; + + DialogBoxHandler = (name, wnd) => + { + var messageBox = new MessageBoxTester(wnd); + + if (confirmChange) + { + messageBox.ClickOk(); + } + else + { + messageBox.ClickCancel(); + } + }; + + // When + const int newReturnPeriod = 200; + properties.ReturnPeriod = newReturnPeriod; + + // Then + Assert.AreEqual(confirmChange ? newReturnPeriod : originalReturnPeriod, properties.ReturnPeriod); + Assert.AreEqual(confirmChange ? 1.0/newReturnPeriod : 1.0/originalReturnPeriod, failureMechanismContribution.Norm); + mocks.VerifyAll(); + } + + [Test] + [TestCase(true)] + [TestCase(false)] + public void GivenAssessmentSectionComposition_WhenConfirmingChanges_AssessmentSectionCompositionSet(bool confirmChange) + { + // Given + const AssessmentSectionComposition originalComposition = AssessmentSectionComposition.Dike; + AssessmentSection assessmentSection = new AssessmentSection(originalComposition); + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); + + var normChangeHandler = mocks.Stub(); + normChangeHandler.Stub(h => h.ConfirmNormChange()) + .Return(false); + mocks.ReplayAll(); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = normChangeHandler, + CompositionChangeHandler = compositionChangeHandler + }; + + DialogBoxHandler = (name, wnd) => + { + var messageBox = new MessageBoxTester(wnd); + + if (confirmChange) + { + messageBox.ClickOk(); + } + else + { + messageBox.ClickCancel(); + } + }; + + // When + const AssessmentSectionComposition newComposition = AssessmentSectionComposition.DikeAndDune; + properties.AssessmentSectionComposition = newComposition; + + // Then + Assert.AreEqual(confirmChange ? newComposition : originalComposition, properties.AssessmentSectionComposition); + Assert.AreEqual(confirmChange ? newComposition : originalComposition, assessmentSection.Composition); + mocks.VerifyAll(); + } } } \ No newline at end of file