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