Пример #1
0
        /// <summary>
        /// Workflows the tester.
        /// </summary>
        static void WorkflowTester()
        {
            FrameworkInitializer fi = new FrameworkInitializer();

            try
            {
                //DetailedLog.CreateLog("ContactCheckTester " + type.ToString());
                var workflowUserId           = Guid.NewGuid();
                var workflowCorrelationId    = Guid.NewGuid();
                var workflowInitiatingUserId = Guid.NewGuid();

                var service = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationService();

                var workflowContext = new Microsoft.Xrm.Sdk.Workflow.Fakes.StubIWorkflowContext();
                workflowContext.PrimaryEntityIdGet = () =>
                {
                    return(new Guid("13066B14-0B40-E511-8123-C4346BACFFD0"));
                };
                workflowContext.UserIdGet = () =>
                {
                    return(workflowUserId);
                };
                workflowContext.CorrelationIdGet = () =>
                {
                    return(workflowCorrelationId);
                };
                workflowContext.InitiatingUserIdGet = () =>
                {
                    return(workflowInitiatingUserId);
                };

                // ITracingService
                var tracingService = new Microsoft.Xrm.Sdk.Fakes.StubITracingService();
                tracingService.TraceStringObjectArray = (f, o) =>
                {
                    Debug.WriteLine(f, o);
                };

                // IOrganizationServiceFactory
                var factory = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationServiceFactory();
                factory.CreateOrganizationServiceNullableOfGuid = id =>
                {
                    return(fi.cube.XrmService);
                };


                Dictionary <string, object> arguments = new Dictionary <string, object>();
                arguments.Add("parameter", "test");

                Activity target  = (Activity) new WorkflowSample();
                var      invoker = new WorkflowInvoker(target);
                invoker.Extensions.Add <ITracingService>(() => tracingService);
                invoker.Extensions.Add <IWorkflowContext>(() => workflowContext);
                invoker.Extensions.Add <IOrganizationServiceFactory>(() => factory);
                IDictionary <string, object> outputs = invoker.Invoke(arguments);

                //Console.WriteLine("SendEmail : {0}, DuplicateContact : {1}, NumberOfDupes : {2}",
                //    outputs["SendEmail"], outputs["DuplicateContact"], outputs["NumberOfDupes"]);
            }
            catch (Exception ex)
            {
                fi.cube.LogSystem.CreateLog(ex.Message);
            }
            finally
            {
                fi.cube.LogSystem.CreateLog("----------------");
            }
        }
Пример #2
0
        public void ExecuteTest()
        {
            //
            // Arrange
            //
            Guid actualUserId             = Guid.NewGuid();
            Guid actualTeamId             = Guid.NewGuid();
            var  workflowUserId           = Guid.NewGuid();
            var  workflowCorrelationId    = Guid.NewGuid();
            var  workflowInitiatingUserId = Guid.NewGuid();

            // IOrganizationService
            var service = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationService();

            service.ExecuteOrganizationRequest = r =>
            {
                AddMembersTeamRequest request = r as AddMembersTeamRequest;
                actualUserId = request.MemberIds[0];
                actualTeamId = request.TeamId;
                return(new AddMembersTeamResponse());
            };

            // IWorkflowContext
            var workflowContext = new Microsoft.Xrm.Sdk.Workflow.Fakes.StubIWorkflowContext();

            workflowContext.UserIdGet = () =>
            {
                return(workflowUserId);
            };
            workflowContext.CorrelationIdGet = () =>
            {
                return(workflowCorrelationId);
            };
            workflowContext.InitiatingUserIdGet = () =>
            {
                return(workflowInitiatingUserId);
            };

            // ITracingService
            var tracingService = new Microsoft.Xrm.Sdk.Fakes.StubITracingService();

            tracingService.TraceStringObjectArray = (f, o) =>
            {
                Debug.WriteLine(f, o);
            };

            // IOrganizationServiceFactory
            var factory = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationServiceFactory();

            factory.CreateOrganizationServiceNullableOfGuid = id =>
            {
                return(service);
            };

            var expectedUserId = Guid.NewGuid();
            var expectedTeamId = Guid.NewGuid();

            AddMemberTeamActivity target = new AddMemberTeamActivity();

            using (ShimsContext.Create())
            {
                var fakeTarget = new DynamicsCRMUnitTest.Workflow.Fakes.ShimAddMemberTeamActivity(target);
                fakeTarget.IsMemberInTeamIOrganizationServiceGuidGuid = (svc, teamId, memberId) =>
                {
                    return(false);
                };

                var invoker = new WorkflowInvoker(target);
                invoker.Extensions.Add <ITracingService>(() => tracingService);
                invoker.Extensions.Add <IWorkflowContext>(() => workflowContext);
                invoker.Extensions.Add <IOrganizationServiceFactory>(() => factory);

                var inputs = new Dictionary <string, object>
                {
                    { "User", new EntityReference("systemuser", expectedUserId) },
                    { "Team", new EntityReference("team", expectedTeamId) }
                };

                //
                // Act
                //
                var outputs = invoker.Invoke(inputs);
            }

            //
            // Assert
            //
            Assert.AreEqual(expectedUserId, actualUserId);
            Assert.AreEqual(expectedTeamId, actualTeamId);
        }
Пример #3
0
        public void ExecuteTest()
        {
            //
            // Arrange
            //
            string unsecure = "unsecure";
            string secure   = "secure";
            Plugin target   = new Plugin(unsecure, secure);

            var accountId      = Guid.NewGuid();
            var previousNumber = 3;
            var expected       = 4;
            var actual         = 0;

            // IOrganizationService
            var service = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationService();

            service.RetrieveStringGuidColumnSet = (entityName, id, columns) =>
            {
                return(new Microsoft.Xrm.Sdk.Entity("account")
                {
                    Id = accountId,
                    Attributes = { { "numberofemployees", previousNumber } }
                });
            };
            service.UpdateEntity = (entity) =>
            {
                actual = entity.GetAttributeValue <int>("numberofemployees");
            };

            // IPluginExecutionContext
            var pluginExecutionContext = new Microsoft.Xrm.Sdk.Fakes.StubIPluginExecutionContext();

            pluginExecutionContext.StageGet             = () => { return(40); };
            pluginExecutionContext.MessageNameGet       = () => { return("Create"); };
            pluginExecutionContext.PrimaryEntityNameGet = () => { return("contact"); };
            pluginExecutionContext.PostEntityImagesGet  = () =>
            {
                return(new EntityImageCollection
                {
                    { "PostCreateImage", new Microsoft.Xrm.Sdk.Entity("contact")
                      {
                          Attributes = { { "parentcustomerid", new EntityReference("account", accountId) } }
                      } }
                });
            };

            // ITracingService
            var tracingService = new Microsoft.Xrm.Sdk.Fakes.StubITracingService();

            tracingService.TraceStringObjectArray = (f, o) =>
            {
                Debug.WriteLine(f, o);
            };

            // IOrganizationServiceFactory
            var factory = new Microsoft.Xrm.Sdk.Fakes.StubIOrganizationServiceFactory();

            factory.CreateOrganizationServiceNullableOfGuid = id =>
            {
                return(service);
            };

            // IServiceProvider
            var serviceProvider = new System.Fakes.StubIServiceProvider();

            serviceProvider.GetServiceType = t =>
            {
                if (t == typeof(IPluginExecutionContext))
                {
                    return(pluginExecutionContext);
                }
                else if (t == typeof(ITracingService))
                {
                    return(tracingService);
                }
                else if (t == typeof(IOrganizationServiceFactory))
                {
                    return(factory);
                }

                return(null);
            };

            //
            // Act
            //
            target.Execute(serviceProvider);

            //
            // Assert
            //
            Assert.AreEqual(expected, actual);
        }