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(); }
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(); }
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); }
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(); }
protected void ExecutePlugin() { FakedContext.ExecutePluginWith <TPlugin>(Context); }