Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
jordimontana82 committed Mar 13, 2022
1 parent e9bf7d0 commit f92caf9
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 15 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
## [Unreleased]

### Fixed
### Changed

Populate default PrimaryEntityId in plugin execution context DynamicsValue/fake-xrm-easy#8
Populate OwningExtension in plugin execution context from default fake plugin context DynamicsValue/fake-xrm-easy#17
Populate PrimaryEntityId in plugin execution context from default fake plugin context DynamicsValue/fake-xrm-easy#8

## [2.0.1-rc1] - Initial release
32 changes: 19 additions & 13 deletions src/FakeXrmEasy.Plugins/XrmFakedPluginContextProperties.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,32 +127,38 @@ protected IExecutionContext GetFakedExecutionContext(XrmFakedPluginExecutionCont
return context;
}

/// <summary>
/// Populates plugin context properties from a given fake plugin context
/// </summary>
/// <param name="context"></param>
/// <param name="ctx"></param>
protected void PopulateExecutionContextPropertiesFromFakedContext(IExecutionContext context, XrmFakedPluginExecutionContext ctx)
{
var newUserId = Guid.NewGuid();

A.CallTo(() => context.BusinessUnitId).ReturnsLazily(() => ctx.BusinessUnitId);
A.CallTo(() => context.CorrelationId).ReturnsLazily(() => ctx.CorrelationId);
A.CallTo(() => context.Depth).ReturnsLazily(() => ctx.Depth <= 0 ? 1 : ctx.Depth);
A.CallTo(() => context.IsExecutingOffline).ReturnsLazily(() => ctx.IsExecutingOffline);
A.CallTo(() => context.InitiatingUserId).ReturnsLazily(() => ctx.InitiatingUserId == Guid.Empty ? newUserId : ctx.InitiatingUserId);
A.CallTo(() => context.InputParameters).ReturnsLazily(() => ctx.InputParameters);
A.CallTo(() => context.OutputParameters).ReturnsLazily(() => ctx.OutputParameters);
A.CallTo(() => context.PreEntityImages).ReturnsLazily(() => ctx.PreEntityImages);
A.CallTo(() => context.PostEntityImages).ReturnsLazily(() => ctx.PostEntityImages);
A.CallTo(() => context.IsExecutingOffline).ReturnsLazily(() => ctx.IsExecutingOffline);
A.CallTo(() => context.IsInTransaction).ReturnsLazily(() => ctx.IsInTransaction);
A.CallTo(() => context.IsolationMode).ReturnsLazily(() => ctx.IsolationMode);
A.CallTo(() => context.MessageName).ReturnsLazily(() => ctx.MessageName);
A.CallTo(() => context.Mode).ReturnsLazily(() => ctx.Mode);
A.CallTo(() => context.OrganizationName).ReturnsLazily(() => ctx.OrganizationName);
A.CallTo(() => context.OperationCreatedOn).ReturnsLazily(() => ctx.OperationCreatedOn);
A.CallTo(() => context.OrganizationId).ReturnsLazily(() => ctx.OrganizationId);
A.CallTo(() => context.InitiatingUserId).ReturnsLazily(() => ctx.InitiatingUserId == Guid.Empty ? newUserId : ctx.InitiatingUserId);
A.CallTo(() => context.UserId).ReturnsLazily(() => ctx.UserId == Guid.Empty ? newUserId : ctx.UserId);
A.CallTo(() => context.OrganizationName).ReturnsLazily(() => ctx.OrganizationName);
A.CallTo(() => context.OutputParameters).ReturnsLazily(() => ctx.OutputParameters);
A.CallTo(() => context.OwningExtension).ReturnsLazily(() => ctx.OwningExtension);
A.CallTo(() => context.PostEntityImages).ReturnsLazily(() => ctx.PostEntityImages);
A.CallTo(() => context.PreEntityImages).ReturnsLazily(() => ctx.PreEntityImages);
A.CallTo(() => context.PrimaryEntityId).ReturnsLazily(() => ctx.PrimaryEntityId);
A.CallTo(() => context.PrimaryEntityName).ReturnsLazily(() => ctx.PrimaryEntityName);
A.CallTo(() => context.SecondaryEntityName).ReturnsLazily(() => ctx.SecondaryEntityName);
A.CallTo(() => context.SharedVariables).ReturnsLazily(() => ctx.SharedVariables);
A.CallTo(() => context.BusinessUnitId).ReturnsLazily(() => ctx.BusinessUnitId);
A.CallTo(() => context.CorrelationId).ReturnsLazily(() => ctx.CorrelationId);
A.CallTo(() => context.OperationCreatedOn).ReturnsLazily(() => ctx.OperationCreatedOn);
A.CallTo(() => context.IsolationMode).ReturnsLazily(() => ctx.IsolationMode);
A.CallTo(() => context.IsInTransaction).ReturnsLazily(() => ctx.IsInTransaction);

A.CallTo(() => context.UserId).ReturnsLazily(() => ctx.UserId == Guid.Empty ? newUserId : ctx.UserId);

// Create message will pass an Entity as the target but this is not always true
// For instance, a Delete request will receive an EntityReference
if (ctx.InputParameters != null && ctx.InputParameters.ContainsKey("Target"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ public void Should_populate_plugin_execution_context_properties_from_default_plu
pluginContext.PostEntityImages = new EntityImageCollection();
pluginContext.OrganizationId = Guid.NewGuid();
pluginContext.OrganizationName = "SomeOrg";
pluginContext.OwningExtension = new EntityReference(SdkMessageProcessingStep.EntityLogicalName, Guid.NewGuid());
pluginContext.InitiatingUserId = Guid.NewGuid();
pluginContext.UserId = Guid.NewGuid();
pluginContext.SecondaryEntityName = "none";
Expand Down Expand Up @@ -200,6 +201,8 @@ public void Should_populate_plugin_execution_context_properties_from_default_plu
Assert.Equal(pluginContext.PostEntityImages, executionContext.PostEntityImages);
Assert.Equal(pluginContext.OrganizationId, executionContext.OrganizationId);
Assert.Equal(pluginContext.OrganizationName, executionContext.OrganizationName);
Assert.Equal(pluginContext.OwningExtension.Id, executionContext.OwningExtension.Id);
Assert.Equal(pluginContext.OwningExtension.LogicalName, executionContext.OwningExtension.LogicalName);
Assert.Equal(pluginContext.InitiatingUserId, executionContext.InitiatingUserId);
Assert.Equal(pluginContext.UserId, executionContext.UserId);
Assert.Equal(pluginContext.SecondaryEntityName, executionContext.SecondaryEntityName);
Expand Down

0 comments on commit f92caf9

Please sign in to comment.