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); }
/// <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("----------------"); } }