Index: Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs =================================================================== diff -u -r4fde87e9b64c21a70b06ff295fd34cc1932fe72a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 4fde87e9b64c21a70b06ff295fd34cc1932fe72a) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1540,6 +1540,24 @@ } /// + /// Looks up a localized string similar to NodePresenter_CommandHandler_required. + /// + public static string NodePresenter_CommandHandler_required { + get { + return ResourceManager.GetString("NodePresenter_CommandHandler_required", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Voor het aanmaken van knopen in de boom is een ContextMenuBuilderProvider nodig.. + /// + public static string NodePresenter_ContextMenuBuilderProvider_required { + get { + return ResourceManager.GetString("NodePresenter_ContextMenuBuilderProvider_required", resourceCulture); + } + } + + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// public static System.Drawing.Bitmap note { @@ -2396,15 +2414,6 @@ } /// - /// Looks up a localized string similar to . - /// - public static string String1 { - get { - return ResourceManager.GetString("String1", resourceCulture); - } - } - - /// /// Looks up a localized string similar to Grafiek. /// public static string ToolWindow_Name_Chart { Index: Core/Common/src/Core.Common.Gui/Properties/Resources.resx =================================================================== diff -u -r4fde87e9b64c21a70b06ff295fd34cc1932fe72a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision 4fde87e9b64c21a70b06ff295fd34cc1932fe72a) +++ Core/Common/src/Core.Common.Gui/Properties/Resources.resx (.../Resources.resx) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -893,7 +893,10 @@ Verwijder de knoop uit de boom. - - + + NodePresenter_CommandHandler_required + + Voor het aanmaken van knopen in de boom is een ContextMenuBuilderProvider nodig. + \ No newline at end of file Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/NodePresenters/ProjectNodePresenter.cs (.../ProjectNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,8 +1,8 @@ +using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Controls; using Core.Common.Controls.Swf.TreeViewControls; @@ -14,15 +14,31 @@ { public class ProjectNodePresenter : TreeViewNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + private readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + private readonly IGuiCommandHandler commandHandler; /// - /// Sets the to be used for binding items to actions in the . + /// Creates a new instance of , which uses the + /// and + /// to create and bind its . /// - public IGuiCommandHandler CommandHandler { private get; set; } + /// The + /// to use for building a . + /// The to defer the add + /// item action to. + public ProjectNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider, IGuiCommandHandler commandHandler) + { + if (contextMenuBuilderProvider == null) + { + throw new ArgumentNullException("contextMenuBuilderProvider", Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required); + } + if (commandHandler == null) + { + throw new ArgumentNullException("commandHandler", Common.Gui.Properties.Resources.NodePresenter_CommandHandler_required); + } + this.contextMenuBuilderProvider = contextMenuBuilderProvider; + this.commandHandler = commandHandler; + } public override IEnumerable GetChildNodeObjects(Project project) { @@ -40,17 +56,13 @@ public override ContextMenuStrip GetContextMenu(ITreeNode sender, object nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } var addItem = new StrictContextMenuItem( Resources.AddItem, null, Resources.plus, - (s, e) => CommandHandler.AddNewItem(nodeData)); + (s, e) => commandHandler.AddNewItem(nodeData)); - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddCustomItem(addItem) .AddSeparator() Index: Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Core/Plugins/src/Core.Plugins.ProjectExplorer/ProjectExplorerGuiPlugin.cs (.../ProjectExplorerGuiPlugin.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,7 +1,5 @@ using System.Collections.Generic; using System.Linq; -using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Controls; using Core.Common.Gui; @@ -31,11 +29,7 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { - yield return new ProjectNodePresenter - { - ContextMenuBuilderProvider = Gui.ContextMenuProvider, - CommandHandler = Gui.CommandHandler - }; + yield return new ProjectNodePresenter(Gui.ContextMenuProvider, Gui.CommandHandler); } public static ProjectExplorerGuiPlugin Instance { get; private set; } Index: Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs (.../ProjectNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Core/Plugins/test/Core.Plugins.ProjectExplorer.Test/NodePresenters/ProjectNodePresenterTest.cs (.../ProjectNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,8 +1,10 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; using Core.Plugins.ProjectExplorer.NodePresenters; @@ -26,30 +28,47 @@ } [Test] - public void GetContextMenu_NoContextMenuProvider_ReturnsNull() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { - // Setup - var presenter = new ProjectNodePresenter(); - var nodeMock = mocks.StrictMock(); + // Call + TestDelegate test = () => new ProjectNodePresenter(null, null); + // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_NoCommandHandlerProvider_ArgumentNullException() + { // Call - var result = presenter.GetContextMenu(nodeMock, new Project()); + TestDelegate test = () => new ProjectNodePresenter(mocks.StrictMock(), null); // Assert - Assert.IsNull(result); + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CommonGuiResources.NodePresenter_CommandHandler_required, message); + StringAssert.EndsWith("commandHandler", message); } [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var result = new ProjectNodePresenter(mocks.StrictMock(), mocks.StrictMock()); + + // Assert + Assert.IsInstanceOf(result); + } + + [Test] [TestCase(true)] [TestCase(false)] - public void GetContextMenu_MenuBuilderProvider_ReturnsFourItems(bool commonItemsEnabled) + public void GetContextMenu_Always_ReturnsFourItems(bool commonItemsEnabled) { // Setup var nodeMock = mocks.StrictMock(); - var nodePresenter = new ProjectNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new ProjectNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled), mocks.StrictMock()); mocks.ReplayAll(); Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs =================================================================== diff -u -reff8c57b5a5243e2c723f117b46bf8b4094ca4c6 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision eff8c57b5a5243e2c723f117b46bf8b4094ca4c6) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/CategoryTreeFolderNodePresenter.cs (.../CategoryTreeFolderNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -5,7 +5,6 @@ using Core.Common.Controls; using Core.Common.Gui; using Ringtoets.Common.Forms.PresentationObjects; - using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.Common.Forms.NodePresenters @@ -15,10 +14,7 @@ /// public class CategoryTreeFolderNodePresenter : RingtoetsNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public CategoryTreeFolderNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, CategoryTreeFolder nodeData) { @@ -34,7 +30,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, CategoryTreeFolder nodeData) { - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddExpandAllItem() .AddCollapseAllItem() Index: Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs =================================================================== diff -u -re388ea76d1d044298cc89156c8744fbea1bcb736 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision e388ea76d1d044298cc89156c8744fbea1bcb736) +++ Ringtoets/Common/src/Ringtoets.Common.Forms/NodePresenters/RingtoetsNodePresenterBase.cs (.../RingtoetsNodePresenterBase.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -5,6 +5,7 @@ using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Utils.Collections; using Ringtoets.Common.Forms.Properties; @@ -18,6 +19,23 @@ /// The data object class corresponding with the node. public abstract class RingtoetsNodePresenterBase : ITreeNodePresenter { + protected readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + + /// + /// Creates a new instance of , which uses the + /// to create and bind its . + /// + /// The + /// to use for building a . + public RingtoetsNodePresenterBase(IContextMenuBuilderProvider contextMenuBuilderProvider) + { + if (contextMenuBuilderProvider == null) + { + throw new ArgumentNullException("contextMenuBuilderProvider", Core.Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required); + } + this.contextMenuBuilderProvider = contextMenuBuilderProvider; + } + public ITreeView TreeView { get; set; } public Type NodeTagType Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs (.../CategoryTreeFolderNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/CategoryTreeFolderNodePresenterTest.cs (.../CategoryTreeFolderNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -24,11 +24,33 @@ [TestFixture] public class CategoryTreeFolderNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() + { + // Call + TestDelegate test = () => new CategoryTreeFolderNodePresenter(null); + + // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] public void DefaultConstructor_ExpectedValues() { // Call - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); // Assert Assert.IsInstanceOf>(nodePresenter); @@ -49,7 +71,7 @@ currentNode.ForegroundColor = Color.AliceBlue; mocks.ReplayAll(); - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); var folder = new CategoryTreeFolder("Cool name", new object[0], category); // Call @@ -66,7 +88,7 @@ public void CanRenamedNode_Always_ReturnFalse() { // Setup - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRenameNode(null); @@ -79,7 +101,7 @@ public void CanRenamedNodeTo_Always_ReturnFalse() { // Setup - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRenameNodeTo(null, ""); @@ -92,7 +114,7 @@ public void CanRemove_Always_ReturnFalse() { // Setup - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRemove(null, null); @@ -114,9 +136,9 @@ new object(), new object() }); - - var nodePresenter = new CategoryTreeFolderNodePresenter(); + var nodePresenter = new CategoryTreeFolderNodePresenter(contextMenuBuilderProviderMock); + // Call IEnumerable children = nodePresenter.GetChildNodeObjects(folder); @@ -135,10 +157,7 @@ var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); - var nodePresenter = new CategoryTreeFolderNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new CategoryTreeFolderNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)); mocks.ReplayAll(); Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs =================================================================== diff -u -re388ea76d1d044298cc89156c8744fbea1bcb736 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs (.../RingtoetsNodePresenterBaseTest.cs) (revision e388ea76d1d044298cc89156c8744fbea1bcb736) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/NodePresenters/RingtoetsNodePresenterBaseTest.cs (.../RingtoetsNodePresenterBaseTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -3,6 +3,8 @@ using System.Linq; using Core.Common.Controls; +using Core.Common.Gui; +using Core.Common.Gui.Properties; using Core.Common.Utils.Collections; using NUnit.Framework; @@ -16,11 +18,33 @@ [TestFixture] public class RingtoetsNodePresenterBaseTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() + { + // Call + TestDelegate test = () => new SimpleRingtoetsNodePresenterBase(null); + + // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(Resources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] public void DefaultConstructor_ExpectedValues() { // Call - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Assert Assert.AreEqual(typeof(double), nodePresenter.NodeTagType); @@ -37,7 +61,7 @@ var nodeData = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNode, pipingNode, nodeData); @@ -55,7 +79,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call var children = nodePresenter.GetChildNodeObjects(dataMock).OfType().ToArray(); @@ -73,7 +97,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNode(nodeMock); @@ -91,7 +115,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNodeTo(nodeMock, ""); @@ -109,7 +133,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call TestDelegate call = () => { nodePresenter.OnNodeRenamed(dataMock, ""); }; @@ -129,7 +153,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeChecked(nodeMock); @@ -146,7 +170,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call DragOperations dragAllowed = nodePresenter.CanDrag(dataMock); @@ -166,7 +190,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call DragOperations dropAllowed = nodePresenter.CanDrop(dataMock, sourceMock, targetMock, DragOperations.Move); @@ -186,7 +210,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call bool insertionAllowed = nodePresenter.CanInsert(dataMock, sourceMock, targetMock); @@ -206,7 +230,7 @@ var targetParentNodeDataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.OnDragDrop(dataMock, sourceParentNodeMock, targetParentNodeDataMock, DragOperations.Move, 2); @@ -223,7 +247,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeSelected(dataMock); @@ -240,7 +264,7 @@ var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); mocks.ReplayAll(); @@ -262,7 +286,7 @@ var eventArgsMock = mocks.StrictMock(""); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); @@ -280,7 +304,7 @@ var eventArgsMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call nodePresenter.OnCollectionChanged(dataMock, eventArgsMock); @@ -297,7 +321,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(null, dataMock); @@ -311,7 +335,7 @@ public void RemoveNodeData_Always_ThrowInvalidOperationException() { // Setup - var nodePresenter = new SimpleRingtoetsNodePresenterBase(); + var nodePresenter = new SimpleRingtoetsNodePresenterBase(contextMenuBuilderProviderMock); // Call TestDelegate call = () => nodePresenter.RemoveNodeData(null, new object()); @@ -324,6 +348,7 @@ private class SimpleRingtoetsNodePresenterBase : RingtoetsNodePresenterBase { protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, T nodeData) {} + public SimpleRingtoetsNodePresenterBase(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs (.../AssessmentSectionBaseNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/AssessmentSectionBaseNodePresenter.cs (.../AssessmentSectionBaseNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,7 +1,6 @@ using System.Collections; using System.Drawing; using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Controls; using Core.Common.Gui; @@ -16,10 +15,7 @@ /// public class AssessmentSectionBaseNodePresenter : RingtoetsNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public AssessmentSectionBaseNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} public override bool CanRenameNode(ITreeNode node) { @@ -72,11 +68,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, AssessmentSectionBase nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddDeleteItem() .AddSeparator() Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs =================================================================== diff -u -reb7f8fe1e85f00faf16a1cddef014728d60a2b19 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision eb7f8fe1e85f00faf16a1cddef014728d60a2b19) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/FailureMechanismNodePresenter.cs (.../FailureMechanismNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -15,13 +15,8 @@ { public class FailureMechanismNodePresenter : RingtoetsNodePresenterBase { - private readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + public FailureMechanismNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) { } - public FailureMechanismNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) - { - this.contextMenuBuilderProvider = contextMenuBuilderProvider; - } - protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, FailureMechanismPlaceholder nodeData) { node.Text = nodeData.Name; Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs =================================================================== diff -u -reb7f8fe1e85f00faf16a1cddef014728d60a2b19 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision eb7f8fe1e85f00faf16a1cddef014728d60a2b19) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/NodePresenters/PlaceholderWithReadonlyNameNodePresenter.cs (.../PlaceholderWithReadonlyNameNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -6,7 +6,6 @@ using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Placeholder; using Ringtoets.Integration.Forms.Properties; - using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.Integration.Forms.NodePresenters @@ -16,29 +15,15 @@ /// public class PlaceholderWithReadonlyNameNodePresenter : RingtoetsNodePresenterBase { - private readonly IContextMenuBuilderProvider contextMenuBuilderProvider; + public PlaceholderWithReadonlyNameNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} - public PlaceholderWithReadonlyNameNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) - { - this.contextMenuBuilderProvider = contextMenuBuilderProvider; - } - protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PlaceholderWithReadonlyName nodeData) { node.Text = nodeData.Name; node.ForegroundColor = Color.FromKnownColor(KnownColor.GrayText); node.Image = GetIconForPlaceholder(nodeData); } - private static Bitmap GetIconForPlaceholder(PlaceholderWithReadonlyName nodeData) - { - if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder) - { - return Resources.GenericInputOutputIcon; - } - return Resources.PlaceholderIcon; - } - protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PlaceholderWithReadonlyName nodeData) { ContextMenuBuilder menuBuilder = contextMenuBuilderProvider.Get(sender); @@ -65,5 +50,14 @@ .AddPropertiesItem() .Build(); } + + private static Bitmap GetIconForPlaceholder(PlaceholderWithReadonlyName nodeData) + { + if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder) + { + return Resources.GenericInputOutputIcon; + } + return Resources.PlaceholderIcon; + } } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs =================================================================== diff -u -rb1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision b1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsGuiPlugin.cs (.../RingtoetsGuiPlugin.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -31,15 +31,10 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { - yield return new AssessmentSectionBaseNodePresenter { - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; + yield return new AssessmentSectionBaseNodePresenter(Gui.ContextMenuProvider); yield return new FailureMechanismNodePresenter(Gui.ContextMenuProvider); yield return new PlaceholderWithReadonlyNameNodePresenter(Gui.ContextMenuProvider); - yield return new CategoryTreeFolderNodePresenter - { - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; + yield return new CategoryTreeFolderNodePresenter(Gui.ContextMenuProvider); } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/AssessmentSectionBaseNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/AssessmentSectionBaseNodePresenterTest.cs (.../AssessmentSectionBaseNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/NodePresenters/AssessmentSectionBaseNodePresenterTest.cs (.../AssessmentSectionBaseNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,11 +1,13 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; using Core.Common.Utils.Collections; @@ -26,13 +28,35 @@ [TestFixture] public class AssessmentSectionBaseNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + TestDelegate test = () => new AssessmentSectionBaseNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf(nodePresenter); Assert.IsNull(nodePresenter.TreeView); Assert.AreEqual(typeof(AssessmentSectionBase), nodePresenter.NodeTagType); @@ -48,7 +72,7 @@ var projectNode = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); var assessmentSection = new DikeAssessmentSection { @@ -70,8 +94,7 @@ // Setup var mocks = new MockRepository(); var assessmentSectionMock = mocks.StrictMock(); - var nodeMock = mocks.StrictMock(); - + var failureMechanismCollection = new[] { mocks.StrictMock(), @@ -83,7 +106,7 @@ assessmentSectionMock.Expect(a => a.GetFailureMechanisms()).Return(failureMechanismCollection); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call var children = nodePresenter.GetChildNodeObjects(assessmentSectionMock).Cast().AsList(); @@ -107,7 +130,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNode(nodeMock); @@ -125,7 +148,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNodeTo(nodeMock, ""); @@ -144,7 +167,7 @@ assessmentSectionObserver.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); var assessmentSection = new DikeAssessmentSection(); assessmentSection.Attach(assessmentSectionObserver); @@ -166,7 +189,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeChecked(nodeMock); @@ -183,7 +206,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dragAllowed = nodePresenter.CanDrag(dataMock); @@ -203,7 +226,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dropAllowed = nodePresenter.CanDrop(dataMock, sourceMock, targetMock, DragOperations.Move); @@ -223,7 +246,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call bool insertionAllowed = nodePresenter.CanInsert(dataMock, sourceMock, targetMock); @@ -243,7 +266,7 @@ var targetParentNodeDataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnDragDrop(dataMock, sourceParentNodeMock, targetParentNodeDataMock, DragOperations.Move, 2); @@ -260,7 +283,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeSelected(dataMock); @@ -270,44 +293,6 @@ } [Test] - public void GetContextMenu_Always_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var assessmentSection = new DikeAssessmentSection(); - mocks.ReplayAll(); - - var nodePresenter = new AssessmentSectionBaseNodePresenter(); - - // Call - var contextMenu = nodePresenter.GetContextMenu(nodeMock, assessmentSection); - - // Assert - Assert.IsNull(contextMenu); - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] - public void OnPropertyChange_Always_DoNothing() - { - // Setup - var mocks = new MockRepository(); - var dataMock = mocks.StrictMock(); - var nodeMock = mocks.StrictMock(); - var eventArgsMock = mocks.StrictMock(""); - mocks.ReplayAll(); - - var nodePresenter = new AssessmentSectionBaseNodePresenter(); - - // Call - nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); - - // Assert - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] public void OnCollectionChange_Always_DoNothing() { // Setup @@ -316,7 +301,7 @@ var eventArgsMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnCollectionChanged(dataMock, eventArgsMock); @@ -334,7 +319,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(nodeMock, dataMock); @@ -361,7 +346,7 @@ project.Items.Add(assessmentSection); project.Attach(observerMock); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); // Call bool removalSuccesful = nodePresenter.RemoveNodeData(project, assessmentSection); @@ -373,36 +358,33 @@ } [Test] - public void GetContextMenu_NoMenuBuilderProvider_ReturnsNull() + public void OnPropertyChange_Always_DoNothing() { // Setup var mocks = new MockRepository(); + var dataMock = mocks.StrictMock(); var nodeMock = mocks.StrictMock(); - var nodePresenter = new AssessmentSectionBaseNodePresenter(); - + var eventArgsMock = mocks.StrictMock(""); mocks.ReplayAll(); + var nodePresenter = new AssessmentSectionBaseNodePresenter(contextMenuBuilderProviderMock); + // Call - var result = nodePresenter.GetContextMenu(nodeMock, new DikeAssessmentSection()); + nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); // Assert - Assert.IsNull(result); - - mocks.ReplayAll(); + mocks.VerifyAll(); // Expect no calls on arguments } [Test] [TestCase(true)] [TestCase(false)] - public void GetContextMenu_MenuBuilderProvider_ReturnsFourItems(bool commonItemsEnabled) + public void GetContextMenu_Always_ReturnsNineItems(bool commonItemsEnabled) { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); - var nodePresenter = new AssessmentSectionBaseNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new AssessmentSectionBaseNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)); mocks.ReplayAll(); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs (.../RingtoetsGuiPluginTest.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/RingtoetsGuiPluginTest.cs (.../RingtoetsGuiPluginTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -57,8 +57,10 @@ var applicationCore = new ApplicationCore(); var guiStub = mocks.DynamicMultiMock(typeof(IGui), typeof(IContextMenuBuilderProvider)); + var contextMenuProviderMock = mocks.DynamicMock(); Expect.Call(guiStub.ApplicationCore).Return(applicationCore).Repeat.Any(); + Expect.Call(guiStub.ContextMenuProvider).Return(contextMenuProviderMock).Repeat.Any(); mocks.ReplayAll(); Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingCalculationReportNodePresenter.cs =================================================================== diff -u -r6b639dc3027f47a35279aa8b4925ca5ed1c71b5f -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingCalculationReportNodePresenter.cs (.../EmptyPipingCalculationReportNodePresenter.cs) (revision 6b639dc3027f47a35279aa8b4925ca5ed1c71b5f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingCalculationReportNodePresenter.cs (.../EmptyPipingCalculationReportNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,11 +1,9 @@ using System.Drawing; - using Core.Common.Controls; - +using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; - using PipingDataResources = Ringtoets.Piping.Data.Properties.Resources; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; @@ -18,6 +16,8 @@ /// public class EmptyPipingCalculationReportNodePresenter : RingtoetsNodePresenterBase { + public EmptyPipingCalculationReportNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, EmptyPipingCalculationReport nodeData) { node.Text = PipingDataResources.CalculationReport_DisplayName; Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingOutputNodePresenter.cs =================================================================== diff -u -r6b639dc3027f47a35279aa8b4925ca5ed1c71b5f -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingOutputNodePresenter.cs (.../EmptyPipingOutputNodePresenter.cs) (revision 6b639dc3027f47a35279aa8b4925ca5ed1c71b5f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/EmptyPipingOutputNodePresenter.cs (.../EmptyPipingOutputNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,7 +1,6 @@ using System.Drawing; - using Core.Common.Controls; - +using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; @@ -14,10 +13,12 @@ /// public class EmptyPipingOutputNodePresenter : RingtoetsNodePresenterBase { + public EmptyPipingOutputNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, EmptyPipingOutput nodeData) { var dummyOutput = new PipingOutput(double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN); - new PipingOutputNodePresenter().UpdateNode(parentNode, node, dummyOutput); + new PipingOutputNodePresenter(contextMenuBuilderProvider).UpdateNode(parentNode, node, dummyOutput); node.ForegroundColor = Color.FromKnownColor(KnownColor.GrayText); } } Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationContextNodePresenter.cs (.../PipingCalculationContextNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -9,11 +9,9 @@ using Core.Common.Gui.ContextMenu; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; -using Ringtoets.Piping.Service; - using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Properties; - +using Ringtoets.Piping.Service; using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources; namespace Ringtoets.Piping.Forms.NodePresenters @@ -24,16 +22,23 @@ /// public class PipingCalculationContextNodePresenter : RingtoetsNodePresenterBase { + public PipingCalculationContextNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + /// /// Injection points for a method to cause an to be scheduled for execution. /// public Action RunActivityAction { private get; set; } - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public override bool CanRenameNode(ITreeNode node) + { + return true; + } + public override bool CanRenameNodeTo(ITreeNode node, string newName) + { + return true; + } + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingCalculationContext pipingCalculationContext) { node.Text = pipingCalculationContext.WrappedData.Name; @@ -62,16 +67,6 @@ } } - public override bool CanRenameNode(ITreeNode node) - { - return true; - } - - public override bool CanRenameNodeTo(ITreeNode node, string newName) - { - return true; - } - protected override bool CanRemove(object parentNodeData, PipingCalculationContext nodeData) { var calculationsFolder = parentNodeData as PipingCalculationsTreeFolder; @@ -102,43 +97,32 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingCalculationContext nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - PipingCalculation calculation = nodeData.WrappedData; var validateItem = new StrictContextMenuItem(Resources.Validate, - null, - Resources.ValidationIcon, - (o, args) => - { - PipingCalculationService.Validate(calculation); - }); + null, + Resources.ValidationIcon, + (o, args) => { PipingCalculationService.Validate(calculation); }); var calculateItem = new StrictContextMenuItem(Resources.Calculate, - null, - Resources.Play, - (o, args) => - { - RunActivityAction(new PipingCalculationActivity(calculation)); - }); + null, + Resources.Play, + (o, args) => { RunActivityAction(new PipingCalculationActivity(calculation)); }); var clearOutputItem = new StrictContextMenuItem(Resources.Clear_output, - null, - RingtoetsFormsResources.ClearIcon, - (o, args) => - { - calculation.ClearOutput(); - calculation.NotifyObservers(); - }); + null, + RingtoetsFormsResources.ClearIcon, + (o, args) => + { + calculation.ClearOutput(); + calculation.NotifyObservers(); + }); if (!calculation.HasOutput) { clearOutputItem.Enabled = false; clearOutputItem.ToolTipText = Resources.ClearOutput_No_output_to_clear; } - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddCustomItem(validateItem) .AddCustomItem(calculateItem) Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingCalculationGroupContextNodePresenter.cs (.../PipingCalculationGroupContextNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -5,15 +5,14 @@ using System.Windows.Forms; using Core.Common.Base.Service; using Core.Common.Controls; - +using Core.Common.Gui; using Ringtoets.Common.Forms.Extensions; using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; using Ringtoets.Piping.Data.Properties; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Service; - using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; @@ -24,6 +23,8 @@ /// public class PipingCalculationGroupContextNodePresenter : RingtoetsNodePresenterBase { + public PipingCalculationGroupContextNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + /// /// Injection points for a method to cause an to be scheduled for execution. /// Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingFailureMechanismNodePresenter.cs (.../PipingFailureMechanismNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -8,15 +8,13 @@ using Core.Common.Controls; using Core.Common.Gui; using Core.Common.Gui.ContextMenu; - using Ringtoets.Common.Forms.Helpers; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Properties; using Ringtoets.Piping.Service; - using PipingDataResources = Ringtoets.Piping.Data.Properties.Resources; using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; @@ -28,10 +26,7 @@ /// public class PipingFailureMechanismNodePresenter : RingtoetsNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public PipingFailureMechanismNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} /// /// Injection points for a method to cause a collection of to be scheduled for execution. @@ -54,11 +49,6 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingFailureMechanism failureMechanism) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - var addCalculationItem = new StrictContextMenuItem( Resources.PipingFailureMechanism_Add_PipingCalculation, Resources.PipingFailureMechanism_Add_PipingCalculation_Tooltip, @@ -93,7 +83,7 @@ clearAllItem.ToolTipText = Resources.ClearOutput_No_calculation_with_output_to_clear; } - return ContextMenuBuilderProvider.Get(sender) + return contextMenuBuilderProvider.Get(sender) .AddCustomItem(addCalculationItem) .AddCustomItem(addCalculationGroupItem) .AddSeparator() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs =================================================================== diff -u -rb1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs (.../PipingInputContextNodePresenter.cs) (revision b1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingInputContextNodePresenter.cs (.../PipingInputContextNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -13,10 +13,7 @@ /// public class PipingInputContextNodePresenter : RingtoetsNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public PipingInputContextNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingInputContext nodeData) { @@ -27,11 +24,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingInputContext nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddImportItem() .AddExportItem() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs =================================================================== diff -u -r8a7fedc540b20939054fb148247f213a7b013916 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision 8a7fedc540b20939054fb148247f213a7b013916) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingOutputNodePresenter.cs (.../PipingOutputNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -16,13 +16,15 @@ /// public class PipingOutputNodePresenter : RingtoetsNodePresenterBase { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public PipingOutputNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingOutput nodeData) { + UpdateNode(node); + } + + protected static void UpdateNode(ITreeNode node) + { node.Text = Resources.PipingOutput_DisplayName; node.Image = Resources.PipingOutputIcon; node.ForegroundColor = Color.FromKnownColor(KnownColor.ControlText); @@ -35,19 +37,14 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, PipingOutput nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - StrictContextMenuItem clearItem = new StrictContextMenuItem( - Resources.Clear_output, + Resources.Clear_output, null, RingtoestFormsResources.ClearIcon, (s, e) => sender.TreeView.TryDeleteSelectedNodeData() - ); + ); - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddCustomItem(clearItem) .AddSeparator() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs =================================================================== diff -u -rf9a6da5a0a62e484e46775cc57ee6f8fe412694f -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs (.../PipingSoilProfileCollectionNodePresenter.cs) (revision f9a6da5a0a62e484e46775cc57ee6f8fe412694f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileCollectionNodePresenter.cs (.../PipingSoilProfileCollectionNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,12 +1,10 @@ -using System; -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using Core.Common.Controls; using Core.Common.Gui; -using Ringtoets.Common.Forms.Extensions; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.Properties; @@ -19,10 +17,7 @@ /// public class PipingSoilProfileCollectionNodePresenter : RingtoetsNodePresenterBase> { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public PipingSoilProfileCollectionNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, IEnumerable pipingSoilProfiles) { @@ -42,11 +37,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, IEnumerable nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddExpandAllItem() .AddCollapseAllItem() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileNodePresenter.cs =================================================================== diff -u -r61161720b379645f400606e868e2a1286c17348d -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileNodePresenter.cs (.../PipingSoilProfileNodePresenter.cs) (revision 61161720b379645f400606e868e2a1286c17348d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSoilProfileNodePresenter.cs (.../PipingSoilProfileNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,7 +1,6 @@ using System.Drawing; - using Core.Common.Controls; - +using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.Properties; @@ -10,6 +9,8 @@ { public class PipingSoilProfileNodePresenter : RingtoetsNodePresenterBase { + public PipingSoilProfileNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, PipingSoilProfile nodeData) { node.Text = nodeData.Name; Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs =================================================================== diff -u -rf9a6da5a0a62e484e46775cc57ee6f8fe412694f -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision f9a6da5a0a62e484e46775cc57ee6f8fe412694f) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -7,7 +7,6 @@ using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; - using Ringtoets.Piping.Forms.Properties; namespace Ringtoets.Piping.Forms.NodePresenters @@ -18,10 +17,7 @@ /// public class PipingSurfaceLineCollectionNodePresenter : RingtoetsNodePresenterBase> { - /// - /// Sets the to be used for creating the . - /// - public IContextMenuBuilderProvider ContextMenuBuilderProvider { private get; set; } + public PipingSurfaceLineCollectionNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, IEnumerable nodeData) { @@ -37,11 +33,7 @@ protected override ContextMenuStrip GetContextMenu(ITreeNode sender, IEnumerable nodeData) { - if (ContextMenuBuilderProvider == null) - { - return null; - } - return ContextMenuBuilderProvider + return contextMenuBuilderProvider .Get(sender) .AddExpandAllItem() .AddCollapseAllItem() Index: Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineNodePresenter.cs =================================================================== diff -u -r61161720b379645f400606e868e2a1286c17348d -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineNodePresenter.cs (.../PipingSurfaceLineNodePresenter.cs) (revision 61161720b379645f400606e868e2a1286c17348d) +++ Ringtoets/Piping/src/Ringtoets.Piping.Forms/NodePresenters/PipingSurfaceLineNodePresenter.cs (.../PipingSurfaceLineNodePresenter.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,10 +1,8 @@ using System.Drawing; - using Core.Common.Controls; - +using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Piping.Data; - using Ringtoets.Piping.Forms.Properties; namespace Ringtoets.Piping.Forms.NodePresenters @@ -14,6 +12,8 @@ /// public class PipingSurfaceLineNodePresenter : RingtoetsNodePresenterBase { + public PipingSurfaceLineNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} + protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, RingtoetsPipingSurfaceLine nodeData) { node.Text = nodeData.Name; Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -rf420d7b93b57dbf114732b7b419062350371a8cd -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision f420d7b93b57dbf114732b7b419062350371a8cd) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -33,37 +33,23 @@ public override IEnumerable GetProjectTreeViewNodePresenters() { - yield return new PipingCalculationContextNodePresenter + yield return new PipingCalculationContextNodePresenter(Gui.ContextMenuProvider) { - RunActivityAction = ActivityProgressDialogRunner.Run, - ContextMenuBuilderProvider = Gui.ContextMenuProvider + RunActivityAction = ActivityProgressDialogRunner.Run }; - yield return new PipingCalculationGroupContextNodePresenter(); - yield return new PipingInputContextNodePresenter + yield return new PipingCalculationGroupContextNodePresenter(Gui.ContextMenuProvider); + yield return new PipingInputContextNodePresenter(Gui.ContextMenuProvider); + yield return new PipingFailureMechanismNodePresenter(Gui.ContextMenuProvider) { - ContextMenuBuilderProvider = Gui.ContextMenuProvider + RunActivitiesAction = ActivityProgressDialogRunner.Run }; - yield return new PipingFailureMechanismNodePresenter - { - RunActivitiesAction = ActivityProgressDialogRunner.Run, - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; - yield return new PipingSurfaceLineCollectionNodePresenter - { - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; - yield return new PipingSurfaceLineNodePresenter(); - yield return new PipingSoilProfileCollectionNodePresenter - { - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; - yield return new PipingSoilProfileNodePresenter(); - yield return new PipingOutputNodePresenter - { - ContextMenuBuilderProvider = Gui.ContextMenuProvider - }; - yield return new EmptyPipingOutputNodePresenter(); - yield return new EmptyPipingCalculationReportNodePresenter(); + yield return new PipingSurfaceLineCollectionNodePresenter(Gui.ContextMenuProvider); + yield return new PipingSurfaceLineNodePresenter(Gui.ContextMenuProvider); + yield return new PipingSoilProfileCollectionNodePresenter(Gui.ContextMenuProvider); + yield return new PipingSoilProfileNodePresenter(Gui.ContextMenuProvider); + yield return new PipingOutputNodePresenter(Gui.ContextMenuProvider); + yield return new EmptyPipingOutputNodePresenter(Gui.ContextMenuProvider); + yield return new EmptyPipingCalculationReportNodePresenter(Gui.ContextMenuProvider); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingCalculationReportNodePresenterTest.cs =================================================================== diff -u -rca5e60f150095bbe4b6919062dc98a5d2b71c77e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingCalculationReportNodePresenterTest.cs (.../EmptyPipingCalculationReportNodePresenterTest.cs) (revision ca5e60f150095bbe4b6919062dc98a5d2b71c77e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingCalculationReportNodePresenterTest.cs (.../EmptyPipingCalculationReportNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,6 +1,9 @@ -using System.Drawing; +using System; +using System.Drawing; using Core.Common.Controls; +using Core.Common.Gui; +using Core.Common.Gui.Properties; using Core.Common.TestUtils; using NUnit.Framework; @@ -18,13 +21,36 @@ [TestFixture] public class EmptyPipingCalculationReportNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new EmptyPipingCalculationReportNodePresenter(); + TestDelegate test = () => new EmptyPipingCalculationReportNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(Resources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new EmptyPipingCalculationReportNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf>(nodePresenter); Assert.AreEqual(typeof(EmptyPipingCalculationReport), nodePresenter.NodeTagType); Assert.IsNull(nodePresenter.TreeView); @@ -39,7 +65,7 @@ var reportNode = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingCalculationReportNodePresenter(); + var nodePresenter = new EmptyPipingCalculationReportNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNode, reportNode, new EmptyPipingCalculationReport()); @@ -59,7 +85,7 @@ var reportNode = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingCalculationReportNodePresenter(); + var nodePresenter = new EmptyPipingCalculationReportNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRenameNode(reportNode); @@ -77,7 +103,7 @@ var reportNode = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingCalculationReportNodePresenter(); + var nodePresenter = new EmptyPipingCalculationReportNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRenameNode(reportNode); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingOutputNodePresenterTest.cs =================================================================== diff -u -rca5e60f150095bbe4b6919062dc98a5d2b71c77e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingOutputNodePresenterTest.cs (.../EmptyPipingOutputNodePresenterTest.cs) (revision ca5e60f150095bbe4b6919062dc98a5d2b71c77e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/EmptyPipingOutputNodePresenterTest.cs (.../EmptyPipingOutputNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,6 +1,8 @@ -using System.Drawing; +using System; +using System.Drawing; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -12,18 +14,42 @@ using Ringtoets.Piping.Forms.NodePresenters; using Ringtoets.Piping.Forms.PresentationObjects; +using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; + namespace Ringtoets.Piping.Forms.Test.NodePresenters { [TestFixture] public class EmptyPipingOutputNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new EmptyPipingOutputNodePresenter(); + TestDelegate test = () => new EmptyPipingOutputNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(Core.Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new EmptyPipingOutputNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf>(nodePresenter); Assert.AreEqual(typeof(EmptyPipingOutput), nodePresenter.NodeTagType); Assert.IsNull(nodePresenter.TreeView); @@ -39,13 +65,13 @@ var expectedOutputTreeNode = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingOutputNodePresenter(); + var nodePresenter = new EmptyPipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentTreeNode, outputTreeNode, new EmptyPipingOutput()); // Assert - new PipingOutputNodePresenter().UpdateNode(parentTreeNode, expectedOutputTreeNode, new TestPipingOutput()); + new PipingOutputNodePresenter(contextMenuBuilderProviderMock).UpdateNode(parentTreeNode, expectedOutputTreeNode, new TestPipingOutput()); Assert.AreEqual(expectedOutputTreeNode.Text, outputTreeNode.Text); Assert.AreEqual(Color.FromKnownColor(KnownColor.GrayText), outputTreeNode.ForegroundColor); TestHelper.AssertImagesAreEqual(expectedOutputTreeNode.Image, outputTreeNode.Image); @@ -59,11 +85,12 @@ // Setup var mocks = new MockRepository(); var outputTreeNode = mocks.StrictMock(); + var contextMenuBuilderProviderMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingOutputNodePresenter(); + var nodePresenter = new EmptyPipingOutputNodePresenter(contextMenuBuilderProviderMock); - var referenceNodePresenter = new PipingOutputNodePresenter(); + var referenceNodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call var isRenamingAllowed = nodePresenter.CanRenameNode(outputTreeNode); @@ -83,7 +110,7 @@ var parentDataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new EmptyPipingOutputNodePresenter(); + var nodePresenter = new EmptyPipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call var isRemovalAllowed = nodePresenter.CanRemove(parentDataMock, new EmptyPipingOutput()); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationContextNodePresenterTest.cs (.../PipingCalculationContextNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.ComponentModel; using System.Linq; @@ -8,6 +7,7 @@ using Core.Common.TestUtils; using System.Windows.Forms; using Core.Common.Base; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using NUnit.Framework; using Rhino.Mocks; @@ -27,6 +27,7 @@ public class PipingCalculationContextNodePresenterTest { private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; private const int contextMenuValidateIndex = 0; private const int contextMenuCalculateIndex = 1; @@ -42,21 +43,32 @@ public void SetUp() { mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); } [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingCalculationContextNodePresenter(); + TestDelegate test = () => new PipingCalculationContextNodePresenter(null); // Assert - Assert.IsInstanceOf(nodePresenter); - Assert.IsNull(nodePresenter.TreeView); - Assert.AreEqual(typeof(PipingCalculationContext), nodePresenter.NodeTagType); + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); } [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var result = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); + + // Assert + Assert.IsInstanceOf(result); + } + + [Test] public void UpdateNode_WithData_InitializeNode() { // Setup @@ -65,7 +77,7 @@ var pipingNode = mockRepository.Stub(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); var calculation = new PipingCalculation { @@ -87,10 +99,9 @@ public void GetChildNodeObjects_WithOutputData_ReturnOutputChildNode() { // Setup - var nodeMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); var calculation = new PipingCalculation { @@ -125,10 +136,9 @@ public void GetChildNodeObjects_WithoutOutput_ReturnNoChildNodes() { // Setup - var nodeMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); var pipingCalculationContext = new PipingCalculationContext(new PipingCalculation(), Enumerable.Empty(), @@ -161,7 +171,7 @@ var nodeMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNode(nodeMock); @@ -178,7 +188,7 @@ var nodeMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNodeTo(nodeMock, ""); @@ -205,7 +215,7 @@ Enumerable.Empty()); pipingCalculationsInputs.Attach(observerMock); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call const string newName = ""; @@ -223,7 +233,7 @@ var nodeMock = mockRepository.StrictMock(); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeChecked(nodeMock); @@ -240,7 +250,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dragAllowed = nodePresenter.CanDrag(nodeData); @@ -260,7 +270,7 @@ Enumerable.Empty()); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dropAllowed = nodePresenter.CanDrop(dataMock, sourceMock, targetMock, DragOperations.Move); @@ -283,7 +293,7 @@ - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call bool insertionAllowed = nodePresenter.CanInsert(dataMock, sourceMock, targetMock); @@ -306,7 +316,7 @@ - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnDragDrop(dataMock, sourceParentNodeMock, targetParentNodeDataMock, DragOperations.Move, 2); @@ -324,7 +334,7 @@ Enumerable.Empty()); mockRepository.ReplayAll(); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeSelected(dataMock); @@ -345,10 +355,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, commonItemsEnabled)); mockRepository.ReplayAll(); @@ -378,44 +385,16 @@ } [Test] - public void GetContextMenu_NoProviderPipingCalculationWithOutput_ReturnsNull() + public void GetContextMenu_PipingCalculationWithoutOutput_ContextMenuItemClearOutputDisabled() { // Setup var nodeMock = mockRepository.StrictMock(); - var nodePresenter = new PipingCalculationContextNodePresenter(); - var calculation = new PipingCalculation - { - Output = new TestPipingOutput() - }; - var nodeData = new PipingCalculationContext(calculation, - Enumerable.Empty(), - Enumerable.Empty()); - mockRepository.ReplayAll(); - - // Call - ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, nodeData); - - // Assert - Assert.IsNull(contextMenu); - - mockRepository.VerifyAll(); - } - - [Test] - public void GetContextMenu_WithProviderPipingCalculationWithoutOutput_ContextMenuItemClearOutputDisabled() - { - // Setup - var nodeMock = mockRepository.StrictMock(); - var nodeData = new PipingCalculationContext(new PipingCalculation(), Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true)); mockRepository.ReplayAll(); @@ -433,7 +412,7 @@ } [Test] - public void GetContextMenu_WithProviderPipingCalculationWithOutput_ContextMenuItemClearOutputEnabled() + public void GetContextMenu_PipingCalculationWithOutput_ContextMenuItemClearOutputEnabled() { // Setup var nodeMock = mockRepository.StrictMock(); @@ -446,10 +425,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, nodeMock, true)); mockRepository.ReplayAll(); @@ -478,7 +454,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); @@ -498,7 +474,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnCollectionChanged(dataMock, eventArgsMock); @@ -514,7 +490,7 @@ var pipingFailureMechanism = new PipingFailureMechanism(); var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(pipingCalculationsFolder, pipingCalculationsFolder.Contents.OfType().First()); @@ -530,7 +506,7 @@ var pipingFailureMechanism = new PipingFailureMechanism(); var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); var calculationContext = new PipingCalculationContext(new PipingCalculation(), Enumerable.Empty(), @@ -554,7 +530,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(dataMock, nodeMock); @@ -582,7 +558,7 @@ var pipingCalculationsFolder = new PipingCalculationsTreeFolder("Berekeningen", pipingFailureMechanism); - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Precondition var treeElementToRemove = pipingCalculationsFolder.Contents.OfType().ElementAt(1); @@ -604,7 +580,7 @@ public void RemoveNodeData_Always_ThrowsInvalidOperationException() { // Setup - var nodePresenter = new PipingCalculationContextNodePresenter(); + var nodePresenter = new PipingCalculationContextNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate removeAction = () => nodePresenter.RemoveNodeData(null, null); @@ -629,14 +605,13 @@ ITreeNode treeNodeMock = mockRepository.StrictMock(); - var nodePresenter = new PipingCalculationContextNodePresenter + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)) { RunActivityAction = activity => { activity.Run(); activity.Finish(); - }, - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true) + } }; mockRepository.ReplayAll(); @@ -686,10 +661,7 @@ ITreeNode treeNodeMock = mockRepository.StrictMock(); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)); mockRepository.ReplayAll(); @@ -742,10 +714,7 @@ ITreeNode treeNodeMock = mockRepository.StrictMock(); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)); mockRepository.ReplayAll(); @@ -795,10 +764,7 @@ ITreeNode treeNodeMock = mockRepository.StrictMock(); - var nodePresenter = new PipingCalculationContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true) - }; + var nodePresenter = new PipingCalculationContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, treeNodeMock, true)); mockRepository.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingCalculationGroupContextNodePresenterTest.cs (.../PipingCalculationGroupContextNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -7,6 +7,7 @@ using Core.Common.Base; using Core.Common.Base.Service; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -23,25 +24,48 @@ using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; +using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; namespace Ringtoets.Piping.Forms.Test.NodePresenters { [TestFixture] public class PipingCalculationGroupContextNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + private const int contextMenuAddCalculationGroupIndex = 0; private const int contextMenuAddCalculationIndex = 1; private const int contextMenuValidateAllIndex = 2; private const int contextMenuCalculateAllIndex = 3; private const int contextMenuClearOutputIndex = 4; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { + // Call + TestDelegate test = () => new PipingCalculationContextNodePresenter(null); + + // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { // Setup // Call - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Assert Assert.IsInstanceOf>(nodePresenter); @@ -64,7 +88,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNode, node, nodeData); @@ -84,7 +108,7 @@ var node = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call bool isRenamingAllowed = nodePresenter.CanRenameNode(node); @@ -102,7 +126,7 @@ var node = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call bool isRenamingAllowed = nodePresenter.CanRenameNodeTo(node, "newName"); @@ -127,7 +151,7 @@ Enumerable.Empty()); nodeData.Attach(observer); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call const string newName = "new name"; @@ -150,7 +174,7 @@ var parentNodeData = new PipingFailureMechanism(); parentNodeData.Calculations.Add(group); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call bool isRemovalAllowed = nodePresenter.CanRemove(parentNodeData, nodeData); @@ -169,7 +193,7 @@ var parentNodeData = new PipingFailureMechanism(); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Precondition CollectionAssert.DoesNotContain(parentNodeData.Calculations, nodeData); @@ -195,10 +219,10 @@ var parentNodeData = new PipingCalculationGroupContext(parentGroup, Enumerable.Empty(), Enumerable.Empty()); - - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); + // Call bool isRemovalAllowed = nodePresenter.CanRemove(parentNodeData, nodeData); @@ -220,7 +244,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Precondition CollectionAssert.DoesNotContain(parentGroup.Children, group); @@ -250,7 +274,7 @@ parentNodeData.Calculations.Add(group); parentNodeData.Attach(observer); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Precondition Assert.IsTrue(nodePresenter.CanRemove(parentNodeData, nodeData)); @@ -285,7 +309,7 @@ Enumerable.Empty()); parentNodeData.Attach(observer); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Precondition Assert.IsTrue(nodePresenter.CanRemove(parentNodeData, nodeData)); @@ -312,7 +336,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(node, nodeData); @@ -379,7 +403,7 @@ Enumerable.Empty()); nodeData.Attach(observer); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); var contextMenu = nodePresenter.GetContextMenu(node, nodeData); @@ -418,7 +442,7 @@ Enumerable.Empty()); nodeData.Attach(observer); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); var contextMenu = nodePresenter.GetContextMenu(node, nodeData); @@ -462,7 +486,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); var contextMenu = nodePresenter.GetContextMenu(node, nodeData); @@ -512,7 +536,7 @@ var activitesToRun = new List(); - var nodePresenter = new PipingCalculationGroupContextNodePresenter + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock) { RunActivityAction = activity => activitesToRun.Add(activity) }; @@ -571,7 +595,7 @@ // Precondition Assert.IsTrue(group.HasOutput); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); var contextMenu = nodePresenter.GetContextMenu(node, nodeData); @@ -594,7 +618,7 @@ Enumerable.Empty(), Enumerable.Empty()); - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); // Call var children = nodePresenter.GetChildNodeObjects(groupContext); @@ -622,10 +646,10 @@ var nodeData = new PipingCalculationGroupContext(group, Enumerable.Empty(), Enumerable.Empty()); - - var nodePresenter = new PipingCalculationGroupContextNodePresenter(); + var nodePresenter = new PipingCalculationGroupContextNodePresenter(contextMenuBuilderProviderMock); + // Call var children = nodePresenter.GetChildNodeObjects(nodeData).OfType().ToArray(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingFailureMechanismNodePresenterTest.cs (.../PipingFailureMechanismNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -22,22 +22,43 @@ using RingtoetsFormsResources = Ringtoets.Common.Forms.Properties.Resources; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; -using CommonGuiResources = Core.Common.Gui.Properties.Resources; +using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; namespace Ringtoets.Piping.Forms.Test.NodePresenters { public class PipingFailureMechanismNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; private const int contextMenuAddCalculationIndex = 0; private const int contextMenuAddFolderIndex = 1; private const int contextMenuClearIndex = 4; + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() + { + // Call + TestDelegate test = () => new PipingFailureMechanismNodePresenter(null); + + // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] public void DefaultConstructor_ExpectedValues() { // Call - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Assert Assert.IsInstanceOf(nodePresenter); @@ -54,7 +75,7 @@ pipingNode.ForegroundColor = Color.AliceBlue; mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); var failureMechanism = new PipingFailureMechanism(); @@ -74,7 +95,7 @@ var mocks = new MockRepository(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); var pipingFailureMechanism = new PipingFailureMechanism(); pipingFailureMechanism.Calculations.Add(new PipingCalculation()); @@ -127,7 +148,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call bool renameAllowed = nodePresenter.CanRenameNode(nodeMock); @@ -145,7 +166,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call bool renameAllowed = nodePresenter.CanRenameNodeTo(nodeMock, ""); @@ -163,7 +184,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate call = () => { nodePresenter.OnNodeRenamed(nodeMock, ""); }; @@ -183,7 +204,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeChecked(nodeMock); @@ -200,7 +221,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dragAllowed = nodePresenter.CanDrag(dataMock); @@ -220,7 +241,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dropAllowed = nodePresenter.CanDrop(dataMock, sourceMock, targetMock, DragOperations.Move); @@ -240,7 +261,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call bool insertionAllowed = nodePresenter.CanInsert(dataMock, sourceMock, targetMock); @@ -260,7 +281,7 @@ var targetParentNodeDataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnDragDrop(dataMock, sourceParentNodeMock, targetParentNodeDataMock, DragOperations.Move, 2); @@ -277,7 +298,7 @@ var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeSelected(dataMock); @@ -296,7 +317,7 @@ var eventArgsMock = mocks.StrictMock(""); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); @@ -314,7 +335,7 @@ var eventArgsMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnCollectionChanged(dataMock, eventArgsMock); @@ -332,7 +353,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(parentNodeDataMock, nodeMock); @@ -346,7 +367,7 @@ public void RemoveNodeData_PipingFailureMechanism_PipingFailureMechanismRemovedFromAssessmentSection() { // Setup - var nodePresenter = new PipingFailureMechanismNodePresenter(); + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate call = () => nodePresenter.RemoveNodeData(new object(), new PipingFailureMechanism()); @@ -379,10 +400,7 @@ dataMock.Calculations.ElementAt(0).Attach(observer); dataMock.Calculations.ElementAt(1).Attach(observer); - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = contextMenuProvider - }; + var nodePresenter = new PipingFailureMechanismNodePresenter(contextMenuProvider); mocks.ReplayAll(); @@ -398,71 +416,16 @@ } [Test] - public void GetContextMenu_NullGui_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - - var nodePresenter = new PipingFailureMechanismNodePresenter(); - var failureMechanism = mocks.StrictMock(); - - mocks.ReplayAll(); - - // Call - ContextMenuStrip menu = nodePresenter.GetContextMenu(nodeMock, failureMechanism); - - // Assert - Assert.IsNull(menu); - } - - [Test] - public void GetContextMenu_NoGuiCommandHandler_ReturnsNineItems() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - nodeMock.Expect(n => n.Nodes).Return(new ITreeNode[0]).Repeat.Any(); - var contextMenuProvider = mocks.StrictMock(); - contextMenuProvider.Expect(cmp => cmp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(null, nodeMock)); - - var nodePresenter = new PipingFailureMechanismNodePresenter { - ContextMenuBuilderProvider = contextMenuProvider - }; - var failureMechanism = mocks.StrictMock(); - - mocks.ReplayAll(); - - // Call - ContextMenuStrip menu = nodePresenter.GetContextMenu(nodeMock, failureMechanism); - - // Assert - Assert.AreEqual(9, menu.Items.Count); - - TestHelper.AssertContextMenuStripContainsItem(menu, 0, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculation, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculation_Tooltip, PipingFormsResources.PipingIcon); - TestHelper.AssertContextMenuStripContainsItem(menu, 1, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculationGroup, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculationGroup_Tooltip, PipingFormsResources.AddFolderIcon); - TestHelper.AssertContextMenuStripContainsItem(menu, 3, RingtoetsFormsResources.Calculate_all, PipingFormsResources.PipingFailureMechanism_Calculate_Tooltip, RingtoetsFormsResources.CalculateAllIcon); - TestHelper.AssertContextMenuStripContainsItem(menu, 6, CommonGuiResources.Expand_all, CommonGuiResources.Expand_all_ToolTip, CommonGuiResources.ExpandAllIcon, false); - TestHelper.AssertContextMenuStripContainsItem(menu, 7, CommonGuiResources.Collapse_all, CommonGuiResources.Collapse_all_ToolTip, CommonGuiResources.CollapseAllIcon, false); - - CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[2], menu.Items[5], menu.Items[8] }, typeof(ToolStripSeparator)); - - mocks.VerifyAll(); - } - - [Test] [TestCase(true)] [TestCase(false)] - public void GetContextMenu_WithGui_ReturnsContextMenuWithCommonItems(bool commonItemsEnabled) + public void GetContextMenu_Always_ReturnsContextMenuWithCommonItems(bool commonItemsEnabled) { // Setup var mocks = new MockRepository(); var nodeMock = mocks.Stub(); - - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + + var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)); + var failureMechanism = mocks.StrictMock(); nodeMock.Tag = failureMechanism; @@ -477,10 +440,10 @@ TestHelper.AssertContextMenuStripContainsItem(menu, 0, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculation, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculation_Tooltip, PipingFormsResources.PipingIcon); TestHelper.AssertContextMenuStripContainsItem(menu, 1, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculationGroup, PipingFormsResources.PipingFailureMechanism_Add_PipingCalculationGroup_Tooltip, PipingFormsResources.AddFolderIcon); TestHelper.AssertContextMenuStripContainsItem(menu, 3, RingtoetsFormsResources.Calculate_all, PipingFormsResources.PipingFailureMechanism_Calculate_Tooltip, RingtoetsFormsResources.CalculateAllIcon); - TestHelper.AssertContextMenuStripContainsItem(menu, 6, CommonGuiResources.Expand_all, CommonGuiResources.Expand_all_ToolTip, CommonGuiResources.ExpandAllIcon, commonItemsEnabled); - TestHelper.AssertContextMenuStripContainsItem(menu, 7, CommonGuiResources.Collapse_all, CommonGuiResources.Collapse_all_ToolTip, CommonGuiResources.CollapseAllIcon, commonItemsEnabled); - TestHelper.AssertContextMenuStripContainsItem(menu, 9, CommonGuiResources.Import, CommonGuiResources.Import_ToolTip, CommonGuiResources.ImportIcon, commonItemsEnabled); - TestHelper.AssertContextMenuStripContainsItem(menu, 10, CommonGuiResources.Export, CommonGuiResources.Export_ToolTip, CommonGuiResources.ExportIcon, commonItemsEnabled); + TestHelper.AssertContextMenuStripContainsItem(menu, 6, CoreCommonGuiResources.Expand_all, CoreCommonGuiResources.Expand_all_ToolTip, CoreCommonGuiResources.ExpandAllIcon, commonItemsEnabled); + TestHelper.AssertContextMenuStripContainsItem(menu, 7, CoreCommonGuiResources.Collapse_all, CoreCommonGuiResources.Collapse_all_ToolTip, CoreCommonGuiResources.CollapseAllIcon, commonItemsEnabled); + TestHelper.AssertContextMenuStripContainsItem(menu, 9, CoreCommonGuiResources.Import, CoreCommonGuiResources.Import_ToolTip, CoreCommonGuiResources.ImportIcon, commonItemsEnabled); + TestHelper.AssertContextMenuStripContainsItem(menu, 10, CoreCommonGuiResources.Export, CoreCommonGuiResources.Export_ToolTip, CoreCommonGuiResources.ExportIcon, commonItemsEnabled); CollectionAssert.AllItemsAreInstancesOfType(new[] { menu.Items[2], menu.Items[5], menu.Items[8] }, typeof(ToolStripSeparator)); @@ -494,22 +457,16 @@ var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock(); - var contextMenuProvider = mocks.StrictMock(); - nodeMock.Expect(n => n.Nodes).Return(new ITreeNode[0]).Repeat.Any(); - contextMenuProvider.Expect(cmp => cmp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(null, nodeMock)); - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = contextMenuProvider - }; - + var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); + mocks.ReplayAll(); // Call ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); // Assert - Assert.AreEqual(9, contextMenu.Items.Count); + Assert.AreEqual(11, contextMenu.Items.Count); ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex]; Assert.IsFalse(clearOutputItem.Enabled); @@ -525,27 +482,21 @@ var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock(); - var contextMenuProvider = mocks.StrictMock(); - nodeMock.Expect(n => n.Nodes).Return(new ITreeNode[0]).Repeat.Any(); - contextMenuProvider.Expect(cmp => cmp.Get(null)).IgnoreArguments().Return(new ContextMenuBuilder(null, nodeMock)); dataMock.Calculations.Add(new PipingCalculation { Output = new TestPipingOutput() }); - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = contextMenuProvider - }; + var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); mocks.ReplayAll(); // Call ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); // Assert - Assert.AreEqual(9, contextMenu.Items.Count); + Assert.AreEqual(11, contextMenu.Items.Count); ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex]; Assert.IsTrue(clearOutputItem.Enabled); @@ -566,11 +517,9 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.Attach(observerMock); - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, true) - }; + var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); + mocks.ReplayAll(); // Precondition Assert.AreEqual(1, failureMechanism.Calculations.Count); @@ -602,11 +551,9 @@ failureMechanism.Attach(observerMock); failureMechanism.Calculations.Clear(); failureMechanism.Calculations.Add(new PipingCalculationGroup()); - var nodePresenter = new PipingFailureMechanismNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, true) - }; + var nodePresenter = new PipingFailureMechanismNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); + mocks.ReplayAll(); // Precondition Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingInputContextNodePresenterTest.cs =================================================================== diff -u -rb1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingInputContextNodePresenterTest.cs (.../PipingInputContextNodePresenterTest.cs) (revision b1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingInputContextNodePresenterTest.cs (.../PipingInputContextNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,6 +1,8 @@ -using System.Drawing; +using System; +using System.Drawing; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; @@ -20,13 +22,35 @@ [TestFixture] public class PipingInputContextNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingInputContextNodePresenter(); + TestDelegate test = () => new PipingInputContextNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_ExpectedValues() + { + // Call + var nodePresenter = new PipingInputContextNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf>(nodePresenter); Assert.AreEqual(typeof(PipingInputContext), nodePresenter.NodeTagType); Assert.IsNull(nodePresenter.TreeView); @@ -44,7 +68,7 @@ var nodeData = new PipingInputContext(); - var nodePresenter = new PipingInputContextNodePresenter(); + var nodePresenter = new PipingInputContextNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNode, currentNode, nodeData); @@ -64,7 +88,7 @@ var currentNode = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingInputContextNodePresenter(); + var nodePresenter = new PipingInputContextNodePresenter(contextMenuBuilderProviderMock); // Call var isRenameAllowed = nodePresenter.CanRenameNode(currentNode); @@ -82,7 +106,7 @@ var currentNode = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingInputContextNodePresenter(); + var nodePresenter = new PipingInputContextNodePresenter(contextMenuBuilderProviderMock); // Call var isRenameAllowed = nodePresenter.CanRenameNodeTo(currentNode, "new name"); @@ -102,7 +126,7 @@ var nodeData = new PipingInputContext(); - var nodePresenter = new PipingInputContextNodePresenter(); + var nodePresenter = new PipingInputContextNodePresenter(contextMenuBuilderProviderMock); // Call var isRemoveAllowed = nodePresenter.CanRemove(currentNode, nodeData); @@ -113,36 +137,13 @@ } [Test] - public void GetContextMenu_NoMenuBuilderProvider_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var nodePresenter = new PipingInputContextNodePresenter(); - - mocks.ReplayAll(); - - // Call - var result = nodePresenter.GetContextMenu(nodeMock, new PipingInputContext()); - - // Assert - Assert.IsNull(result); - - mocks.ReplayAll(); - } - - [Test] public void GetContextMenu_MenuBuilderProvider_ReturnsFourItems() { // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var nodePresenter = new PipingInputContextNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock) - }; + var nodeMock = mockRepository.StrictMock(); + var nodePresenter = new PipingInputContextNodePresenter(TestContextMenuBuilderProvider.Create(mockRepository, nodeMock)); - mocks.ReplayAll(); + mockRepository.ReplayAll(); // Call var result = nodePresenter.GetContextMenu(nodeMock, new PipingInputContext()); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs =================================================================== diff -u -rb1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision b1eb3cb37aaee9ebe020e4a2ca5e9730abfa748a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingOutputNodePresenterTest.cs (.../PipingOutputNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -3,6 +3,7 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; @@ -23,13 +24,35 @@ [TestFixture] public class PipingOutputNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingOutputNodePresenter(); + TestDelegate test = () => new PipingOutputNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new PipingOutputNodePresenter(mockRepository.StrictMock()); + + // Assert Assert.IsInstanceOf(nodePresenter); Assert.IsNull(nodePresenter.TreeView); Assert.AreEqual(typeof(PipingOutput), nodePresenter.NodeTagType); @@ -46,7 +69,7 @@ pipingNode.ForegroundColor = Color.AliceBlue; mocks.ReplayAll(); - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); var project = PipingOutputCreator.Create(); @@ -60,32 +83,14 @@ } [Test] - public void GetContextMenu_PipingOutput_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodePresenter = new PipingOutputNodePresenter(); - - // Call - ContextMenuStrip contextMenu = nodePresenter.GetContextMenu(nodeMock, new TestPipingOutput()); - - // Assert - Assert.IsNull(contextMenu); - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] public void CanRemove_NotPipingOutput_ThrowsInvalidCastException() { // Setup var mocks = new MockRepository(); var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate test = () => nodePresenter.CanRemove(null, dataMock); @@ -102,7 +107,7 @@ var mocks = new MockRepository(); mocks.ReplayAll(); - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call var result = nodePresenter.CanRemove(null, new TestPipingOutput()); @@ -116,7 +121,7 @@ public void RemoveNodeData_NullObject_ThrowsNullReferenceException() { // Setup - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate removeAction = () => nodePresenter.RemoveNodeData(null, null); @@ -129,7 +134,7 @@ public void RemoveNodeData_Object_ThrowsInvalidCastException() { // Setup - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate removeAction = () => nodePresenter.RemoveNodeData(null, new object()); @@ -142,7 +147,7 @@ public void RemoveNodeData_NullParent_ThrowsNullReferenceException() { // Setup - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate removeAction = () => nodePresenter.RemoveNodeData(null, new TestPipingOutput()); @@ -155,7 +160,7 @@ public void RemoveNodeData_WithParentContainingOutput_OutputCleared() { // Setup - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(contextMenuBuilderProviderMock); var calculation = new PipingCalculation { @@ -174,41 +179,19 @@ } [Test] - public void GetContextMenu_NoMenuBuilderProvider_ReturnsNull() + public void GetContextMenu_Always_ReturnsFiveItems() { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); - var nodePresenter = new PipingOutputNodePresenter(); + var nodePresenter = new PipingOutputNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, true)); mocks.ReplayAll(); // Call var result = nodePresenter.GetContextMenu(nodeMock, new TestPipingOutput()); // Assert - Assert.IsNull(result); - - mocks.ReplayAll(); - } - - [Test] - public void GetContextMenu_MenuBuilderProvider_ReturnsFourItems() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var nodePresenter = new PipingOutputNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, true) - }; - - mocks.ReplayAll(); - - // Call - var result = nodePresenter.GetContextMenu(nodeMock, new TestPipingOutput()); - - // Assert Assert.AreEqual(5, result.Items.Count); Assert.AreEqual(Properties.Resources.Clear_output, result.Items[0].Text); @@ -233,10 +216,7 @@ treeMock.Expect(t => t.TryDeleteSelectedNodeData()); nodeMock.Expect(n => n.TreeView).Return(treeMock); - var nodePresenter = new PipingOutputNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock) - }; + var nodePresenter = new PipingOutputNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock)); mocks.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs (.../PipingSoilProfileCollectionNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileCollectionNodePresenterTest.cs (.../PipingSoilProfileCollectionNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,7 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; @@ -19,13 +21,35 @@ [TestFixture] public class PipingSoilProfileCollectionNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); + TestDelegate test = () => new PipingSoilProfileCollectionNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new PipingSoilProfileCollectionNodePresenter(mockRepository.StrictMock()); + + // Assert Assert.IsInstanceOf(nodePresenter); Assert.IsNull(nodePresenter.TreeView); Assert.AreEqual(typeof(IEnumerable), nodePresenter.NodeTagType); @@ -39,7 +63,7 @@ var soilProfileCollectionNodeStub = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); + var nodePresenter = new PipingSoilProfileCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable soilProfilesCollection = new PipingSoilProfile[0]; @@ -60,7 +84,7 @@ var soilProfileCollectionNodeStub = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); + var nodePresenter = new PipingSoilProfileCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable soilProfilesCollection = new [] { @@ -83,7 +107,7 @@ var mocks = new MockRepository(); mocks.ReplayAll(); - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); + var nodePresenter = new PipingSoilProfileCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable soilProfilesCollection = new [] { @@ -100,58 +124,16 @@ } [Test] - public void GetContextMenu_DefaultScenario_ReturnNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock>(); - mocks.ReplayAll(); - - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); - - // Call - var contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); - - // Assert - Assert.IsNull(contextMenu); - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] - public void GetContextMenu_NoContextMenuBuilderProviderSet_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock>(); - mocks.ReplayAll(); - - var nodePresenter = new PipingSoilProfileCollectionNodePresenter(); - - // Call - var returnedContextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); - - // Assert - Assert.IsNull(returnedContextMenu); - - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] [TestCase(true)] [TestCase(false)] - public void GetContextMenu_ContextMenuBuilderProviderSet_HaveImportSurfaceLinesItemInContextMenu(bool commonItemsEnabled) + public void GetContextMenu_Always_ContextMenuWithFiveItems(bool commonItemsEnabled) { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock>(); - var nodePresenter = new PipingSoilProfileCollectionNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new PipingSoilProfileCollectionNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)); mocks.ReplayAll(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileNodePresenterTest.cs =================================================================== diff -u -r61161720b379645f400606e868e2a1286c17348d -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileNodePresenterTest.cs (.../PipingSoilProfileNodePresenterTest.cs) (revision 61161720b379645f400606e868e2a1286c17348d) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSoilProfileNodePresenterTest.cs (.../PipingSoilProfileNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -3,6 +3,7 @@ using System.Drawing; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -13,20 +14,42 @@ using Ringtoets.Piping.Forms.NodePresenters; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; +using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; namespace Ringtoets.Piping.Forms.Test.NodePresenters { [TestFixture] public class PipingSoilProfileNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingSoilProfileNodePresenter(); + TestDelegate test = () => new PipingCalculationContextNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new PipingSoilProfileNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf>(nodePresenter); Assert.IsInstanceOf(nodePresenter); } @@ -53,7 +76,7 @@ }; var soilProfile = new PipingSoilProfile(name, bottom, layers); - var nodePresenter = new PipingSoilProfileNodePresenter(); + var nodePresenter = new PipingSoilProfileNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNodeMock, dataNodeMock, soilProfile); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs =================================================================== diff -u -r8a40ed604cff5c3d15f997d51e81002ae160487e -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision 8a40ed604cff5c3d15f997d51e81002ae160487e) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -5,6 +5,7 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.Gui.TestUtils; using Core.Common.TestUtils; using Core.Common.Utils.Collections; @@ -23,13 +24,35 @@ [TestFixture] public class PipingSurfaceLineCollectionNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + TestDelegate test = () => new PipingSurfaceLineCollectionNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_ExpectedValues() + { + // Call + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf(nodePresenter); Assert.IsNull(nodePresenter.TreeView); Assert.AreEqual(typeof(IEnumerable), nodePresenter.NodeTagType); @@ -43,7 +66,7 @@ var surfaceLinesCollectionNodeMock = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable surfaceLinesCollection = new[]{ new RingtoetsPipingSurfaceLine() }; @@ -64,7 +87,7 @@ var surfaceLinesCollectionNodeMock = mocks.Stub(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable surfaceLinesCollection = Enumerable.Empty(); @@ -84,7 +107,7 @@ var mocks = new MockRepository(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); IEnumerable surfaceLinesCollection = new[] { @@ -108,7 +131,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNode(nodeMock); @@ -126,7 +149,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call var renameAllowed = nodePresenter.CanRenameNodeTo(nodeMock, ""); @@ -144,7 +167,7 @@ var dataMock = mocks.StrictMock>(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call TestDelegate call = () => { nodePresenter.OnNodeRenamed(dataMock, ""); }; @@ -164,7 +187,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeChecked(nodeMock); @@ -181,7 +204,7 @@ var dataMock = mocks.StrictMock>(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dragAllowed = nodePresenter.CanDrag(dataMock); @@ -201,7 +224,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call DragOperations dropAllowed = nodePresenter.CanDrop(dataMock, sourceMock, targetMock, DragOperations.Move); @@ -221,7 +244,7 @@ var targetMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call bool insertionAllowed = nodePresenter.CanInsert(dataMock, sourceMock, targetMock); @@ -241,7 +264,7 @@ var targetParentNodeDataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnDragDrop(dataMock, sourceParentNodeMock, targetParentNodeDataMock, DragOperations.Move, 2); @@ -258,7 +281,7 @@ var dataMock = mocks.StrictMock>(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnNodeSelected(dataMock); @@ -268,58 +291,16 @@ } [Test] - public void GetContextMenu_DefaultScenario_ReturnNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock>(); - mocks.ReplayAll(); - - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); - - // Call - var contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); - - // Assert - Assert.IsNull(contextMenu); - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] - public void GetContextMenu_NoContextMenuBuilderProviderSet_ReturnsNull() - { - // Setup - var mocks = new MockRepository(); - var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock>(); - mocks.ReplayAll(); - - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); - - // Call - var returnedContextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); - - // Assert - Assert.IsNull(returnedContextMenu); - - mocks.VerifyAll(); // Expect no calls on arguments - } - - [Test] [TestCase(true)] [TestCase(false)] - public void GetContextMenu_ContextMenuBuilderProviderSet_HaveImportSurfaceLinesItemInContextMenu(bool commonItemsEnabled) + public void GetContextMenu_Always_ContextMenuWithFiveItems(bool commonItemsEnabled) { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock>(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter - { - ContextMenuBuilderProvider = TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled) - }; + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(TestContextMenuBuilderProvider.Create(mocks, nodeMock, commonItemsEnabled)); mocks.ReplayAll(); @@ -349,7 +330,7 @@ var eventArgsMock = mocks.StrictMock(""); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnPropertyChanged(dataMock, nodeMock, eventArgsMock); @@ -367,7 +348,7 @@ var eventArgsMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.OnCollectionChanged(dataMock, eventArgsMock); @@ -385,7 +366,7 @@ var nodeMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // Call bool removalAllowed = nodePresenter.CanRemove(nodeMock, dataMock); @@ -404,7 +385,7 @@ var dataMock = mocks.StrictMock>(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(contextMenuBuilderProviderMock); // call TestDelegate call = () => nodePresenter.RemoveNodeData(parentNodeDataMock, dataMock); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineNodePresenterTest.cs =================================================================== diff -u -r61161720b379645f400606e868e2a1286c17348d -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineNodePresenterTest.cs (.../PipingSurfaceLineNodePresenterTest.cs) (revision 61161720b379645f400606e868e2a1286c17348d) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/NodePresenters/PipingSurfaceLineNodePresenterTest.cs (.../PipingSurfaceLineNodePresenterTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -1,6 +1,8 @@ -using System.Drawing; +using System; +using System.Drawing; using Core.Common.Controls; +using Core.Common.Gui; using Core.Common.TestUtils; using NUnit.Framework; @@ -13,19 +15,42 @@ using Ringtoets.Piping.Forms.NodePresenters; using PipingFormsResources = Ringtoets.Piping.Forms.Properties.Resources; +using CoreCommonGuiResources = Core.Common.Gui.Properties.Resources; namespace Ringtoets.Piping.Forms.Test.NodePresenters { [TestFixture] public class PipingSurfaceLineNodePresenterTest { + private MockRepository mockRepository; + private IContextMenuBuilderProvider contextMenuBuilderProviderMock; + + [SetUp] + public void SetUp() + { + mockRepository = new MockRepository(); + contextMenuBuilderProviderMock = mockRepository.StrictMock(); + } + [Test] - public void DefaultConstructor_ExpectedValues() + public void Constructor_NoMenuBuilderProvider_ArgumentNullException() { // Call - var nodePresenter = new PipingSurfaceLineNodePresenter(); + TestDelegate test = () => new PipingCalculationContextNodePresenter(null); // Assert + var message = Assert.Throws(test).Message; + StringAssert.StartsWith(CoreCommonGuiResources.NodePresenter_ContextMenuBuilderProvider_required, message); + StringAssert.EndsWith("contextMenuBuilderProvider", message); + } + + [Test] + public void Constructor_WithParamsSet_NewInstance() + { + // Call + var nodePresenter = new PipingSurfaceLineNodePresenter(contextMenuBuilderProviderMock); + + // Assert Assert.IsInstanceOf>(nodePresenter); } @@ -42,7 +67,7 @@ const string name = ""; var surfaceLine = new RingtoetsPipingSurfaceLine { Name = name }; - var nodePresenter = new PipingSurfaceLineNodePresenter(); + var nodePresenter = new PipingSurfaceLineNodePresenter(contextMenuBuilderProviderMock); // Call nodePresenter.UpdateNode(parentNodeMock, dataNodeMock, surfaceLine); Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/PipingGuiPluginTest.cs =================================================================== diff -u -r1f79b34c12554e2b9878f6296168d18232cc9852 -rd02fa527769665fe275986468c6ac570fbad5e48 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/PipingGuiPluginTest.cs (.../PipingGuiPluginTest.cs) (revision 1f79b34c12554e2b9878f6296168d18232cc9852) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/PipingGuiPluginTest.cs (.../PipingGuiPluginTest.cs) (revision d02fa527769665fe275986468c6ac570fbad5e48) @@ -89,7 +89,10 @@ var guiStub = mocks.Stub(); guiStub.CommandHandler = mocks.Stub(); + var contextMenuProviderMock = mocks.DynamicMock(); + Expect.Call(guiStub.ApplicationCore).Return(applicationCore).Repeat.Any(); + Expect.Call(guiStub.ContextMenuProvider).Return(contextMenuProviderMock).Repeat.Any(); mocks.ReplayAll();