public void CanAddUserToMultipleOrgs()
        {
            var findOrg        = MockOrgs.GetAction("Find By Key");
            var gamma          = findOrg.InvokeReturnObject(3).AssertTitleEquals("Gamma");
            var addUserToGamma = gamma.GetAction("Add User");
            var delta          = findOrg.InvokeReturnObject(4).AssertTitleEquals("Delta");
            var addUserToDelta = delta.GetAction("Add User");

            addUserToDelta.InvokeReturnObject("Test5");
            addUserToGamma.InvokeReturnObject("Test5");
        }
        public void SpecifyUsersOrganisation()
        {
            var test1 = Users.GetAction("Find User By User Name").InvokeReturnObject("Test1");
            var orgs  = test1.GetPropertyByName("Organisations").ContentAsCollection.AssertCountIs(0);

            var findOrg = MockOrgs.GetAction("Find By Key");
            var alpha   = findOrg.InvokeReturnObject(1).AssertTitleEquals("Alpha");

            test1.GetAction("Add Organisation").InvokeReturnObject(alpha);
            test1.GetPropertyByName("Organisations").ContentAsCollection.AssertCountIs(1).ElementAt(0).AssertTitleEquals("Alpha");

            var beta = findOrg.InvokeReturnObject(2).AssertTitleEquals("Beta");

            test1.GetAction("Add Organisation").InvokeReturnObject(beta);
            test1.GetPropertyByName("Organisations").ContentAsCollection.AssertCountIs(2).ElementAt(1).AssertTitleEquals("Beta");
        }
        public void RetrieveAllUsersForOrganisation()
        {
            var findUser = Users.GetAction("Find User By User Name");
            var test2    = findUser.InvokeReturnObject("Test2");
            var test3    = findUser.InvokeReturnObject("Test3");

            var findOrg = MockOrgs.GetAction("Find By Key");
            var epsilon = findOrg.InvokeReturnObject(5).AssertTitleEquals("Epsilon");

            test2.GetAction("Add Organisation").InvokeReturnObject(epsilon);
            test3.GetAction("Add Organisation").InvokeReturnObject(epsilon);

            var betaUsers = epsilon.GetAction("List Users").InvokeReturnCollection();

            betaUsers.AssertCountIs(2);
            Assert.AreEqual(test2, betaUsers.ElementAt(0));
            Assert.AreEqual(test3, betaUsers.ElementAt(1));
        }
        public void AddUserFromWithinAnOrganisationObject()
        {
            var findOrg = MockOrgs.GetAction("Find By Key");
            var gamma   = findOrg.InvokeReturnObject(3).AssertTitleEquals("Gamma");

            var addUserToGamma = gamma.GetAction("Add User");

            Assert.AreEqual(1, addUserToGamma.Parameters.Count());
            addUserToGamma.Parameters[0].AssertIsNamed("User Name").AssertIsMandatory();

            //Try with a non-existent UserName
            addUserToGamma.AssertIsInvalidWithParms("Test986597543");
            //addUserToGamma.AssertLastMessageIs("Either the UserName is unknown; or the user is already associated with another organisation");

            //Now execute correctly
            var test4 = addUserToGamma.InvokeReturnObject("Test4");

            test4.GetPropertyByName("Organisations").ContentAsCollection.AssertCountIs(1).ElementAt(0).AssertTitleEquals("Gamma");

            //Test that same user can't be added again
            addUserToGamma.AssertIsInvalidWithParms("Test4");
            addUserToGamma.AssertLastMessageContains("User is already associated with the organisation");
        }