Пример #1
0
        public void CreateAccountWithInactiveContactOwner()
        {
            // Define the Contact Owner
            var contactOwner = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = SystemUserDefinition.EntityName,
                Attributes  = { { SystemUserDefinition.Columns.IsDisabled, true } }
            };

            // Define the Account's Creator
            var accountCreator = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = SystemUserDefinition.EntityName,
                Attributes  = { { SystemUserDefinition.Columns.IsDisabled, false } }
            };

            // Define the Principal Contact
            var principalContact = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = ContactDefinition.EntityName,
                Attributes  = { { ContactDefinition.Columns.OwnerId, contactOwner.ToEntityReference() }, }
            };

            // Define Account
            var accountEntity = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = AccountDefinition.EntityName,
                Attributes  =
                {
                    { AccountDefinition.Columns.OwnerId,          accountCreator.ToEntityReference()   },
                    { AccountDefinition.Columns.PrimaryContactId, principalContact.ToEntityReference() }
                }
            };

            // Create the plugin context
            InputParameters.Add(global::Plugins.InputParameters.Target, accountEntity);
            Context.PrimaryEntityId = accountEntity.Id;

            // Initialise the records so that they can be retrieved from the database
            FakedContext.Initialize(new List <Entity> {
                accountEntity, accountCreator, principalContact, contactOwner
            });
            try
            {
                // Execute the plugin
                ExecutePlugin();

                // This test should go to catch either it should raise en error
                Assert.True(1 == 2);
            }
            catch (InvalidPluginExecutionException ex)
            {
                Assert.True(ex.Message == "Le propriétaire du contact principal est désactivé. Veuillez contacter votre administrateur.");
            }
        }
        public override void Test(Action <IXrmContext, IKernel> testCriteria)
        {
            TCodeActivity codeActivityInstance = (TCodeActivity)Activator.CreateInstance(typeof(TCodeActivity), FakedServices, SetupMockServices);

            Assert.DoesNotThrow(() => FakedContext.ExecuteCodeActivity(FakedExecutionContext, null, codeActivityInstance));
            testCriteria(FakedContext, FakedServices);
            FakedServices.RemoveHttpMock();
        }
Пример #3
0
        public override void Test(Action <IXrmContext, IKernel> testCriteria)
        {
            TPlugin pluginInstance = (TPlugin)Activator.CreateInstance(typeof(TPlugin), FakedServices, SetupMockServices);

            Assert.DoesNotThrow(() => FakedContext.ExecutePluginWith(FakedExecutionContext, pluginInstance));
            testCriteria(FakedContext, FakedServices);
            FakedServices.RemoveHttpMock();
        }
Пример #4
0
        public void CreateAccountWithactiveContactOwner()
        {
            // Define the Contact Owner
            var contactOwner = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = SystemUserDefinition.EntityName,
                Attributes  = { { SystemUserDefinition.Columns.IsDisabled, false } }
            };

            // Define the Account's Creator
            var accountCreator = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = SystemUserDefinition.EntityName,
                Attributes  = { { SystemUserDefinition.Columns.IsDisabled, false } }
            };

            // Define the Principal Contact
            var principalContact = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = ContactDefinition.EntityName,
                Attributes  = { { ContactDefinition.Columns.OwnerId, contactOwner.ToEntityReference() } }
            };

            // Define Account
            var accountEnitity = new Entity()
            {
                Id          = Guid.NewGuid(),
                LogicalName = AccountDefinition.EntityName,
                Attributes  =
                {
                    { AccountDefinition.Columns.OwnerId,          accountCreator.ToEntityReference()   },
                    { AccountDefinition.Columns.PrimaryContactId, principalContact.ToEntityReference() }
                }
            };

            // Create the plugin context
            InputParameters.Add(global::Plugins.InputParameters.Target, accountEnitity);
            Context.PrimaryEntityId = accountEnitity.Id;

            // Initialise the records so that they can be retrieved from the database
            FakedContext.Initialize(new List <Entity> {
                accountEnitity, accountCreator, principalContact, contactOwner
            });

            // Execute the plugin
            ExecutePlugin();

            var newOwnerRef = accountEnitity.GetAttributeValue <EntityReference>(AccountDefinition.Columns.OwnerId);

            // Assert that the target contains a new attribute
            Assert.True(newOwnerRef.Id == contactOwner.Id);
        }
Пример #5
0
        protected PluginTest(ITestOutputHelper output)
        {
            var type       = output.GetType();
            var testMember = type.GetField("test", BindingFlags.Instance | BindingFlags.NonPublic);

            if (testMember == null)
            {
                throw new Exception("The passed ITestOutputHelper is not correctly initialized");
            }
            var test = (ITest)testMember.GetValue(output);

            var method = test.TestCase.TestMethod.Method;

            var contextAttribute = method.GetCustomAttributes(typeof(PluginContextAttribute).AssemblyQualifiedName).FirstOrDefault();

            if (contextAttribute == null)
            {
                throw new Exception("Plugin Test should provide the corresponding plugin context, define a [PluginContext(...)] attribute on your test");
            }

            var stage      = contextAttribute.GetNamedArgument <Stages>(nameof(PluginContextAttribute.Stage));
            var message    = contextAttribute.GetNamedArgument <Messages>(nameof(PluginContextAttribute.Message));
            var mode       = contextAttribute.GetNamedArgument <Modes>(nameof(PluginContextAttribute.Mode));
            var entityName = contextAttribute.GetNamedArgument <string>(nameof(PluginContextAttribute.EntityName));

            FakedService = FakedContext.GetOrganizationService();

            Context                   = FakedContext.GetDefaultPluginContext();
            Context.Stage             = stage.ToInt();
            Context.MessageName       = message.ToString();
            Context.Mode              = mode.ToInt();
            Context.PrimaryEntityName = entityName;

            Context.InputParameters = InputParameters.Collection;


            InitializeMetadata();
        }
Пример #6
0
 protected void ExecutePlugin()
 {
     FakedContext.ExecutePluginWith <TPlugin>(Context);
 }