Skip to content

Commit

Permalink
DP-550 - Test coverage added
Browse files Browse the repository at this point in the history
  • Loading branch information
maciej-goaco committed Oct 10, 2024
1 parent 388f48d commit 9a00504
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 8 deletions.
28 changes: 27 additions & 1 deletion Services/CO.CDP.DataSharing.WebApi.Tests/EntityFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ internal static PersistenceForms.SharedConsent GetSharedConsent(int organisation
return sharedConsent;
}

internal static List<ConnectedEntity> GetMockAssociatedPersons()
internal static List<ConnectedEntity> GetMockIndividuals()
{
var mockPersons = new List<ConnectedEntity>
{
Expand Down Expand Up @@ -134,6 +134,32 @@ internal static List<ConnectedEntity> GetMockAdditionalEntities()
return mockEntities;
}

internal static List<ConnectedEntity> GetMockTrustsOrTrustees()
{
var mockPersons = new List<ConnectedEntity>
{
new ConnectedEntity
{
Guid = Guid.NewGuid(),
EntityType = ConnectedEntityType.TrustOrTrustee,
IndividualOrTrust = new ConnectedEntity.ConnectedIndividualTrust
{
Id = 2,
FirstName = "John",
LastName = "Smith",
Category = ConnectedPersonCategory.PersonWithSignificantControl,
CreatedOn = DateTimeOffset.UtcNow,
UpdatedOn = DateTimeOffset.UtcNow
},
SupplierOrganisation = GivenOrganisation(),
CreatedOn = DateTimeOffset.UtcNow,
UpdatedOn = DateTimeOffset.UtcNow
}
};

return mockPersons;
}

internal static Organisation.LegalForm GetLegalForm()
{
var mockLegalForm = new Organisation.LegalForm
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,17 +86,21 @@ public async Task ItReturnsMappedSupplierInformationWhenSharedConsentIsFound()

_shareCodeRepository.Setup(repo => repo.GetByShareCode(shareCode)).ReturnsAsync(sharedConsent);

var mockAssociatedPersons = EntityFactory.GetMockAssociatedPersons();
var mockIndividuals = EntityFactory.GetMockIndividuals();
var mockAdditionalEntities = EntityFactory.GetMockAdditionalEntities();
var mockTrustOrTrustees = EntityFactory.GetMockTrustsOrTrustees();
var mockLegalForm = EntityFactory.GetLegalForm();
var mockOperationTypes = EntityFactory.GetOperationTypes();

_organisationRepository.Setup(repo => repo.GetConnectedIndividualTrusts(organisationId))
.ReturnsAsync(mockAssociatedPersons);
.ReturnsAsync(mockIndividuals);

_organisationRepository.Setup(repo => repo.GetConnectedOrganisations(organisationId))
.ReturnsAsync(mockAdditionalEntities);

_organisationRepository.Setup(repo => repo.GetConnectedTrustsOrTrustees(organisationId))
.ReturnsAsync(mockTrustOrTrustees);

_organisationRepository.Setup(repo => repo.GetLegalForm(organisationId))
.ReturnsAsync(mockLegalForm);

Expand Down Expand Up @@ -127,8 +131,9 @@ private void AssertAddress(Address? address)
private void AssertAssociatedPersons(IEnumerable<AssociatedPerson>? associatedPersons)
{
associatedPersons.Should().NotBeNull();
associatedPersons.Should().HaveCount(1);
associatedPersons.Should().HaveCount(2);
associatedPersons?.First().Name.Should().Be("John Doe");
associatedPersons?.Should().Contain(x => x.Name == "John Smith");
}

private void AssertAdditionalEntities(IEnumerable<OrganisationReference>? additionalEntities)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,50 @@ public async Task GetConnectedOrganisations_WhenNoConnectedEntitiesExist_Returns
result.Should().BeEmpty();
}

[Fact]
public async Task GetConnectedTrustsOrTrustees_WhenConnectedEntitiesExist_ReturnsConnectedEntities()
{
using var repository = OrganisationRepository();

var supplierOrganisation = GivenOrganisation();
var connectedEntity = GivenConnectedTrustsOrTrustees(supplierOrganisation);

using var context = postgreSql.OrganisationInformationContext();
await context.Organisations.AddAsync(supplierOrganisation);
await context.ConnectedEntities.AddAsync(connectedEntity);
await context.SaveChangesAsync();

var result = await repository.GetConnectedTrustsOrTrustees(supplierOrganisation.Id);

result.Should().NotBeEmpty();
result.Should().HaveCount(1);
result.Should().Contain(x => x.EntityType == ConnectedEntity.ConnectedEntityType.TrustOrTrustee);

var organisation = result.First().Organisation;
organisation.Should().BeEquivalentTo(connectedEntity.Organisation, options =>
options
.Using<DateTimeOffset>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, TimeSpan.FromMilliseconds(100)))
.WhenTypeIs<DateTimeOffset>()
);
}

[Fact]
public async Task GetConnectedTrustsOrTrustees_WhenNoConnectedEntitiesExist_ReturnsEmptyList()
{
using var repository = OrganisationRepository();

var organisationId = 1;
var organisation = GivenOrganisation();

using var context = postgreSql.OrganisationInformationContext();
await context.Organisations.AddAsync(organisation);
await context.SaveChangesAsync();

var result = await repository.GetConnectedOrganisations(organisationId);

result.Should().BeEmpty();
}

[Fact]
public async Task GetLegalForm_WhenNoLegalFormExists_ReturnNull()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,10 +240,10 @@ public static ConnectedEntity GivenConnectedOrganisation(
Guid? organisationId = null
)
{
var connectedOrganisation = new ConnectedEntity.ConnectedOrganisation
var connectedOrganisation = new ConnectedOrganisation
{
Id = 1,
Category = (ConnectedEntity.ConnectedOrganisationCategory)category,
Category = category,
Name = name,
OrganisationId = organisationId,
CreatedOn = DateTimeOffset.UtcNow,
Expand All @@ -268,12 +268,13 @@ public static ConnectedEntity GivenConnectedIndividualTrust(
ConnectedPersonCategory category = ConnectedPersonCategory.PersonWithSignificantControl
)
{
var individualTrust = new ConnectedEntity.ConnectedIndividualTrust
var individualTrust = new ConnectedIndividualTrust
{
Id = 1,
FirstName = firstName,
LastName = lastName,
Category = (ConnectedEntity.ConnectedPersonCategory)category,
Category = category,
ConnectedType = ConnectedPersonType.Individual,
CreatedOn = DateTimeOffset.UtcNow,
UpdatedOn = DateTimeOffset.UtcNow
};
Expand All @@ -289,5 +290,32 @@ public static ConnectedEntity GivenConnectedIndividualTrust(
};
}

public static ConnectedEntity GivenConnectedTrustsOrTrustees(
Organisation supplierOrganisation,
string firstName = "John",
string lastName = "Doe",
ConnectedPersonCategory category = ConnectedPersonCategory.PersonWithSignificantControl
)
{
var trustOrTrustee = new ConnectedIndividualTrust
{
Id = 1,
FirstName = firstName,
LastName = lastName,
Category = category,
ConnectedType = ConnectedPersonType.TrustOrTrustee,
CreatedOn = DateTimeOffset.UtcNow,
UpdatedOn = DateTimeOffset.UtcNow
};

return new ConnectedEntity
{
Guid = Guid.NewGuid(),
EntityType = (ConnectedEntity.ConnectedEntityType)ConnectedEntityType.TrustOrTrustee,
IndividualOrTrust = trustOrTrustee,
SupplierOrganisation = supplierOrganisation,
CreatedOn = DateTimeOffset.UtcNow,
UpdatedOn = DateTimeOffset.UtcNow
};
}
}

0 comments on commit 9a00504

Please sign in to comment.