public void TestPolicySupportsActionsTrue()
        {
            IResourceManager resourceManager = ResourceManagerFactory.CreateResourceManager();
            resourceManager.ResourceActions.Clear();
            AddEditActionsForm addEditActionsForm = new AddEditActionsForm(resourceManager);
            // The "User" has selected an SMTP channel of some sort probably a "ClientEmail" PolicyType
            addEditActionsForm.Channel = new PolicyChannel(Guid.NewGuid(), new NonTranslateableLanguageItem("SMTP channel"), ChannelType.SMTP);
            // The only action we have available in our resource list is an Http channel action.
            MockResourceAction mockHttpContentChannelAction = new MockResourceAction("mockHttpContentChannelAction", true);
            mockHttpContentChannelAction.SupportedChannelCapabilities = new ChannelType[] { ChannelType.HTTP };
            resourceManager.ResourceActions.Add(mockHttpContentChannelAction);

            Assert.IsTrue(addEditActionsForm.PolicySupportsActions(), "Policy should support action as the ChannelType is Http which comes under an ClientEmail PolicyType (SMTP)");
        }
        public void TestCanLoadAction()
        {
            AddEditActionsForm addEditActionsForm = new AddEditActionsForm(null);
            IPolicyObjectCollection<IAction> currentlyLoadedActions = new PolicyObjectCollection<IAction>();

            //Test that we can load an action when there are none currently active in the cell.
            addEditActionsForm.CurrentActions = new PolicyObjectCollection<IAction>();
            MockResourceAction mockAction1 = new MockResourceAction("TestAction", true);
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, mockAction1), "Expected to be able to load an action when the current list is empty");

            MockResourceAction nonCoExistableAction = new MockResourceAction("NoCoExistableAction", false);
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, nonCoExistableAction), "Expected to be able to load an action when the current list is empty when coexist = false");

            //Test that we cannot load actions into a non empty cell when co-exist = false
            IPolicyObjectCollection<IAction> actions = new PolicyObjectCollection<IAction>();
            actions.Add(new MockAction("TestAction"));
            addEditActionsForm.CurrentActions = actions;
            Assert.IsFalse(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("OtherTestAction", false)), "Should not be able to load any other actions if the action you are trying to add has CoExist = false");

            //Test that we can load another action into the cell when co-exist = true
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("OtherTestAction", true)), "Should be able to load other actions if the action you are trying to add has CoExist = true");

            //Test that we cannot load two actions of the same type into any cell.
            Assert.IsFalse(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("TestAction", true)), "Should not be able to add an action of this class because the current list already contains one");

            //Test that we can add actions of different types with no problem
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("ActionA", true)), "If the class name is unique to the list and co-exist is true, should be able to add this item.");
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("ActionB", true)), "If the class name is unique to the list and co-exist is true, should be able to add this item.");
            Assert.IsTrue(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("ActionC", true)), "If the class name is unique to the list and co-exist is true, should be able to add this item.");

            actions.Add(new MockAction("ActionC"));
            addEditActionsForm.CurrentActions = actions;
            Assert.IsFalse(CanLoadActionHelper(addEditActionsForm, new MockResourceAction("ActionC", true)), "Should not be able to add an action of this class because the current list already contains one");
            
        }