예제 #1
0
        public void LocalCrmDatabaseOrganizationServiceExecuteTests_RetrieveAttributeRequest()
        {
            AttributeMetadata GetMetadata(string field)
            {
                return(((RetrieveAttributeResponse)GetService().Execute(new RetrieveAttributeRequest
                {
                    EntityLogicalName = Account.EntityLogicalName,
                    LogicalName = field
                })).AttributeMetadata);
            }

            TestInitializer.InitializeTestSettings();

            var response = GetMetadata(Account.Fields.AccountCategoryCode);

            Assert.AreEqual(AttributeTypeCode.Picklist, response.AttributeType);
            Assert.AreEqual(2, ((PicklistAttributeMetadata)response).OptionSet.Options.Count);
            Assert.AreEqual(AttributeTypeCode.String, GetMetadata(Account.Fields.AccountNumber).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Uniqueidentifier, GetMetadata(Account.Fields.Id).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Double, GetMetadata(Account.Fields.Address1_Longitude).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Decimal, GetMetadata(Account.Fields.ExchangeRate).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Boolean, GetMetadata(Account.Fields.FollowEmail).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Integer, GetMetadata(Account.Fields.ImportSequenceNumber).AttributeType);
            Assert.AreEqual(AttributeTypeCode.Lookup, GetMetadata(Account.Fields.ParentAccountId).AttributeType);
        }
        private void Test(IRegisteredEventsPlugin plugin)
        {
            //
            // Arrange
            //
            TestInitializer.InitializeTestSettings();
            var contact = new Contact {
                MobilePhone = "A-1-B-2-C-3"
            };                                                                                                                       // Create Contact to use as target
            var context = new PluginExecutionContextBuilder().                                                                       // Create Context Which is required by the service provider, which is required by the plugin
                          WithRegisteredEvent(plugin.RegisteredEvents.First(e => e.EntityLogicalName == Contact.EntityLogicalName)). // Specifies the plugin event to use in the context
                          WithTarget(contact).Build();                                                                               // Sets the Target
            var provider = new ServiceProviderBuilder().
                           WithContext(context).Build();

            //
            // Act
            //
            plugin.Execute(provider); // Executes the Plugin

            //
            // Assert
            //

            Assert.AreEqual("123", contact.MobilePhone);
        }
예제 #3
0
        public void LocalCrmTests_Crud_NestedJoins()
        {
            TestInitializer.InitializeTestSettings();
            var service = LocalCrmDatabaseOrganizationService.CreateOrganizationService(LocalCrmDatabaseInfo.Create <CrmContext>(Guid.NewGuid().ToString()));

            var user1 = new Id <SystemUser>(Guid.NewGuid())
            {
                Entity = { FirstName = "Stan", }
            };
            var user2 = new Id <SystemUser>(Guid.NewGuid())
            {
                Entity = { FirstName = "Steve" }
            };
            var account = new Id <Account>(Guid.NewGuid())
            {
                Entity = { Name = "Marvel Comics" }
            };
            var contact1 = new Id <Contact>(Guid.NewGuid())
            {
                Entity = { FirstName = "Bruce", CreatedOnBehalfBy = user1, ModifiedOnBehalfBy = user2 }
            };
            var contact2 = new Id <Contact>(Guid.NewGuid())
            {
                Entity = { FirstName = "Peter", CreatedOnBehalfBy = user2, ModifiedOnBehalfBy = user1 }
            };

            var builder = new DLaBCrmEnvironmentBuilder().
                          WithChildEntities(account, contact1, contact2).
                          WithEntities(user1, user2);

            builder.Create(service);

            var temp = service.GetEntity(contact1);

            Assert.AreEqual(account.EntityReference, temp.ParentCustomerId);
            Assert.AreEqual(user1.EntityReference, temp.CreatedOnBehalfBy);
            Assert.AreEqual(user2.EntityReference, temp.ModifiedOnBehalfBy);
            temp = service.GetEntity(contact2);
            Assert.AreEqual(account.EntityReference, temp.ParentCustomerId);
            Assert.AreEqual(user1.EntityReference, temp.ModifiedOnBehalfBy);
            Assert.AreEqual(user2.EntityReference, temp.CreatedOnBehalfBy);

            var qe           = QueryExpressionFactory.Create <Account>(a => new { a.Name });
            var contactLink  = qe.AddLink <Contact>(Account.Fields.Id, Contact.Fields.ParentCustomerId, c => new { c.FirstName, c.Id });
            var createdLink  = contactLink.AddLink <SystemUser>(Contact.Fields.CreatedOnBehalfBy, SystemUser.Fields.Id, u => new { u.FirstName, u.Id });
            var modifiedLink = contactLink.AddLink <SystemUser>(Contact.Fields.ModifiedOnBehalfBy, SystemUser.Fields.Id, u => new { u.FirstName, u.Id });

            contactLink.EntityAlias  = "ContactLink";
            createdLink.EntityAlias  = "CreatedLink";
            modifiedLink.EntityAlias = "ModifiedLink";
            var results = service.RetrieveMultiple(qe);

            Assert.AreEqual(2, results.Entities.Count);
            foreach (var entity in results.Entities)
            {
                Assert.IsTrue(entity.Attributes.ContainsKey("CreatedLink.firstname"));
                Assert.IsTrue(entity.Attributes.ContainsKey("ModifiedLink.firstname"));
            }
        }
예제 #4
0
        public void AssumedEntities_Load_Should_LoadAssumedEntities()
        {
            TestInitializer.InitializeTestSettings();
            var service     = TestBase.GetOrganizationService();
            var assumptions = new AssumedEntities();

            assumptions.Load(service, new AccountDefault(), new ContactDefault());
            AssertCrm.Exists(service, assumptions.Get <AccountDefault>());
            AssertCrm.Exists(service, assumptions.Get <ContactDefault>());
        }
예제 #5
0
        public void LocalCrmDatabaseOrganizationServiceExecuteTests_RetrieveEntityRequest()
        {
            TestInitializer.InitializeTestSettings();
            var response = (RetrieveEntityResponse)GetService().Execute(new RetrieveEntityRequest
            {
                EntityFilters         = EntityFilters.Entity,
                LogicalName           = Contact.EntityLogicalName,
                RetrieveAsIfPublished = true
            });

            Assert.AreEqual(Contact.PrimaryNameAttribute, response.EntityMetadata.PrimaryNameAttribute);
        }
예제 #6
0
        /// <summary>
        /// Settings required to connect to CRM.
        /// </summary>
        private void SettingUpConnectingToCrm()
        {
            TestSettings                                     // Test Settings class for XrmUnitTest Framework
            .UserTestConfigPath                              // Defines the path to a configuration file
            .Configure(new PatherFinderProjectOfType(        // Defines that path, by the root of the project with the given type
                           typeof(MsTestProvider),           // The type to find the project
                           "UnitTestSettings.user.config")); // The name of the config file in the root of the project

            TestSettings.UserTestConfigPath.Configure(
                new PatherFinderProjectOfType(
                    typeof(TestMethodClassBase),
                    "UnitTestSettings.user.config"));

            // Suggest initializing all of the Test Settings in a single place:
            TestInitializer.InitializeTestSettings();
        }
예제 #7
0
        public void SyncContactToAccount_UpdateContactAddress_Should_UpdateAccountAddress_Dirty()
        {
            //
            // Arrange
            //
            TestInitializer.InitializeTestSettings();
            var service   = TestBase.GetOrganizationService();
            var contactId = service.Create(new Contact());
            var accountId = service.Create(new Account
            {
                PrimaryContactId = new EntityReference(Contact.EntityLogicalName, contactId)
            });

            try
            {
                var contact = new Contact
                {
                    Id             = contactId,
                    Address1_Line1 = "742 Evergreen Terrace"
                };

                var plugin  = new SyncContactToAccount();
                var context = new PluginExecutionContextBuilder().
                              WithFirstRegisteredEvent(plugin).
                              WithTarget(contact).Build();
                var provider = new ServiceProviderBuilder(service, context, new DebugLogger()).Build();

                //
                // Act
                //
                plugin.Execute(provider);

                //
                // Assert
                //
                var account = service.GetEntity <Account>(accountId);
                Assert.AreEqual(contact.Address1_Line1, account.Address1_Line1);
            }
            finally
            {
                //
                // Clean up
                //
                service.Delete(Account.EntityLogicalName, accountId);
                service.Delete(Contact.EntityLogicalName, contactId);
            }
        }
예제 #8
0
        public void CreateGuidActivity_Request_Should_CreateGuid()
        {
            //
            // Arrange
            //
            TestInitializer.InitializeTestSettings();
            var workflow = new CreateGuidActivity();

            //
            // Act
            //
            var results = new WorkflowInvokerBuilder(workflow).
                          // WithService(service).
                          InvokeWorkflow();

            //
            // Assert
            //
            Assert.IsTrue(Guid.TryParse(results.First().Value.ToString(), out _));
        }
 public void IntializeTestSettings()
 {
     TestInitializer.InitializeTestSettings();
 }