LoadTreeView() public method

Loads the tree view with business object and all child objects.
public LoadTreeView ( IBusinessObject businessObject ) : void
businessObject IBusinessObject
return void
        public void Test_Acceptance_LoadBO_TwoChildren_OneWithNoChildrenAndOneWith2Children_Expanded_ShouldLoadCorrectChildren()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            //TreeViewWin treeView = new TreeViewWin();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
            ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
            AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            
            
            //-------------Assert Preconditions -------------
            Assert.AreEqual(0, treeView.Nodes.Count);
            Assert.AreEqual(2, organisation.ContactPeople.Count);
            Assert.AreEqual(0, contactPerson1.Addresses.Count);
            Assert.AreEqual(2, contactPerson2.Addresses.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(organisation, 4);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode dbNode = treeView.Nodes[0];
            ITreeNode relationshipNode = dbNode.Nodes[0];
            Assert.AreEqual(2, relationshipNode.Nodes.Count, "Should have two Contact People");
            AssertChildNodeLoadedInTree(organisation.ContactPeople, relationshipNode, 0);
            AssertChildNodeLoadedInTree(organisation.ContactPeople, relationshipNode, 1);
            ITreeNode table1Node = relationshipNode.Nodes[0];

            ITreeNode addressRelationshipNode = table1Node.Nodes[0];
            Assert.AreEqual(0, addressRelationshipNode.Nodes.Count);


            ITreeNode contactPerson2Node = relationshipNode.Nodes[1];
            Assert.AreEqual(contactPerson2.ToString(), contactPerson2Node.Text);
            ITreeNode contactPerson2AddressRelationshipNode = contactPerson2Node.Nodes[0];
            Assert.AreEqual("Addresses", contactPerson2AddressRelationshipNode.Text);
            Assert.AreEqual(2, contactPerson2.Addresses.Count);
            Assert.AreEqual(2, contactPerson2AddressRelationshipNode.Nodes.Count);
            AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 0);
            AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 1);
        }
        public void Test_GetBusinessObjectTreeNode_NotInTree()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);

            treeViewController.LoadTreeView(organisation);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            ITreeNode fetchedTreeNode = treeViewController.GetBusinessObjectTreeNode(new OrganisationTestBO());
            //---------------Test Result -----------------------
            Assert.IsNull(fetchedTreeNode);
        }
        public void Test_GetBusinessObjectTreeNode_ChildNode()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);

            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);

            treeViewController.LoadTreeView(organisation, 2);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            Assert.AreEqual(1, treeView.Nodes[0].Nodes.Count);
            Assert.AreEqual(1, treeView.Nodes[0].Nodes[0].Nodes.Count);
            //---------------Execute Test ----------------------
            ITreeNode fetchedTreeNode = treeViewController.GetBusinessObjectTreeNode(contactPerson);
            //---------------Test Result -----------------------
            Assert.IsNotNull(fetchedTreeNode);
            Assert.AreSame(fetchedTreeNode, treeView.Nodes[0].Nodes[0].Nodes[0]);
        }
 public void Test_SetupNodeWithBusinessObject_LoadSingleBo_CustomDisplayValue()
 {
     //---------------Set up test pack-------------------
     AddressTestBO addressTestBO = AddressTestBO.CreateUnsavedAddress(ContactPersonTestBO.CreateUnsavedContactPerson());
     string customDisplayValue = TestUtil.GetRandomString();
     ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
     TreeViewController treeViewController = new TreeViewController(treeView);
     
     //-------------Assert Preconditions -------------
     Assert.AreEqual(0, treeView.Nodes.Count);
     //---------------Execute Test ----------------------
     treeViewController.SetupNodeWithBusinessObject +=
         delegate(ITreeNode treeNode, IBusinessObject businessObject) { treeNode.Text = customDisplayValue; };
     treeViewController.LoadTreeView(addressTestBO);
     //---------------Test Result -----------------------
     Assert.AreEqual(1, treeView.Nodes.Count);
     ITreeNode node = treeView.Nodes[0];
     Assert.AreEqual(customDisplayValue, node.Text);
     Assert.AreEqual(0, node.Nodes.Count);
 }
        public void Test_BusinessObjectCollection_ChildRemoved_SetsSelectedNodeToNull()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation1 = OrganisationTestBO.CreateSavedOrganisation();
            OrganisationTestBO organisation2 = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation1);
            ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation1);

            IBusinessObjectCollection organisations = new BusinessObjectCollection<OrganisationTestBO> { organisation1 };
            treeViewController.LoadTreeView(organisations, 4);
            treeViewController.SelectObject(contactPerson2);
            //---------------Assert Precondition----------------        
            Assert.IsNotNull(treeViewController.TreeView.SelectedNode);
            //---------------Execute Test ----------------------
            contactPerson2.Organisation = organisation2;
            //---------------Test Result -----------------------
            Assert.IsNull(treeViewController.TreeView.SelectedNode);
        }
        public void Test_LoadTreeView_WithRelationship_WhenExpandLevelsSpecified_WithDisplayLevel()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);


            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);
            AddressTestBO address = AddressTestBO.CreateUnsavedAddress(contactPerson);
            IRelationship relationship = organisation.Relationships["ContactPeople"];
            //-------------Assert Preconditions -------------
            Assert.IsInstanceOf(typeof(IMultipleRelationship), relationship);
            IMultipleRelationship multipleRelationship = (IMultipleRelationship)relationship;
            Assert.AreEqual(1, multipleRelationship.BusinessObjectCollection.Count);
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(relationship, 3, 2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode relationshipNode = treeView.Nodes[0];
            Assert.AreEqual(relationship.RelationshipName, relationshipNode.Text);
            Assert.AreEqual(1, relationshipNode.Nodes.Count);
            ITreeNode tableChildNode = relationshipNode.Nodes[0];
            Assert.AreEqual(contactPerson.ToString(), tableChildNode.Text);

            Assert.AreEqual(1, tableChildNode.Nodes.Count);
            ITreeNode columnRelationshipNode = tableChildNode.Nodes[0];
            Assert.AreEqual("Addresses", columnRelationshipNode.Text);
            Assert.AreEqual(0, columnRelationshipNode.Nodes.Count);
           
        }
        public void Test_LoadBusinessObjectCollection_OneChild_Expanded()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);

            IBusinessObjectCollection organisations = new BusinessObjectCollection<OrganisationTestBO> { organisation };
            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, organisations.Count);
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(organisations, 2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode node = treeView.Nodes[0];
            Assert.AreEqual(organisation.ToString(), node.Text);
            Assert.AreEqual(1, node.Nodes.Count);
            ITreeNode relationshipNode = node.Nodes[0];
            Assert.AreEqual("ContactPeople", relationshipNode.Text);
            Assert.AreEqual(1, relationshipNode.Nodes.Count);
            ITreeNode childNode = relationshipNode.Nodes[0];
            Assert.AreEqual(contactPerson.ToString(), childNode.Text);
        }
 public void Test_SetVisibility_False_ThenTrue_CorrectOrder()
 {
     //---------------Set up test pack-------------------
     ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
     TreeViewController treeViewController = new TreeViewController(treeView);
     OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
     ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
     ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
     ContactPersonTestBO contactPerson3 = CreateUnsavedContactPerson(organisation);
     treeViewController.LoadTreeView(organisation, 2);
     treeViewController.SetVisibility(contactPerson2, false);
     //-------------Assert Preconditions -------------
     Assert.AreEqual(1, treeView.Nodes.Count);
     ITreeNode rootNode = treeView.Nodes[0];
     Assert.AreEqual(organisation.ToString(), rootNode.Text);
     Assert.AreEqual(1, rootNode.Nodes.Count);
     ITreeNode contactPeopleNode = rootNode.Nodes[0];
     Assert.AreEqual("ContactPeople", contactPeopleNode.Text);
     Assert.AreEqual(2, contactPeopleNode.Nodes.Count);
     //---------------Execute Test ----------------------
     treeViewController.SetVisibility(contactPerson2, true);
     //---------------Test Result -----------------------
     Assert.AreEqual(1, treeView.Nodes.Count);
     Assert.AreEqual(organisation.ToString(), rootNode.Text);
     Assert.AreEqual(1, rootNode.Nodes.Count);
     Assert.AreEqual("ContactPeople", contactPeopleNode.Text);
     Assert.AreEqual(3, contactPeopleNode.Nodes.Count);
     Assert.AreEqual(treeViewController.GetBusinessObjectTreeNode(contactPerson1), contactPeopleNode.Nodes[0]);
     Assert.AreEqual(treeViewController.GetBusinessObjectTreeNode(contactPerson2), contactPeopleNode.Nodes[1]);
     Assert.AreEqual(treeViewController.GetBusinessObjectTreeNode(contactPerson3), contactPeopleNode.Nodes[2]);
 }
        public void Test_LoadSingleBO_NoChildren()
        {
            //---------------Set up test pack-------------------

            AddressTestBO addressTestBO = AddressTestBO.CreateUnsavedAddress(ContactPersonTestBO.CreateUnsavedContactPerson());

            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);

            //-------------Assert Preconditions -------------
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(addressTestBO);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode node = treeView.Nodes[0];
            Assert.AreEqual(addressTestBO.ToString(), node.Text);
            Assert.AreEqual(0, node.Nodes.Count);
        }
        public void Test_RootNodeBusinessObject()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();


            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            treeViewController.LoadTreeView(organisation);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            IBusinessObject businessObject = treeViewController.RootNodeBusinessObject;
            //---------------Test Result -----------------------
            Assert.AreSame(organisation, businessObject);
        }
        public void Test_WhenRemoveBusinessObject_ShouldRemoveChildrenFromNodeStates()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
            ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
            AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            AddressTestBO address3 = AddressTestBO.CreateUnsavedAddress(contactPerson1);
            treeViewController.LoadTreeView(organisation, 4);
            ITreeNode dbNode = treeView.Nodes[0];
            ITreeNode relationshipNode = dbNode.Nodes[0];
            //-------------Assert Preconditions -------------
            //---------------Execute Test ----------------------
            organisation.ContactPeople.Remove(contactPerson2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, relationshipNode.Nodes.Count);
            System.Collections.IDictionary objectNodes =
                (System.Collections.IDictionary)ReflectionUtilities.GetPrivatePropertyValue(treeViewController, "ObjectNodes");

            Assert.IsFalse(objectNodes.Contains(contactPerson2));
            Assert.IsFalse(objectNodes.Contains(contactPerson2.Addresses[0]));
            Assert.IsFalse(objectNodes.Contains(contactPerson2.Addresses[1]));

            System.Collections.IDictionary relationshipNodes =
                (System.Collections.IDictionary)ReflectionUtilities.GetPrivatePropertyValue(treeViewController, "RelationshipNodes");
            Assert.IsFalse(relationshipNodes.Contains(contactPerson2.Relationships["Addresses"]));


            IDictionary childCollectionNodes =
                (System.Collections.IDictionary)ReflectionUtilities.GetPrivatePropertyValue(treeViewController, "ChildCollectionNodes");
            Assert.IsFalse(childCollectionNodes.Contains(contactPerson2.Addresses));
        }
            Test_Acceptance_WhenRemoveBusinessObjectThatHasChildrenThenAddBack_ShouldAddBackToTree_AndAddChildrenBack()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
            ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
            AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
            AddressTestBO address3 = AddressTestBO.CreateUnsavedAddress(contactPerson1);
            treeViewController.LoadTreeView(organisation, 4);
            ITreeNode dbNode = treeView.Nodes[0];
            ITreeNode relationshipNode = dbNode.Nodes[0];

            organisation.ContactPeople.Remove(contactPerson2);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, relationshipNode.Nodes.Count);
            Assert.AreEqual(2, contactPerson2.Addresses.Count);
            //---------------Execute Test ----------------------

            organisation.ContactPeople.Add(contactPerson2);
            Assert.AreEqual(2, relationshipNode.Nodes.Count);
            ITreeNode contactPerson2Node = relationshipNode.Nodes[1];
            contactPerson2Node.ExpandAll();
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", contactPerson2Node);

            //---------------Test Result -----------------------
            Assert.AreEqual(2, relationshipNode.Nodes.Count);
            contactPerson2Node = relationshipNode.Nodes[1];
            Assert.AreEqual(contactPerson2.ToString(), contactPerson2Node.Text);
            Assert.AreEqual(1, contactPerson2Node.Nodes.Count);
            ITreeNode contactPerson2AddressRelationshipNode = contactPerson2Node.Nodes[0];
            Assert.AreEqual("Addresses", contactPerson2AddressRelationshipNode.Text);
            Assert.AreEqual(2, contactPerson2.Addresses.Count);
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", contactPerson2AddressRelationshipNode);
            Assert.AreEqual(2, contactPerson2AddressRelationshipNode.Nodes.Count);
            AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 0);
            AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 1);
        }
 public void Test_Acceptance_WhenRemoveBusinessObjectFromChildCollectionAndThenAddBack_ShouldAddBackToTree()
 {
     //---------------Set up test pack-------------------
     ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
     TreeViewController treeViewController = new TreeViewController(treeView);
     OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
     ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
     ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
     AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
     AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
     AddressTestBO address3 = AddressTestBO.CreateUnsavedAddress(contactPerson1);
     treeViewController.LoadTreeView(organisation, 4);
     ITreeNode dbNode = treeView.Nodes[0];
     ITreeNode relationshipNode = dbNode.Nodes[0];
     ITreeNode contactPerson2Node = relationshipNode.Nodes[1];
     //-------------Assert Preconditions -------------
     Assert.AreEqual(contactPerson2.ToString(), contactPerson2Node.Text);
     ITreeNode contactPerson2AddressRelationshipNode = contactPerson2Node.Nodes[0];
     Assert.AreEqual("Addresses", contactPerson2AddressRelationshipNode.Text);
     Assert.AreEqual(2, contactPerson2.Addresses.Count);
     Assert.AreEqual(2, contactPerson2AddressRelationshipNode.Nodes.Count);
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 0);
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 1);
     //---------------Execute Test ----------------------
     contactPerson2.Addresses.Remove(address2);
     contactPerson2.Addresses.Add(address2);
     //---------------Test Result -----------------------
     Assert.AreEqual(contactPerson2.ToString(), contactPerson2Node.Text);
     contactPerson2AddressRelationshipNode = contactPerson2Node.Nodes[0];
     Assert.AreEqual("Addresses", contactPerson2AddressRelationshipNode.Text);
     Assert.AreEqual(2, contactPerson2.Addresses.Count);
     Assert.AreEqual(2, contactPerson2AddressRelationshipNode.Nodes.Count);
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 0);
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 1);
 }
     Test_Acceptance_ExpandChild_WithTwoChildren_OneWithOneChild_AndOneWith2Children_WhenNotExpandedOnLoad_ShouldLoadCorrectChildren
     ()
 {
     //---------------Set up test pack-------------------
     ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
     TreeViewController treeViewController = new TreeViewController(treeView);
     OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
     ContactPersonTestBO contactPerson1 = CreateUnsavedContactPerson(organisation);
     ContactPersonTestBO contactPerson2 = CreateUnsavedContactPerson(organisation);
     AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
     AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson2);
     AddressTestBO address3 = AddressTestBO.CreateUnsavedAddress(contactPerson1);
     treeViewController.LoadTreeView(organisation, 3);
     //-------------Assert Preconditions -------------
     Assert.AreEqual(2, organisation.ContactPeople.Count);
     Assert.AreEqual(1, contactPerson1.Addresses.Count);
     Assert.AreEqual(2, contactPerson2.Addresses.Count);
     Assert.AreEqual(1, treeView.Nodes.Count);
     ITreeNode dbNode = treeView.Nodes[0];
     ITreeNode contactPersonsRelationshipNode = dbNode.Nodes[0];
     Assert.AreEqual(2, contactPersonsRelationshipNode.Nodes.Count, "Should have two tables");
     AssertChildNodeLoadedInTree(organisation.ContactPeople, contactPersonsRelationshipNode, 0);
     AssertChildNodeLoadedInTree(organisation.ContactPeople, contactPersonsRelationshipNode, 1);
     ITreeNode contactPerson1Node = contactPersonsRelationshipNode.Nodes[0];
     ITreeNode contactPerson1AddressRelationshipNode = contactPerson1Node.Nodes[0];
     Assert.AreEqual("Addresses", contactPerson1AddressRelationshipNode.Text);
     Assert.AreEqual
         (1, contactPerson1AddressRelationshipNode.Nodes.Count,
          "Only the dummy should be present because the node is not expanded");
     ITreeNode contactPerson2Node = contactPersonsRelationshipNode.Nodes[1];
     ITreeNode contactPerson2AddressRelationshipNode = contactPerson2Node.Nodes[0];
     Assert.AreEqual("Addresses", contactPerson2AddressRelationshipNode.Text);
     Assert.AreEqual
         (1, contactPerson2AddressRelationshipNode.Nodes.Count,
          "Only the dummy should be present because the ContactPerson Node is not expanded So No Addresses Should be loaded");
     //---------------Execute Test ----------------------
     contactPerson2AddressRelationshipNode.Expand();
     ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", contactPerson2AddressRelationshipNode);
     //---------------Test Result -----------------------
     Assert.AreEqual(2, contactPerson2.Addresses.Count);
     Assert.AreEqual
         (1, contactPerson1AddressRelationshipNode.Nodes.Count, "Addresses in table 1 should still be the dummy node");
     Assert.AreNotEqual(contactPerson1.Addresses[0].ToString(), contactPerson1AddressRelationshipNode.Nodes[0].Text);
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 0);
     Assert.AreEqual
         (2, contactPerson2AddressRelationshipNode.Nodes.Count,
          "Both columns in table 2 should now be shown since it is expanded");
     AssertChildNodeLoadedInTree(contactPerson2.Addresses, contactPerson2AddressRelationshipNode, 1);
 }
     public void Test_SetBusinessObjectVisibility_True_ShouldShowNode()
     {
         //---------------Set up test pack-------------------
         ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
         TreeViewController treeViewController = new TreeViewController(treeView);
         OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
         ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);
 
         treeViewController.LoadTreeView(organisation, 2);
         //-------------Assert Preconditions -------------
         Assert.AreEqual(1, treeView.Nodes.Count);
         ITreeNode rootNode = treeView.Nodes[0];
         Assert.AreEqual(organisation.ToString(), rootNode.Text);
         Assert.AreEqual(1, rootNode.Nodes.Count);
         ITreeNode relationshipNode = rootNode.Nodes[0];
         Assert.AreEqual("ContactPeople", relationshipNode.Text);
         Assert.AreEqual(1, relationshipNode.Nodes.Count);
         ITreeNode childNode = relationshipNode.Nodes[0];
         Assert.AreEqual(contactPerson.ToString(), childNode.Text);
         //---------------Execute Test ----------------------
         treeViewController.SetVisibility(contactPerson, true);
         //---------------Test Result -----------------------
         Assert.AreEqual(1, treeView.Nodes.Count);
         Assert.AreEqual(organisation.ToString(), rootNode.Text);
         Assert.AreEqual(1, rootNode.Nodes.Count);
         Assert.AreEqual("ContactPeople", relationshipNode.Text);
         Assert.AreEqual(1, relationshipNode.Nodes.Count);
     }
        public void Test_LoadSingleBO_OneChildRelationship_NotExpanded_HasADummyNode()
        {
            //---------------Set up test pack-------------------

            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(organisation);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode organisationNode = treeView.Nodes[0];
            Assert.AreEqual(organisation.ToString(), organisationNode.Text);
            Assert.AreEqual(1, organisationNode.Nodes.Count);
            ITreeNode relationshipNode = organisationNode.Nodes[0];
            Assert.AreEqual
                ("$DUMMY$", relationshipNode.Text,
                 "Dummy node present so that the tree view has the + icon for expanding");
        }
 public void Test_LoadSingleBO_OneChildRelationship_Expanded()
 {
     //---------------Set up test pack-------------------
     OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
     ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
     TreeViewController treeViewController = new TreeViewController(treeView);
     //-------------Assert Preconditions -------------
     Assert.AreEqual(0, treeView.Nodes.Count);
     //---------------Execute Test ----------------------
     treeViewController.LoadTreeView(organisation, 1);
     //---------------Test Result -----------------------
     Assert.AreEqual(1, treeView.Nodes.Count);
     ITreeNode dbNode = treeView.Nodes[0];
     Assert.AreEqual(organisation.ToString(), dbNode.Text);
     Assert.AreEqual(1, dbNode.Nodes.Count);
     ITreeNode tablesRelationshipNode = dbNode.Nodes[0];
     Assert.AreEqual
         ("ContactPeople", tablesRelationshipNode.Text,
          "This is expanded so the ContactPeople Relationship should be loaded into the tree view");
 }
        public void Test_LoadBusinessObjectCollection_TwoItems()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson();
            AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson);
            AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson);
            IBusinessObjectCollection addresses = new BusinessObjectCollection<AddressTestBO> { address1, address2 };
 
            //-------------Assert Preconditions -------------
            Assert.AreEqual(2, addresses.Count);
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(addresses);
            //---------------Test Result -----------------------
            Assert.AreEqual(2, treeView.Nodes.Count);
            ITreeNode node = treeView.Nodes[0];
            Assert.AreEqual(address1.ToString(), node.Text);
            Assert.AreEqual(0, node.Nodes.Count);
            ITreeNode node2 = treeView.Nodes[1];
            Assert.AreEqual(address2.ToString(), node2.Text);
            Assert.AreEqual(0, node2.Nodes.Count);
        }
        public void Test_LoadSingleBO_OneChild_Expanded()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPersonTestBO = organisation.ContactPeople.CreateBusinessObject();
            contactPersonTestBO.FirstName = TestUtil.GetRandomString();
            contactPersonTestBO.Surname = TestUtil.GetRandomString();

            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            //-------------Assert Preconditions -------------
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(organisation, 2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode dbNode = treeView.Nodes[0];
            Assert.AreEqual(organisation.ToString(), dbNode.Text);
            Assert.AreEqual(1, dbNode.Nodes.Count);
            ITreeNode relationshipNode = dbNode.Nodes[0];
            Assert.AreEqual("ContactPeople", relationshipNode.Text);
            Assert.AreEqual(1, relationshipNode.Nodes.Count);
            ITreeNode contactPersonBONode = relationshipNode.Nodes[0];
            Assert.AreEqual(contactPersonTestBO.ToString(), contactPersonBONode.Text);
        }
        public void Test_LoadTreeView_WithRelationship_TwoChildren()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);

            ContactPersonTestBO contactPerson = ContactPersonTestBO.CreateUnsavedContactPerson();
            AddressTestBO address1 = AddressTestBO.CreateUnsavedAddress(contactPerson);
            AddressTestBO address2 = AddressTestBO.CreateUnsavedAddress(contactPerson);
            IRelationship relationship = contactPerson.Relationships["Addresses"];
            //-------------Assert Preconditions -------------
            Assert.IsInstanceOf(typeof(IMultipleRelationship), relationship);
            IMultipleRelationship multipleRelationship = (IMultipleRelationship)relationship;
            Assert.AreEqual(2, multipleRelationship.BusinessObjectCollection.Count);
            Assert.AreEqual(0, treeView.Nodes.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(relationship, 2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode relationshipNode = treeView.Nodes[0];
            Assert.AreEqual(relationship.RelationshipName, relationshipNode.Text);
            Assert.AreEqual(2, relationshipNode.Nodes.Count);
        }
        public void Test_LoadSingleBO_TwoChildren_Expanded()
        {
            //---------------Set up test pack-------------------
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            CreateUnsavedContactPerson(organisation);
            CreateUnsavedContactPerson(organisation);

            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
           
            //-------------Assert Preconditions -------------
            Assert.AreEqual(0, treeView.Nodes.Count);
            Assert.AreEqual(2, organisation.ContactPeople.Count);
            //---------------Execute Test ----------------------
            treeViewController.LoadTreeView(organisation, 2);
            //---------------Test Result -----------------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode dbNode = treeView.Nodes[0];
            ITreeNode relationshipNode = dbNode.Nodes[0];
            Assert.AreEqual(2, relationshipNode.Nodes.Count, "Should have two Contact People");
            AssertChildNodeLoadedInTree(organisation.ContactPeople, relationshipNode, 0);

            AssertChildNodeLoadedInTree(organisation.ContactPeople, relationshipNode, 1);
        }
        public void Test_AddNewParentToTreeView_ThenAddChildren_ThenExpandParent_ShouldHaveChildren()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);

            IBusinessObjectCollection organisations = new BusinessObjectCollection<OrganisationTestBO> { organisation };
            treeViewController.LoadTreeView(organisations, 3);

            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode dbNode = treeView.Nodes[0];
            Assert.AreEqual(organisation.ToString(), dbNode.Text);
            Assert.AreEqual(1, dbNode.Nodes.Count);
            ITreeNode cpRelationshipNode = dbNode.Nodes[0];
            Assert.AreEqual("ContactPeople", cpRelationshipNode.Text);
            Assert.AreEqual(1, cpRelationshipNode.Nodes.Count);
            ITreeNode tableNode = cpRelationshipNode.Nodes[0];
            Assert.AreEqual(contactPerson.ToString(), tableNode.Text);
            ITreeNode columnRelationshipNode = tableNode.Nodes[0];
            Assert.AreEqual("Addresses", columnRelationshipNode.Text);
            //---------------Execute Test ----------------------
            ContactPersonTestBO newContactPerson = organisation.ContactPeople.CreateBusinessObject();
            newContactPerson.Surname = TestUtil.GetRandomString();
            AddressTestBO newAddress = newContactPerson.Addresses.CreateBusinessObject();
           
            ITreeNode newCpNode = cpRelationshipNode.Nodes[1];
            newCpNode.Expand();
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", newCpNode);

            ITreeNode newColumnsRelationshipNode = newCpNode.Nodes[0];
            newColumnsRelationshipNode.Expand();
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", newColumnsRelationshipNode);
            //---------------Test Result -----------------------
            Assert.AreEqual(2, cpRelationshipNode.Nodes.Count);

            Assert.AreEqual(newContactPerson.ToString(), newCpNode.Text);
           
            Assert.AreEqual("Addresses", newColumnsRelationshipNode.Text);
            Assert.AreEqual(1, newColumnsRelationshipNode.Nodes.Count);
            ITreeNode newColumNode = newColumnsRelationshipNode.Nodes[0];
            Assert.AreEqual(newAddress.ToString(), newColumNode.Text);
           
        }
        public void Test_LoadRelationships_AddNewParentToTreeView_ThenAddChildren_ThenExpandParent_ShouldHaveChildren()
        {
            //---------------Set up test pack-------------------
            ITreeView treeView = GlobalUIRegistry.ControlFactory.CreateTreeView();
            TreeViewController treeViewController = new TreeViewController(treeView);
            OrganisationTestBO organisation = OrganisationTestBO.CreateSavedOrganisation();
            ContactPersonTestBO contactPerson = CreateUnsavedContactPerson(organisation);
            treeViewController.LoadTreeView(organisation.Relationships["ContactPeople"], 2);

            //-------------Assert Preconditions -------------
            Assert.AreEqual(1, treeView.Nodes.Count);
            ITreeNode cpRelationshipNode = treeView.Nodes[0];
            Assert.AreEqual("ContactPeople", cpRelationshipNode.Text);
            Assert.AreEqual(1, cpRelationshipNode.Nodes.Count);
            ITreeNode cpNode = cpRelationshipNode.Nodes[0];
            Assert.AreEqual(contactPerson.ToString(), cpNode.Text);
            ITreeNode addressRelationshipNode = cpNode.Nodes[0];
            Assert.AreEqual("Addresses", addressRelationshipNode.Text);
            //---------------Execute Test ----------------------
            BusinessObjectCollection<ContactPersonTestBO> contactPeople = organisation.ContactPeople;
            ContactPersonTestBO newContactPerson = contactPeople.CreateBusinessObject();
            newContactPerson.Surname = "New Name";
            //            newTable.Save();
            AddressTestBO newAddress1 = contactPerson.Addresses.CreateBusinessObject();
            newAddress1.ContactPersonTestBO = newContactPerson;
            newAddress1.AddressLine1 = "New Address";
            AddressTestBO newAddress2 = contactPerson.Addresses.CreateBusinessObject();
            newAddress2.ContactPersonTestBO = newContactPerson;
            ITreeNode newCpNode = cpRelationshipNode.Nodes[1];
            newCpNode.Expand();
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", newCpNode);

            ITreeNode newAddressesRelationshipNode = newCpNode.Nodes[0];
            newAddressesRelationshipNode.Expand();
            ReflectionUtilities.ExecutePrivateMethod(treeViewController, "ExpandNode", newAddressesRelationshipNode);
            //---------------Test Result -----------------------
            Assert.AreEqual(2, cpRelationshipNode.Nodes.Count);

            Assert.AreEqual(newContactPerson.ToString(), newCpNode.Text);
            //Assert.AreEqual(2, newTable.Addresses.Count);

            Assert.AreEqual("Addresses", newAddressesRelationshipNode.Text);
            Assert.AreEqual(2, newAddressesRelationshipNode.Nodes.Count);
            ITreeNode newAddressNode1 = newAddressesRelationshipNode.Nodes[0];
            Assert.AreEqual(newAddress1.ToString(), newAddressNode1.Text);
            ITreeNode newAddressNode2 = newAddressesRelationshipNode.Nodes[1];
            Assert.AreEqual(newAddress2.ToString(), newAddressNode2.Text);

        }