Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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("----------------");
            }
        }