Index: test/Plugins/Wti/Wti.Forms.Test/NodePresenters/WtiProjectNodePresenterTest.cs =================================================================== diff -u -rd6424435444e760d052fe6d8c8786e01bddf9d2b -r5f7007ed48dccd78b0a07db987bf234a6705ec9b --- test/Plugins/Wti/Wti.Forms.Test/NodePresenters/WtiProjectNodePresenterTest.cs (.../WtiProjectNodePresenterTest.cs) (revision d6424435444e760d052fe6d8c8786e01bddf9d2b) +++ test/Plugins/Wti/Wti.Forms.Test/NodePresenters/WtiProjectNodePresenterTest.cs (.../WtiProjectNodePresenterTest.cs) (revision 5f7007ed48dccd78b0a07db987bf234a6705ec9b) @@ -1,4 +1,5 @@ using System.ComponentModel; +using System.Linq; using DelftTools.Controls; using DelftTools.Controls.Swf; using DelftTools.Shell.Core; @@ -53,7 +54,7 @@ } [Test] - public void GetChildNodeObjects_WithData_ReturnAllChildNodes() + public void GetChildNodeObjects_WithoutPipingFailureMechanism_ReturnsEmptyList() { // Setup var mocks = new MockRepository(); @@ -73,6 +74,28 @@ } [Test] + public void GetChildNodeObjects_WithPipingFailureMechanism_ReturnPipingFailureMechanism() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + mocks.ReplayAll(); + + var nodePresenter = new WtiProjectNodePresenter(); + + var project = new WtiProject(); + project.InitializePipingFailureMechanism(); + + // Call + var children = nodePresenter.GetChildNodeObjects(project, nodeMock).Cast().AsList(); + + // Assert + Assert.AreEqual(1, children.Count); + Assert.AreSame(project.PipingFailureMechanism, children[0]); + mocks.VerifyAll(); // Expect no calls on tree node + } + + [Test] public void CanRenameNode_Always_ReturnTrue() { // Setup @@ -243,28 +266,55 @@ } [Test] - public void GetContextMenu_CreateWithData_ReturnsContextMenuWithOneItemWithDataAsTag() + public void GetContextMenu_WithNoPipingFailureMechanism_ReturnsContextMenuWithOneItemWithDataAsTag() { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); - var dataMock = mocks.StrictMock(); + var wtiProject = new WtiProject(); mocks.ReplayAll(); var nodePresenter = new WtiProjectNodePresenter(); // Call - var contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock) as MenuItemContextMenuStripAdapter; + var contextMenu = nodePresenter.GetContextMenu(nodeMock, wtiProject) as MenuItemContextMenuStripAdapter; // Assert Assert.NotNull(contextMenu); Assert.AreEqual(1, contextMenu.ContextMenuStrip.Items.Count); Assert.AreEqual(WtiFormsResources.AddPipingFailureMechanismContextMenuItem, contextMenu.ContextMenuStrip.Items[0].Text); - Assert.AreSame(dataMock, contextMenu.ContextMenuStrip.Items[0].Tag); + Assert.AreEqual(WtiFormsResources.WtiProjectTooltipAddPipingFailureMechanism, contextMenu.ContextMenuStrip.Items[0].ToolTipText); + Assert.IsTrue(contextMenu.ContextMenuStrip.Items[0].Enabled); + Assert.AreSame(wtiProject, contextMenu.ContextMenuStrip.Items[0].Tag); mocks.VerifyAll(); // Expect no calls on arguments } [Test] + public void GetContextMenu_WithPipingFailureMechanismAlreadySet_ReturnsContextMenuWithOneDisabledItem() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + var wtiProject = new WtiProject(); + wtiProject.InitializePipingFailureMechanism(); + mocks.ReplayAll(); + + var nodePresenter = new WtiProjectNodePresenter(); + + // Call + var contextMenu = nodePresenter.GetContextMenu(nodeMock, wtiProject) as MenuItemContextMenuStripAdapter; + + // Assert + Assert.NotNull(contextMenu); + Assert.AreEqual(1, contextMenu.ContextMenuStrip.Items.Count); + Assert.AreEqual(WtiFormsResources.AddPipingFailureMechanismContextMenuItem, contextMenu.ContextMenuStrip.Items[0].Text); + Assert.AreEqual(WtiFormsResources.WtiProjectTooltipPipingFailureMechanismAlreadyAdded, contextMenu.ContextMenuStrip.Items[0].ToolTipText); + Assert.IsFalse(contextMenu.ContextMenuStrip.Items[0].Enabled); + Assert.IsNull(contextMenu.ContextMenuStrip.Items[0].Tag); + mocks.VerifyAll(); // Expect no calls on arguments + } + + [Test] public void OnPropertyChange_Always_DoNothing() { // Setup @@ -338,5 +388,29 @@ Assert.IsTrue(removalSuccesful); CollectionAssert.DoesNotContain(project.Items, wtiProject); } + + [Test] + public void GivenWtiProjectWithoutPipingFailureMechanism_WhenAddPipingFailureMechanismThroughContextMenu_ThenWtiProjectHasPipingFailureMechanismAssigned() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + var wtiProject = new WtiProject(); + mocks.ReplayAll(); + + var nodePresenter = new WtiProjectNodePresenter(); + var contextMenu = nodePresenter.GetContextMenu(nodeMock, wtiProject) as MenuItemContextMenuStripAdapter; + + // Preconditions + Assert.NotNull(contextMenu); + Assert.IsNull(wtiProject.PipingFailureMechanism); + Assert.AreEqual(1, contextMenu.ContextMenuStrip.Items.Count); + + // Call + contextMenu.ContextMenuStrip.Items[0].PerformClick(); + + // Assert + Assert.NotNull(wtiProject.PipingFailureMechanism); + } } } \ No newline at end of file