Skip to content
This repository has been archived by the owner on Oct 16, 2024. It is now read-only.

Commit

Permalink
Merge pull request #633 from DFE-Digital/feature/v4-academies-api-upg…
Browse files Browse the repository at this point in the history
…rade

Feature/v4 academies api upgrade
  • Loading branch information
paullocknimble authored Nov 27, 2023
2 parents 994ecc8 + 3336480 commit 8c22ede
Show file tree
Hide file tree
Showing 42 changed files with 362 additions and 365 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<ItemGroup>
<ProjectReference Include="..\Dfe.PrepareTransfers.Data.TRAMS\Dfe.PrepareTransfers.Data.TRAMS.csproj" />
<PackageReference Include="Dfe.Academies.Contracts" Version="1.0.5" />
<PackageReference Include="FluentAssertions" Version="6.9.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="7.0.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,6 @@ public void GivenProject_ReturnsMappedProject()
AssertRationaleIsCorrect(toMap, result);
AssertGeneralInformationIsCorrect(toMap, result);
}

//todo: add test for multiple academies

[Fact]
public void GivenHasDateIsFalse_ShouldSetHasDateToNull()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using System.Collections.Generic;
using Dfe.Academies.Contracts.V4;
using Dfe.Academies.Contracts.V4.Trusts;
using Dfe.PrepareTransfers.Data.Models;
using Dfe.PrepareTransfers.Data.TRAMS.Mappers.Response;
using Dfe.PrepareTransfers.Data.TRAMS.Models;
Expand All @@ -21,86 +23,34 @@ public TramsTrustMapperTests()
[Fact]
public void GivenTramsTrust_ItMapsTrustFieldsCorrectly()
{
var trustToMap = new TramsTrust
var trustToMap = new TrustDto
{
GiasData = new TramsTrustGiasData
{

CompaniesHouseNumber = "1231231",
GroupContactAddress = new GroupContactAddress
Address = new AddressDto
{
AdditionalLine = "Extra line",
Additional = "Extra line",
County = "County",
Locality = "Locality",
Postcode = "Postcode",
Street = "Street",
Town = "Town"
},
GroupId = "0001",
GroupName = "Trust name",
ReferenceNumber = "0001",
Name = "Trust name",
Ukprn = "1001",
},
IfdData = new TramsTrustIfdData()
{
LeadRscRegion = "London"
}
};

var result = _subject.Map(trustToMap);
var expectedAddress = new List<string> {"Trust name", "Street", "Town", "County, Postcode"};

Assert.Equal(trustToMap.GiasData.CompaniesHouseNumber, result.CompaniesHouseNumber);
Assert.Equal(trustToMap.GiasData.GroupId, result.GiasGroupId);
Assert.Equal(trustToMap.GiasData.GroupName, result.Name);
Assert.Equal(trustToMap.GiasData.Ukprn, result.Ukprn);
Assert.Equal(trustToMap.CompaniesHouseNumber, result.CompaniesHouseNumber);
Assert.Equal(trustToMap.ReferenceNumber, result.GiasGroupId);
Assert.Equal(trustToMap.Name, result.Name);
Assert.Equal(trustToMap.Ukprn, result.Ukprn);
Assert.Equal("Not available", result.EstablishmentType);
Assert.Equal(expectedAddress, result.Address);
Assert.Equal(trustToMap.IfdData.LeadRscRegion, result.LeadRscRegion);
}

[Fact]
public void GivenTrustWithOneAcademy_MapASingleAcademy()
{
_establishmentMapper.Setup(m => m.Map(It.IsAny<TramsEstablishment>()))
.Returns<TramsEstablishment>(input => new Academy {Ukprn = $"Mapped {input.Ukprn}"});

var trustToMap = new TramsTrust
{
GiasData = new TramsTrustGiasData(),
Establishments = new List<TramsEstablishment>
{
new TramsEstablishment {Ukprn = "001"}
}
};

var result = _subject.Map(trustToMap);
_establishmentMapper.Verify(m =>
m.Map(It.Is<TramsEstablishment>(establishment => establishment.Ukprn == "001")));
Assert.Equal("Mapped 001", result.Academies[0].Ukprn);
}

[Fact]
public void GivenTrustWithTwoAcademies_MapAcademies()
{
_establishmentMapper.Setup(m => m.Map(It.IsAny<TramsEstablishment>()))
.Returns<TramsEstablishment>(input => new Academy {Ukprn = $"Mapped {input.Ukprn}"});

var trustToMap = new TramsTrust
{
GiasData = new TramsTrustGiasData(),
Establishments = new List<TramsEstablishment>
{
new TramsEstablishment {Ukprn = "001"},
new TramsEstablishment {Ukprn = "002"}
}
};

var result = _subject.Map(trustToMap);
_establishmentMapper.Verify(m =>
m.Map(It.Is<TramsEstablishment>(establishment => establishment.Ukprn == "001")));
_establishmentMapper.Verify(m =>
m.Map(It.Is<TramsEstablishment>(establishment => establishment.Ukprn == "002")));
Assert.Equal("Mapped 001", result.Academies[0].Ukprn);
Assert.Equal("Mapped 002", result.Academies[1].Ukprn);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
using System.Collections.Generic;
using Dfe.Academies.Contracts.V4;
using Dfe.Academies.Contracts.V4.Trusts;
using Dfe.PrepareTransfers.Data.TRAMS.Models;

namespace Dfe.PrepareTransfers.Data.TRAMS.Tests.TestFixtures
{
public static class TrustSearchResults
{
public static List<TramsTrustSearchResult> GetTrustSearchResults(int numberOfResults = 1)
public static PagedDataResponse<TrustDto> GetTrustSearchResults(int numberOfResults = 1)
{
var counter = 1;

var searchResults = new List<TramsTrustSearchResult>();
var searchResults = new PagedDataResponse<TrustDto>();
var trusts = new List<TrustDto>();

for (var i = 0; i < numberOfResults; i++)
{
searchResults.Add(
new TramsTrustSearchResult
{
Establishments = new List<TramsTrustSearchEstablishment>(),
CompaniesHouseNumber = counter.ToString(),
GroupName = $"Trust {counter}",
Ukprn = counter.ToString()
}
trusts.Add(new TrustDto
{
CompaniesHouseNumber = counter.ToString(),
Name = $"Trust {counter}",
Ukprn = counter.ToString()
}
);
counter++;
}
searchResults.Data = trusts;

return searchResults;
}
Expand Down
16 changes: 7 additions & 9 deletions Dfe.PrepareTransfers.Data.TRAMS.Tests/TestFixtures/Trusts.cs
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
using System.Collections.Generic;
using Dfe.Academies.Contracts.V4;
using Dfe.Academies.Contracts.V4.Trusts;
using Dfe.PrepareTransfers.Data.TRAMS.Models;

namespace Dfe.PrepareTransfers.Data.TRAMS.Tests.TestFixtures
{
public class Trusts
{
public static TramsTrust GetSingleTrust()
public static TrustDto GetSingleTrust()
{
return new TramsTrust
return new TrustDto
{
Establishments = new List<TramsEstablishment>(),
GiasData = new TramsTrustGiasData
{
Ukprn = "00001",
CompaniesHouseNumber = "1234567",
GroupContactAddress = new GroupContactAddress(),
GroupId = "123",
GroupName = "Group Name"
}
Address = new AddressDto(),
ReferenceNumber = "123",
Name = "Group Name"
};
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Net;
using System.Net.Http;
using Dfe.Academies.Contracts.V4.Establishments;
using Dfe.PrepareTransfers.Data.Models;
using Dfe.PrepareTransfers.Data.TRAMS.Models;
using Dfe.PrepareTransfers.Data.TRAMS.Tests.TestFixtures;
Expand All @@ -15,14 +16,14 @@ namespace Dfe.PrepareTransfers.Data.TRAMS.Tests
public class TramsAcademiesRepositoryTests
{
private readonly Mock<ITramsHttpClient> _client;
private readonly Mock<IMapper<TramsEstablishment, Academy>> _mapper;
private readonly Mock<IMapper<EstablishmentDto, Academy>> _mapper;
private readonly TramsEstablishmentRepository _subject;
private readonly IDistributedCache _distributedCache;

public TramsAcademiesRepositoryTests()
{
_client = new Mock<ITramsHttpClient>();
_mapper = new Mock<IMapper<TramsEstablishment, Academy>>();
_mapper = new Mock<IMapper<EstablishmentDto, Academy>>();
var opts = Options.Create(new MemoryDistributedCacheOptions());
_distributedCache = new MemoryDistributedCache(opts);
_subject = new TramsEstablishmentRepository(_client.Object, _mapper.Object, _distributedCache);
Expand All @@ -40,20 +41,18 @@ public async void GivenUkprn_GetsAcademyWithGivenUkprn()

await _subject.GetAcademyByUkprn("12345");

_client.Verify(c => c.GetAsync("establishment/12345"), Times.Once);
_client.Verify(c => c.GetAsync("v4/establishment/12345"), Times.Once);
}

[Fact]
public async void GivenUkprn_GetsAcademyFromCache()
{
var cacheKey = "GetAcademyByUkprn_12345";
var academy = new RepositoryResult<Academy>
{
Result = new Academy
var academy = new Academy
{
Urn = "toJson"
}
};
;
await _distributedCache.SetStringAsync(cacheKey, JsonConvert.SerializeObject(academy));

var result = await _subject.GetAcademyByUkprn("12345");
Expand All @@ -69,7 +68,7 @@ public async void GivenUrn_GetsAcademy_SetsCache()
Content = new StringContent(JsonConvert.SerializeObject(academy))
});

_mapper.Setup(m => m.Map(It.IsAny<TramsEstablishment>())).Returns<TramsEstablishment>(input =>
_mapper.Setup(m => m.Map(It.IsAny<EstablishmentDto>())).Returns<EstablishmentDto>(input =>
new Academy
{
Ukprn = $"Mapped {academy.Ukprn}"
Expand All @@ -92,7 +91,7 @@ public async void GivenUkprn_MapFoundAcademy()
await _subject.GetAcademyByUkprn("12345");

_mapper.Verify(
m => m.Map(It.Is<TramsEstablishment>(mappedAcademy => mappedAcademy.Ukprn == academy.Ukprn)),
m => m.Map(It.Is<EstablishmentDto>(mappedAcademy => mappedAcademy.Ukprn == academy.Ukprn)),
Times.Once);
}

Expand All @@ -105,15 +104,15 @@ public async void GivenUkprn_ReturnsMappedAcademy()
Content = new StringContent(JsonConvert.SerializeObject(academy))
});

_mapper.Setup(m => m.Map(It.IsAny<TramsEstablishment>())).Returns<TramsEstablishment>(input =>
_mapper.Setup(m => m.Map(It.IsAny<EstablishmentDto>())).Returns<EstablishmentDto>(input =>
new Academy
{
Ukprn = $"Mapped {academy.Ukprn}"
});

var response = await _subject.GetAcademyByUkprn("12345");

Assert.Equal("Mapped 12345", response.Result.Ukprn);
Assert.Equal("Mapped 12345", response.Ukprn);
}

[Theory]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public TramsProjectsRepositoryTests()
};

_trusts.Setup(r => r.GetByUkprn(It.IsAny<string>()))
.ReturnsAsync(new RepositoryResult<Trust> {Result = _foundTrust});
.ReturnsAsync(_foundTrust);

_foundAcademy = new Academy
{
Expand All @@ -53,7 +53,7 @@ public TramsProjectsRepositoryTests()
};

_academies.Setup(r => r.GetAcademyByUkprn(It.IsAny<string>()))
.ReturnsAsync(new RepositoryResult<Academy> {Result = _foundAcademy});
.ReturnsAsync(_foundAcademy);
}

public class GetByUrnTests : TramsProjectsRepositoryTests
Expand Down
Loading

0 comments on commit 8c22ede

Please sign in to comment.