Skip to content

Commit

Permalink
Merge pull request #317 from DFE-Digital/feature/dashboard-filter-pro…
Browse files Browse the repository at this point in the history
…ject-managed-by

Added API tests
  • Loading branch information
sukhybhullar-nimble authored Dec 19, 2023
2 parents ed60bb1 + 17384ba commit e49dd0d
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,13 @@ public static Kpi BuildProject()
result.SchoolDetailsFaithType = _fixture.Create<string>();
result.SchoolDetailsTrustId = _fixture.Create<string>().Substring(0, 4);
result.SchoolDetailsTrustName = _fixture.Create<string>();
result.SchoolDetailsTrustType = _fixture.Create<string>();

result.KeyContactsFsgTeamLeader = _fixture.Create<string>();
result.KeyContactsFsgGrade6 = _fixture.Create<string>();
result.KeyContactsEsfaCapitalProjectManager = _fixture.Create<string>();
result.KeyContactsEsfaCapitalProjectDirector = _fixture.Create<string>();
result.SchoolDetailsTrustType = _fixture.Create<string>();
result.KeyContactsFsgLeadContact = _fixture.Create<string>();

return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,44 @@ public async Task When_Get_WithProjectId_Returns_DashboardForSpecifiedProjectId_
secondIdProjects.Data.Should().Contain(r => r.ProjectId == projectTwo.ProjectStatusProjectId);
}

[Fact]
public async Task When_Get_WithProjectManager_Returns_DashboardForSpecifiedProjectManager_200()
{
using var context = _testFixture.GetContext();
var projectOne = DatabaseModelBuilder.BuildProject();
var projectTwo = DatabaseModelBuilder.BuildProject();
projectTwo.KeyContactsFsgLeadContact = projectOne.KeyContactsFsgLeadContact;
var firstProjectManager = projectOne.KeyContactsFsgLeadContact;

var projectThree = DatabaseModelBuilder.BuildProject();
var projectFour = DatabaseModelBuilder.BuildProject();

context.Kpi.AddRange(projectOne, projectTwo, projectThree, projectFour);

await context.SaveChangesAsync();


var firstProjectManagerResponse = await _client.GetAsync($"/api/v1/client/dashboard?projectManagedBy={firstProjectManager}");
firstProjectManagerResponse.StatusCode.Should().Be(HttpStatusCode.OK);

var firstProjectManagerProjects = await firstProjectManagerResponse.Content.ReadFromJsonAsync<ApiListWrapper<GetDashboardResponse>>();

firstProjectManagerProjects.Data.Should().HaveCount(2);
firstProjectManagerProjects.Data.Should().Contain(r => r.ProjectId == projectOne.ProjectStatusProjectId);
firstProjectManagerProjects.Data.Should().Contain(r => r.ProjectId == projectTwo.ProjectStatusProjectId);

var secondProjectManager = projectThree.KeyContactsFsgLeadContact;
var secondProjectManagerResponse = await _client.GetAsync($"/api/v1/client/dashboard?projectManagedBy={firstProjectManager},{secondProjectManager}");
secondProjectManagerResponse.StatusCode.Should().Be(HttpStatusCode.OK);

var secondProjectManagerProjects = await secondProjectManagerResponse.Content.ReadFromJsonAsync<ApiListWrapper<GetDashboardResponse>>();

secondProjectManagerProjects.Data.Should().HaveCount(3);
secondProjectManagerProjects.Data.Should().Contain(r => r.ProjectId == projectOne.ProjectStatusProjectId);
secondProjectManagerProjects.Data.Should().Contain(r => r.ProjectId == projectTwo.ProjectStatusProjectId);
secondProjectManagerProjects.Data.Should().Contain(r => r.ProjectId == projectThree.ProjectStatusProjectId);
}

[Fact]
public async Task When_Get_UserDoesNotExist_Returns_EmptyDashboard_200()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using Dfe.ManageFreeSchoolProjects.API.Contracts.Dashboard;
using Dfe.ManageFreeSchoolProjects.API.Contracts.Project;
using Dfe.ManageFreeSchoolProjects.API.Contracts.ResponseModels;
using Dfe.ManageFreeSchoolProjects.API.Tests.Fixtures;
using Dfe.ManageFreeSchoolProjects.API.Tests.Helpers;
using Dfe.ManageFreeSchoolProjects.Data.Entities.Existing;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace Dfe.ManageFreeSchoolProjects.API.Tests.Integration
{
[Collection(ApiTestCollection.ApiTestCollectionName)]
public class ProjectManagersApiTests : ApiTestsBase
{
public ProjectManagersApiTests(ApiTestFixture apiTestFixture) : base(apiTestFixture)
{
}

[Fact]
public async Task When_Get_ProjectManagers_Returns_ProjectManagers_200()
{
using var context = _testFixture.GetContext();

var projectOne = DatabaseModelBuilder.BuildProject();
var projectTwo = DatabaseModelBuilder.BuildProject();

context.Kpi.AddRange(projectOne, projectTwo);

await context.SaveChangesAsync();

var projectManagersResponse = await _client.GetAsync($"/api/v1/client/project-managers");
projectManagersResponse.StatusCode.Should().Be(HttpStatusCode.OK);

var responseContent = await projectManagersResponse.Content
.ReadFromJsonAsync<ApiSingleResponseV2<GetProjectManagersResponse>>();
var projectManagers = responseContent.Data.ProjectManagers;

var expectedProjectManagers = new List<string>()
{
projectOne.KeyContactsFsgLeadContact, projectTwo.KeyContactsFsgLeadContact
};

projectManagers.Should().HaveCountGreaterThanOrEqualTo(2);
projectManagers.Should().Contain(projectOne.KeyContactsFsgLeadContact);
projectManagers.Should().Contain(projectTwo.KeyContactsFsgLeadContact);

}

}
}
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
wwwroot/dist
wwwroot/assets
wwwroot/assets
wwwroot/package-lock.json

0 comments on commit e49dd0d

Please sign in to comment.