Index: Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs =================================================================== diff -u -r7d242b8efca25dd01d33ba0481d707f7ee4baebd -r1811626955b35ce3019b250013b92a56f00a561a --- Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs (.../CalculationTreeNodeInfoFactoryTest.cs) (revision 7d242b8efca25dd01d33ba0481d707f7ee4baebd) +++ Ringtoets/Common/test/Ringtoets.Common.Forms.Test/TreeNodeInfos/CalculationTreeNodeInfoFactoryTest.cs (.../CalculationTreeNodeInfoFactoryTest.cs) (revision 1811626955b35ce3019b250013b92a56f00a561a) @@ -36,7 +36,7 @@ public class CalculationTreeNodeInfoFactoryTest { [Test] - public void Text_CreatedCalculationGroupContextTreeNodeInfo_AlwaysReturnsWrappedDataName() + public void TextOfCalculationGroupContextTreeNodeInfo_Always_ReturnsWrappedDataName() { // Setup var mocks = new MockRepository(); @@ -61,7 +61,7 @@ } [Test] - public void Image_CreatedCalculationGroupContextTreeNodeInfo_AlwaysReturnsFolderIcon() + public void ImageOfCalculationGroupContextTreeNodeInfo_Always_ReturnsFolderIcon() { // Setup var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); @@ -74,7 +74,7 @@ } [Test] - public void EnsureVisibleOnCreate_CreatedCalculationGroupContextTreeNodeInfo_AlwaysReturnsTrue() + public void EnsureVisibleOnCreateOfCalculationGroupContextTreeNodeInfo_Always_ReturnsTrue() { // Setup var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); @@ -86,8 +86,112 @@ Assert.IsTrue(result); } - private class TestCalculationGroupContext : ICalculationContext + [Test] + public void CanRenameNodeOfCalculationGroupContextTreeNodeInfo_ParentIsCalculationGroupContext_ReturnTrue() { + // Setup + var mocks = new MockRepository(); + var calculationGroupMock = mocks.StrictMock(); + var failureMechanismMock = mocks.StrictMock(); + + mocks.ReplayAll(); + + var groupContext = new TestCalculationGroupContext(calculationGroupMock, failureMechanismMock); + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); + + // Call + bool isRenamingAllowed = treeNodeInfo.CanRename(null, groupContext); + + // Assert + Assert.IsTrue(isRenamingAllowed); + mocks.VerifyAll(); + } + + [Test] + public void CanRenameNodeOfCalculationGroupContextTreeNodeInfo_EverythingElse_ReturnFalse() + { + // Setup + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); + + // Call + bool isRenamingAllowed = treeNodeInfo.CanRename(null, null); + + // Assert + Assert.IsFalse(isRenamingAllowed); + } + + [Test] + public void OnNodeRenamedOfCalculationGroupContextTreeNodeInfo_WithData_RenameGroupAndNotifyObservers() + { + // Setup + var mocks = new MockRepository(); + var observer = mocks.StrictMock(); + var failureMechanismMock = mocks.StrictMock(); + + observer.Expect(o => o.UpdateObserver()); + + mocks.ReplayAll(); + + const string newName = "new name"; + var group = new CalculationGroup(); + var nodeData = new TestCalculationGroupContext(group, failureMechanismMock); + + nodeData.Attach(observer); + + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); + + // Call + treeNodeInfo.OnNodeRenamed(nodeData, newName); + + // Assert + Assert.AreEqual(newName, group.Name); + mocks.VerifyAll(); + } + + [Test] + public void CanRemoveOfCalculationGroupContextTreeNodeInfo_CalculationGroupWithoutParent_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var failureMechanismMock = mocks.StrictMock(); + mocks.ReplayAll(); + + var group = new CalculationGroup(); + var nodeData = new TestCalculationGroupContext(group, failureMechanismMock); + + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); + + // Call + bool isRemovalAllowed = treeNodeInfo.CanRemove(nodeData, null); + + // Assert + Assert.IsFalse(isRemovalAllowed); + mocks.VerifyAll(); + } + + [Test] + public void CanRemoveOfCalculationGroupContextTreeNodeInfo_NestedCalculationGroup_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var failureMechanismMock = mocks.StrictMock(); + mocks.ReplayAll(); + + var nodeData = new TestCalculationGroupContext(new CalculationGroup(), failureMechanismMock); + var parentNodeData = new TestCalculationGroupContext(new CalculationGroup(), failureMechanismMock); + + var treeNodeInfo = CalculationTreeNodeInfoFactory.CreateCalculationGroupContextTreeNodeInfo(null, null, null); + + // Call + bool isRemovalAllowed = treeNodeInfo.CanRemove(nodeData, parentNodeData); + + // Assert + Assert.IsTrue(isRemovalAllowed); + mocks.VerifyAll(); + } + + private class TestCalculationGroupContext : Observable, ICalculationContext + { public TestCalculationGroupContext(CalculationGroup wrappedData, IFailureMechanism failureMechanism) { WrappedData = wrappedData; @@ -97,12 +201,6 @@ public CalculationGroup WrappedData { get; private set; } public IFailureMechanism FailureMechanism { get; private set; } - - public void Attach(IObserver observer) {} - - public void Detach(IObserver observer) {} - - public void NotifyObservers() {} } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7d242b8efca25dd01d33ba0481d707f7ee4baebd -r1811626955b35ce3019b250013b92a56f00a561a --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 7d242b8efca25dd01d33ba0481d707f7ee4baebd) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Forms.Test/TreeNodeInfos/GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs (.../GrassCoverErosionInwardsCalculationGroupContextTreeNodeInfoTest.cs) (revision 1811626955b35ce3019b250013b92a56f00a561a) @@ -409,119 +409,6 @@ } [Test] - public void CanRenameNode_ParentIsGrassCoverErosionInwardsCalculationGroupContext_ReturnTrue() - { - // Setup - var calculationGroupMock = mocks.StrictMock(); - var failureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - var calculationGroupContextMock = mocks.StrictMock(calculationGroupMock, failureMechanismMock, assessmentSectionMock); - - mocks.ReplayAll(); - - // Call - bool isRenamingAllowed = info.CanRename(null, calculationGroupContextMock); - - // Assert - Assert.IsTrue(isRenamingAllowed); - mocks.VerifyAll(); - } - - [Test] - public void CanRenameNode_EverythingElse_ReturnFalse() - { - // Setup - mocks.ReplayAll(); - - // Call - bool isRenamingAllowed = info.CanRename(null, null); - - // Assert - Assert.IsFalse(isRenamingAllowed); - mocks.VerifyAll(); - } - - [Test] - public void OnNodeRenamed_WithData_RenameGroupAndNotifyObservers() - { - // Setup - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - var group = new CalculationGroup(); - var failureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group, - failureMechanismMock, - assessmentSectionMock); - nodeData.Attach(observer); - - // Call - const string newName = "new name"; - info.OnNodeRenamed(nodeData, newName); - - // Assert - Assert.AreEqual(newName, group.Name); - mocks.VerifyAll(); - } - - [Test] - public void CanRemove_ParentIsFailureMechanism_ReturnFalse() - { - // Setup - var group = new CalculationGroup(); - var failureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group, - failureMechanismMock, - assessmentSectionMock); - - var parentNodeData = new GrassCoverErosionInwardsFailureMechanism(); - parentNodeData.CalculationsGroup.Children.Add(group); - - mocks.ReplayAll(); - - // Call - bool isRemovalAllowed = info.CanRemove(nodeData, parentNodeData); - - // Assert - Assert.IsFalse(isRemovalAllowed); - mocks.VerifyAll(); - } - - [Test] - public void CanRemove_ParentIsGrasCoverErosionInwardsCalculationGroupContainingGroup_ReturnTrue() - { - // Setup - var group = new CalculationGroup(); - var failureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new GrassCoverErosionInwardsCalculationGroupContext(group, - failureMechanismMock, - assessmentSectionMock); - - var parentGroup = new CalculationGroup(); - parentGroup.Children.Add(group); - var parentNodeData = new GrassCoverErosionInwardsCalculationGroupContext(parentGroup, - failureMechanismMock, - assessmentSectionMock); - - mocks.ReplayAll(); - - // Call - bool isRemovalAllowed = info.CanRemove(nodeData, parentNodeData); - - // Assert - Assert.IsTrue(isRemovalAllowed); - mocks.VerifyAll(); - } - - [Test] public void OnNodeRemoved_ParentIsGrassCoverErosionInwardsCalculationGroupContainingGroup_RemoveGroupAndNotifyObservers() { // Setup Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs =================================================================== diff -u -r7d242b8efca25dd01d33ba0481d707f7ee4baebd -r1811626955b35ce3019b250013b92a56f00a561a --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs (.../PipingCalculationGroupContextTreeNodeInfoTest.cs) (revision 7d242b8efca25dd01d33ba0481d707f7ee4baebd) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/TreeNodeInfos/PipingCalculationGroupContextTreeNodeInfoTest.cs (.../PipingCalculationGroupContextTreeNodeInfoTest.cs) (revision 1811626955b35ce3019b250013b92a56f00a561a) @@ -1266,127 +1266,6 @@ } [Test] - public void CanRenameNode_ParentIsPipingCalculationGroupContext_ReturnTrue() - { - // Setup - var pipingFailureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - var pipingCalculationGroupContextMock = mocks.StrictMock(new CalculationGroup(), - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanismMock, - assessmentSectionMock); - - mocks.ReplayAll(); - - // Call - bool isRenamingAllowed = info.CanRename(null, pipingCalculationGroupContextMock); - - // Assert - Assert.IsTrue(isRenamingAllowed); - mocks.VerifyAll(); - } - - [Test] - public void CanRenameNode_EverythingElse_ReturnFalse() - { - // Call - bool isRenamingAllowed = info.CanRename(null, null); - - // Assert - Assert.IsFalse(isRenamingAllowed); - mocks.VerifyAll(); - } - - [Test] - public void OnNodeRenamed_WithData_RenameGroupAndNotifyObservers() - { - // Setup - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - var group = new CalculationGroup(); - var pipingFailureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new PipingCalculationGroupContext(group, - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanismMock, - assessmentSectionMock); - nodeData.Attach(observer); - - // Call - const string newName = "new name"; - info.OnNodeRenamed(nodeData, newName); - - // Assert - Assert.AreEqual(newName, group.Name); - mocks.VerifyAll(); - } - - [Test] - public void CanRemove_ParentIsFailureMechanism_ReturnFalse() - { - // Setup - var group = new CalculationGroup(); - var pipingFailureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new PipingCalculationGroupContext(group, - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanismMock, - assessmentSectionMock); - - var parentNodeData = new PipingFailureMechanism(); - parentNodeData.CalculationsGroup.Children.Add(group); - - mocks.ReplayAll(); - - // Call - bool isRemovalAllowed = info.CanRemove(nodeData, parentNodeData); - - // Assert - Assert.IsFalse(isRemovalAllowed); - mocks.VerifyAll(); - } - - [Test] - public void CanRemove_ParentIsPipingCalculationGroupContainingGroup_ReturnTrue() - { - // Setup - var group = new CalculationGroup(); - var pipingFailureMechanismMock = mocks.StrictMock(); - var assessmentSectionMock = mocks.StrictMock(); - mocks.ReplayAll(); - - var nodeData = new PipingCalculationGroupContext(group, - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanismMock, - assessmentSectionMock); - - var parentGroup = new CalculationGroup(); - parentGroup.Children.Add(group); - var parentNodeData = new PipingCalculationGroupContext(parentGroup, - Enumerable.Empty(), - Enumerable.Empty(), - pipingFailureMechanismMock, - assessmentSectionMock); - - mocks.ReplayAll(); - - // Call - bool isRemovalAllowed = info.CanRemove(nodeData, parentNodeData); - - // Assert - Assert.IsTrue(isRemovalAllowed); - mocks.VerifyAll(); - } - - [Test] public void OnNodeRemoved_ParentIsPipingCalculationGroupContainingGroup_RemoveGroupAndNotifyObservers() { // Setup