Skip to content

Commit 05db9a3

Browse files
Add RetrieveCurrentOrganizationRequest executor - DynamicsValue/fake-xrm-easy#136
1 parent e7c8aab commit 05db9a3

File tree

4 files changed

+133
-0
lines changed

4 files changed

+133
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
## [2.5.0]
22

3+
### Added
4+
5+
- Add RetrieveCurrentOrganizationRequest executor - https://github.com/DynamicsValue/fake-xrm-easy/issues/136
6+
37
### Changed
48

59
- Increase code coverage for NavigateToNextEntityOrganizationRequest
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.Xrm.Sdk.Organization;
2+
3+
namespace FakeXrmEasy.Messages.ContextProperties
4+
{
5+
/// <summary>
6+
/// Stores information about the current organization details
7+
/// </summary>
8+
public class CurrentOrganizationDetails
9+
{
10+
/// <summary>
11+
/// The organization details
12+
/// </summary>
13+
public OrganizationDetail Details { get; set; }
14+
}
15+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using System;
2+
using FakeXrmEasy.Abstractions;
3+
using FakeXrmEasy.Abstractions.FakeMessageExecutors;
4+
using FakeXrmEasy.Messages.ContextProperties;
5+
using Microsoft.Crm.Sdk.Messages;
6+
using Microsoft.Xrm.Sdk;
7+
using Microsoft.Xrm.Sdk.Organization;
8+
9+
namespace FakeXrmEasy.FakeMessageExecutors
10+
{
11+
/// <summary>
12+
/// Implements an executor for the RetrieveCurrentOrganizationRequest: https://learn.microsoft.com/en-us/dotnet/api/microsoft.crm.sdk.messages.retrievecurrentorganizationrequest?view=dataverse-sdk-latest
13+
/// </summary>
14+
public class RetrieveCurrentOrganizationRequestExecutor: IFakeMessageExecutor
15+
{
16+
public bool CanExecute(OrganizationRequest request)
17+
{
18+
return request is RetrieveCurrentOrganizationRequest;
19+
}
20+
21+
public OrganizationResponse Execute(OrganizationRequest request, IXrmFakedContext ctx)
22+
{
23+
OrganizationDetail orgDetail = null;
24+
if (ctx.HasProperty<CurrentOrganizationDetails>())
25+
{
26+
orgDetail = ctx.GetProperty<CurrentOrganizationDetails>().Details;
27+
}
28+
29+
if (orgDetail == null)
30+
{
31+
orgDetail = new OrganizationDetail()
32+
{
33+
Endpoints =
34+
{
35+
{ EndpointType.OrganizationDataService, "http://baseUrl/XrmServices/2011/OrganizationDataService.svc" }
36+
}
37+
};
38+
}
39+
return new RetrieveCurrentOrganizationResponse()
40+
{
41+
Results = new ParameterCollection
42+
{
43+
{ "Detail", orgDetail }
44+
}
45+
};
46+
}
47+
48+
public Type GetResponsibleRequestType()
49+
{
50+
return typeof(RetrieveCurrentOrganizationRequest);
51+
}
52+
}
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
using System;
2+
using FakeXrmEasy.Messages.ContextProperties;
3+
using Microsoft.Crm.Sdk.Messages;
4+
using Microsoft.Xrm.Sdk.Organization;
5+
using Xunit;
6+
7+
namespace FakeXrmEasy.Messages.Tests.FakeMessageExecutors.RetrieveCurrentOrganizationRequestTests
8+
{
9+
public class RetrieveCurrentOrganizationRequestTests: FakeXrmEasyTestsBase
10+
{
11+
[Fact]
12+
public void Should_retrieve_current_organization_details_if_none_was_set_by_default()
13+
{
14+
var response = _service.Execute(new RetrieveCurrentOrganizationRequest());
15+
Assert.NotNull(response);
16+
17+
var orgDetail = (response as RetrieveCurrentOrganizationResponse).Detail;
18+
Assert.NotNull(orgDetail);
19+
}
20+
21+
[Fact]
22+
public void Should_retrieve_current_organization_details()
23+
{
24+
var currentOrgDetails = new CurrentOrganizationDetails()
25+
{
26+
Details = new OrganizationDetail()
27+
{
28+
Geo = "Geo",
29+
EnvironmentId = Guid.NewGuid().ToString(),
30+
State = OrganizationState.Enabled,
31+
FriendlyName = "OrgFriendlyName",
32+
UniqueName = "UniqueName",
33+
UrlName = "UrlName",
34+
OrganizationId = Guid.NewGuid(),
35+
TenantId = Guid.NewGuid().ToString(),
36+
OrganizationVersion = "0.0.0.0",
37+
Endpoints =
38+
{
39+
{ EndpointType.OrganizationDataService, "http://localhost/XrmService/2011/OrganizationData.svc" }
40+
}
41+
}
42+
};
43+
44+
_context.SetProperty(currentOrgDetails);
45+
46+
var response = _service.Execute(new RetrieveCurrentOrganizationRequest());
47+
Assert.NotNull(response);
48+
49+
var orgDetail = (response as RetrieveCurrentOrganizationResponse).Detail;
50+
Assert.Equal(currentOrgDetails.Details.EnvironmentId, orgDetail.EnvironmentId);
51+
Assert.Equal(currentOrgDetails.Details.Geo, orgDetail.Geo);
52+
Assert.Equal(currentOrgDetails.Details.State, orgDetail.State);
53+
Assert.Equal(currentOrgDetails.Details.FriendlyName, orgDetail.FriendlyName);
54+
Assert.Equal(currentOrgDetails.Details.UniqueName, orgDetail.UniqueName);
55+
Assert.Equal(currentOrgDetails.Details.UrlName, orgDetail.UrlName);
56+
Assert.Equal(currentOrgDetails.Details.OrganizationId, orgDetail.OrganizationId);
57+
Assert.Equal(currentOrgDetails.Details.TenantId, orgDetail.TenantId);
58+
Assert.Equal(currentOrgDetails.Details.OrganizationVersion, orgDetail.OrganizationVersion);
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)