Esempio n. 1
0
        public void linkContact()
        {
            #region 1. Setup / Arrange
            var orgServiceMock = new Mock <IOrganizationService>();
            var orgService     = orgServiceMock.Object;
            var orgTracingMock = new Mock <ITracingService>();
            var orgTracing     = orgTracingMock.Object;

            #region Opportunity EntityCollection
            var OpportunityCollection = new EntityCollection
            {
                EntityName = "opportunity",
                Entities   =
                {
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "opportunity",
                        EntityState = EntityState.Changed,
                        Attributes  = new AttributeCollection
                        {
                            { "parentcontactid",   new EntityReference("contact", Guid.NewGuid()) },
                            { "parentaccountid",   new EntityReference("account", Guid.NewGuid()) },
                            { "originatingleadid", new EntityReference("lead",    Guid.NewGuid()) },
                        }
                    },
                    new Entity
                    {
                        Id          = Guid.NewGuid(),
                        LogicalName = "opportunity",
                        EntityState = EntityState.Changed,
                        Attributes  = new AttributeCollection
                        {
                            { "parentcontactid",   new EntityReference("contact", Guid.NewGuid()) },
                            { "parentaccountid",   new EntityReference("account", Guid.NewGuid()) },
                            { "originatingleadid", new EntityReference("lead",    Guid.NewGuid()) },
                        }
                    }
                }
            };
            #endregion

            #region Contact EntityCollection
            var ContactCollection = new EntityCollection
            {
                EntityName = "contact",
                Entities   =
                {
                    new Entity
                    {
                        Id          = OpportunityCollection.Entities[0].GetAttributeValue <EntityReference>("parentcontactid").Id,
                        LogicalName = "contact",
                    },
                    new Entity
                    {
                        Id          = OpportunityCollection.Entities[1].GetAttributeValue <EntityReference>("parentcontactid").Id,
                        LogicalName = "contact",
                    }
                }
            };
            #endregion

            #region Lead EntityCollection
            var LeadCollection = new EntityCollection
            {
                EntityName = "lead",
                Entities   =
                {
                    new Entity
                    {
                        Id          = OpportunityCollection.Entities[0].GetAttributeValue <EntityReference>("originatingleadid").Id,
                        LogicalName = "lead",
                        Attributes  = new AttributeCollection
                        {
                            { "parentcontactid", new EntityReference("contact",  Guid.NewGuid()) },
                            { "parentaccountid", new EntityReference("contact",  Guid.NewGuid()) },
                            { "customerid",      new EntityReference("customer", Guid.NewGuid()) }
                        }
                    },
                    new Entity
                    {
                        Id          = OpportunityCollection.Entities[1].GetAttributeValue <EntityReference>("originatingleadid").Id,
                        LogicalName = "lead",
                        Attributes  = new AttributeCollection
                        {
                            { "parentcontactid", new EntityReference("contact",  Guid.NewGuid()) },
                            { "parentaccountid", new EntityReference("contact",  Guid.NewGuid()) },
                            { "customerid",      new EntityReference("customer", Guid.NewGuid()) }
                        }
                    }
                }
            };
            #endregion

            orgServiceMock.Setup((service => service.RetrieveMultiple(
                                      It.Is <QueryExpression>(expression => expression.EntityName == ContactCollection.EntityName)
                                      ))).Returns(ContactCollection);
            #endregion

            #region 2. Call/Action
            OpportunityHandler OpportunityHandler = new OpportunityHandler(orgService, orgTracing);
            OpportunityHandler.linkCustomer(OpportunityCollection.Entities[0], orgService, orgTracing);
            #endregion

            #region 3. Verify
            Assert.AreEqual(OpportunityCollection.Entities[0].GetAttributeValue <EntityReference>("parentcontactid").Id, LeadCollection.Entities[0].GetAttributeValue <EntityReference>("parentcontactid").Id);
            Assert.AreEqual(OpportunityCollection.Entities[0].GetAttributeValue <EntityReference>("parentcontactid").Id, LeadCollection.Entities[0].GetAttributeValue <EntityReference>("customerid").Id);
            //  Assert.AreEqual(ContactCollection.Entities[0].Id, LeadCollection.Entities[0].GetAttributeValue<EntityReference>("parentcontactid").Id);
            #endregion
        }