Skip to content

Feature/173197 personsApi client nuget package #562

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Aug 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dfe.Academies.Application/MappingProfiles/PersonProfile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class PersonProfile : Profile
{
public PersonProfile()
{
CreateMap<ConstituencyWithMemberContactDetails, Person>()
CreateMap<ConstituencyWithMemberContactDetails, MemberOfParliament>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Constituency.MemberID))
.ForMember(dest => dest.FirstName, opt => opt.MapFrom(src => src.Constituency.NameList.Split(",", StringSplitOptions.None)[1].Trim()))
.ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.Constituency.NameList.Split(",", StringSplitOptions.None)[0].Trim()))
Expand Down
14 changes: 14 additions & 0 deletions Dfe.Academies.Application/Models/MemberOfParliament.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace Dfe.Academies.Application.Models
{
public class MemberOfParliament
{
public int Id { get; set; }
public required string FirstName { get; set; }
public required string LastName { get; set; }
public required string Email { get; set; }
public required string DisplayName { get; set; }
public required string DisplayNameWithTitle { get; set; }
public required string Role { get; set; }
public required string ConstituencyName { get; set; }
}
}
14 changes: 0 additions & 14 deletions Dfe.Academies.Application/Models/Person.cs

This file was deleted.

2 changes: 1 addition & 1 deletion Dfe.Academies.Application/Persons/IPersonsQueries.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ namespace Dfe.Academies.Application.Persons
{
public interface IPersonsQueries
{
Task<Person?> GetMemberOfParliamentByConstituencyAsync(string constituencyName, CancellationToken cancellationToken);
Task<MemberOfParliament?> GetMemberOfParliamentByConstituencyAsync(string constituencyName, CancellationToken cancellationToken);
}
}
4 changes: 2 additions & 2 deletions Dfe.Academies.Application/Persons/PersonsQueries.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public PersonsQueries(
_mapper = mapper;
}

public async Task<Person?> GetMemberOfParliamentByConstituencyAsync(string constituencyName, CancellationToken cancellationToken)
public async Task<MemberOfParliament?> GetMemberOfParliamentByConstituencyAsync(string constituencyName, CancellationToken cancellationToken)
{
var query = from constituencies in _constituencyRepository.Query()
join memberContactDetails in _MemberContactDetailsRepository.Query()
Expand All @@ -34,7 +34,7 @@ on constituencies.MemberID equals memberContactDetails.MemberID
select new ConstituencyWithMemberContactDetails(constituencies, memberContactDetails);

var result = await query
.ProjectTo<Person>(_mapper.ConfigurationProvider)
.ProjectTo<MemberOfParliament>(_mapper.ConfigurationProvider)
.FirstOrDefaultAsync(cancellationToken);

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ await dbcontext.Constituencies.Where(x => x.ConstituencyName == "Test Constituen

var response = await client.GetAsync($"v1/Constituencies/{constituencyName}/mp");

var content = await response.Content.ReadAsStringAsync();
await response.Content.ReadAsStringAsync();

Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
Expand All @@ -40,7 +40,7 @@ public async Task it_should_return_notfound_when_constituency_doesnt_exist()

var response = await client.GetAsync($"v1/Constituencies/test/mp");

var content = await response.Content.ReadAsStringAsync();
await response.Content.ReadAsStringAsync();

Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Dfe.Academies.PersonsApi.Tests.Integration.Mocks;
using PersonsApi;
using System.Net;

namespace Dfe.Academies.PersonsApi.Tests.Integration.OpenApiTests;

public class OpenApiDocumentTests : IClassFixture<CustomWebApplicationFactory<Startup>>
{
private readonly HttpClient _client;

public OpenApiDocumentTests(CustomWebApplicationFactory<Startup> factory)
{
_client = factory.CreateClient();
}

[Fact]
public async Task SwaggerEndpoint_ReturnsSuccessAndCorrectContentType()
{
var response = await _client.GetAsync("/swagger/v1/swagger.json");

response.EnsureSuccessStatusCode();

Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
}
20 changes: 20 additions & 0 deletions Dfe.PersonsApi.Client/Dfe.PersonsApi.Client.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>1.0.0</Version>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>

</Project>
30 changes: 30 additions & 0 deletions Dfe.PersonsApi.Client/Extensions/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Dfe.PersonsApi.Client.Settings;
using System.Diagnostics.CodeAnalysis;

namespace Dfe.PersonsApi.Client.Extensions
{
[ExcludeFromCodeCoverage]
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddPersonsApiClient<TClientInterface, TClientImplementation>(this IServiceCollection services, IConfiguration configuration)
where TClientInterface : class
where TClientImplementation : class, TClientInterface
{
var apiSettings = new PersonsApiClientSettings();
configuration.GetSection("PersonsApiClient").Bind(apiSettings);

services.AddHttpClient<TClientInterface, TClientImplementation>((httpClient, serviceProvider) =>
{
httpClient.BaseAddress = new Uri(apiSettings.BaseUrl!);
httpClient.DefaultRequestHeaders.Add("ApiKey", apiSettings.ApiKey);

return ActivatorUtilities.CreateInstance<TClientImplementation>(serviceProvider, httpClient, apiSettings.BaseUrl!);
});

return services;
}
}

}
Loading
Loading