Index: Core/Common/test/Core.Common.Gui.Test/Forms/PropertyGridView/PropertyGridViewTest.cs =================================================================== diff -u -rdf55938ef2e77d8060681a3a35e2d5a7466eb1f4 -rcd5e764c0cceea5f2133a0e86d7698511ca1ba4a --- Core/Common/test/Core.Common.Gui.Test/Forms/PropertyGridView/PropertyGridViewTest.cs (.../PropertyGridViewTest.cs) (revision df55938ef2e77d8060681a3a35e2d5a7466eb1f4) +++ Core/Common/test/Core.Common.Gui.Test/Forms/PropertyGridView/PropertyGridViewTest.cs (.../PropertyGridViewTest.cs) (revision cd5e764c0cceea5f2133a0e86d7698511ca1ba4a) @@ -22,6 +22,7 @@ using System; using System.Linq; using System.Windows.Forms; +using Core.Common.Base; using Core.Common.Controls.Views; using Core.Common.Gui.Forms.PropertyGridView; using Core.Common.Gui.PropertyBag; @@ -156,15 +157,15 @@ } [Test] - public void Data_SetNewDataObject_PreviousDataDisposed() + public void GivenPropertyGridViewWithDisposableDataSet_WhenNewDataObjectSet_ThenPreviousDataDisposed() { - // Setup + // Given var mockRepository = new MockRepository(); var dataObject = new object(); object dataObjectProperties = mockRepository.StrictMultiMock(typeof(IDisposable), typeof(IObjectProperties)); dataObjectProperties.Expect(d => ((IDisposable) d).Dispose()); - dataObjectProperties.Stub(d => ((IObjectProperties) d).RefreshRequired += null).IgnoreArguments(); - dataObjectProperties.Stub(d => ((IObjectProperties) d).RefreshRequired -= null).IgnoreArguments(); + dataObjectProperties.Expect(d => ((IObjectProperties) d).RefreshRequired += null).IgnoreArguments(); + dataObjectProperties.Expect(d => ((IObjectProperties) d).RefreshRequired -= null).IgnoreArguments(); dataObjectProperties.Stub(d => ((IObjectProperties) d).Data).Return(dataObject); var newDataObject = new object(); @@ -177,24 +178,53 @@ { propertyGridView.Data = dataObject; - // Call + // When propertyGridView.Data = newDataObject; } - // Assert + // Then mockRepository.VerifyAll(); } [Test] + public void GivenPropertyGridViewWithObservableDataSet_WhenNewDataObjectSet_ThenPreviousDataObserverDetached() + { + // Given + var mockRepository = new MockRepository(); + var observableDataObject = mockRepository.StrictMock(); + observableDataObject.Expect(d => d.Attach(null)).IgnoreArguments(); + observableDataObject.Expect(d => d.Detach(null)).IgnoreArguments(); + var dataObjectProperties = mockRepository.Stub(); + dataObjectProperties.Data = observableDataObject; + + var newDataObject = new object(); + var propertyResolver = mockRepository.StrictMock(); + propertyResolver.Expect(prs => prs.GetObjectProperties(observableDataObject)).Return(new DynamicPropertyBag(dataObjectProperties)); + propertyResolver.Expect(prs => prs.GetObjectProperties(newDataObject)).Return(null); + mockRepository.ReplayAll(); + + using (var propertyGridView = new TestGuiPropertyGridView(propertyResolver)) + { + propertyGridView.Data = observableDataObject; + + // When + propertyGridView.Data = newDataObject; + } + + // Then + mockRepository.VerifyAll(); + } + + [Test] public void GivenPropertyGridViewWithDisposableDataSet_WhenDisposing_ThenObjectPropertiesCorrectlyDisposed() { // Given var mockRepository = new MockRepository(); var dataObject = new object(); object dataObjectProperties = mockRepository.StrictMultiMock(typeof(IDisposable), typeof(IObjectProperties)); dataObjectProperties.Expect(d => ((IDisposable) d).Dispose()); - dataObjectProperties.Stub(d => ((IObjectProperties) d).RefreshRequired += null).IgnoreArguments(); - dataObjectProperties.Stub(d => ((IObjectProperties) d).RefreshRequired -= null).IgnoreArguments(); + dataObjectProperties.Expect(d => ((IObjectProperties) d).RefreshRequired += null).IgnoreArguments(); + dataObjectProperties.Expect(d => ((IObjectProperties) d).RefreshRequired -= null).IgnoreArguments(); dataObjectProperties.Stub(d => ((IObjectProperties) d).Data).Return(dataObject); var propertyResolver = mockRepository.StrictMock(); Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -rc840995eaf5d4c4564b7edfa56d964ea55ebbec0 -rcd5e764c0cceea5f2133a0e86d7698511ca1ba4a --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision c840995eaf5d4c4564b7edfa56d964ea55ebbec0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision cd5e764c0cceea5f2133a0e86d7698511ca1ba4a) @@ -638,11 +638,7 @@ ForeColor = context => context.WrappedData.ReferenceLine == null ? Color.FromKnownColor(KnownColor.GrayText) : Color.FromKnownColor(KnownColor.ControlText), - ContextMenuStrip = (nodeData, parentData, treeViewControl) => - Gui.Get(nodeData, treeViewControl) - .AddImportItem() - .AddExportItem() - .Build() + ContextMenuStrip = ReferenceLineContextMenuStrip }; yield return RingtoetsTreeNodeInfoFactory.CreateFailureMechanismContextTreeNodeInfo>( @@ -1118,6 +1114,20 @@ #endregion + #region ReferenceLineContext TreeNodeInfo + + private ContextMenuStrip ReferenceLineContextMenuStrip(ReferenceLineContext nodeData, object parentData, TreeViewControl treeViewControl) + { + return Gui.Get(nodeData, treeViewControl) + .AddImportItem() + .AddExportItem() + .AddSeparator() + .AddPropertiesItem() + .Build(); + } + + #endregion + #region BackgroundData treeNodeInfo private ContextMenuStrip BackgroundDataMenuStrip(BackgroundData nodeData, object parentData, TreeViewControl treeViewControl) Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/ReferenceLineContextTreeNodeInfoTest.cs =================================================================== diff -u -r3178e116f5e59e03078d465efeb303c5e232c7bf -rcd5e764c0cceea5f2133a0e86d7698511ca1ba4a --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/ReferenceLineContextTreeNodeInfoTest.cs (.../ReferenceLineContextTreeNodeInfoTest.cs) (revision 3178e116f5e59e03078d465efeb303c5e232c7bf) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/TreeNodeInfos/ReferenceLineContextTreeNodeInfoTest.cs (.../ReferenceLineContextTreeNodeInfoTest.cs) (revision cd5e764c0cceea5f2133a0e86d7698511ca1ba4a) @@ -128,6 +128,8 @@ var menuBuilder = mocks.StrictMock(); menuBuilder.Expect(mb => mb.AddImportItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.AddExportItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilder); menuBuilder.Expect(mb => mb.Build()).Return(null); using (var treeViewControl = new TreeViewControl())