Skip to content

Commit

Permalink
chore: Enhanced integration, E2E and API test output
Browse files Browse the repository at this point in the history
- Updated build pipelines to publish test results
- Fixed failing `InsightSchoolSteps` test
- Resolved accessibility issue raised at alphagov/govuk-frontend#2472
- Fixed bad project reference in `EducationBenchmarking.Platform.Search.App.csproj`
  • Loading branch information
WolfyUK committed Jan 23, 2024
1 parent 292aedf commit ba07eee
Show file tree
Hide file tree
Showing 39 changed files with 440 additions and 321 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export const AdministrativeSupplies: React.FC<AdministrativeSuppliesProps> = ({s
</h2>
</div>
<div id="accordion-content-administrative-supplies" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-administrative-supplies">
aria-labelledby="accordion-heading-administrative-supplies" role="region">
<HorizontalBarChartWrapper data={administrativeSuppliesBarData}
chartId="administrative-supplies-non-eductional">
<h3 className="govuk-heading-s">Administrative supplies (Non-educational)</h3>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ export const CateringStaffServices: React.FC<CateringStaffServicesProps> = ({sch
</h2>
</div>
<div id="accordion-content-catering-staff-services" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-catering-staff-services">
aria-labelledby="accordion-heading-catering-staff-services" role="region">
<HorizontalBarChartWrapper data={netCateringBarData} chartId="net-catering-costs">
<h3 className="govuk-heading-s">Net catering costs</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="net-catering-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const EducationalIct: React.FC<EducationalIctProps> = ({schools}) => {
</h2>
</div>
<div id="accordion-content-educational-ict" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-educational-ict">
aria-labelledby="accordion-heading-educational-ict" role="region">
<HorizontalBarChartWrapper data={learningResourcesBarData} chartId="eductional-learning-resources-costs">
<h3 className="govuk-heading-s">Educational learning resources costs</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="eductional-learning-resources-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ export const EducationalSupplies: React.FC<EducationalSuppliesProps> = ({schools
</h2>
</div>
<div id="accordion-content-educational-supplies" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-educational-supplies">
aria-labelledby="accordion-heading-educational-supplies" role="region">
<HorizontalBarChartWrapper data={totalEducationalSuppliesBarData} chartId="total-educational-supplies-costs">
<h3 className="govuk-heading-s">Total educational supplies costs</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="total-educational-supplies-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ export const NonEducationalSupportStaff: React.FC<NonEducationalSupportStaffProp
</div>
<div id="accordion-content-non-educational-support-staff"
className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-non-educational-support-staff">
aria-labelledby="accordion-heading-non-educational-support-staff" role="region">
<HorizontalBarChartWrapper data={totalNonEducationalBarData} chartId="total-non-educational-support-staff-costs">
<h3 className="govuk-heading-s">Total non-educational support staff costs</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="total-non-educational-support-staff-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ export const OtherCosts: React.FC<OtherCostsProps> = ({schools}) => {
</h2>
</div>
<div id="accordion-content-other-cost" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-other-cost">
aria-labelledby="accordion-heading-other-cost" role="region">
<HorizontalBarChartWrapper data={totalOtherCostsBarData} chartId="total-otehr-costs">
<h3 className="govuk-heading-s">Total other costs</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="total-otehr-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export const PremisesStaffServices: React.FC<PremisesStaffServicesProps> = ({sch
</h2>
</div>
<div id="accordion-content-premises-staff-services" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-premises-staff-services">
aria-labelledby="accordion-heading-premises-staff-services" role="region">
<HorizontalBarChartWrapper data={totalPremisesStaffServiceCostsBarData} chartId="total-premises-staff-service-costs">
<h3 className="govuk-heading-s">Total premises staff and service costs</h3>
<ChartDimensions dimensions={PremisesCategories} handleChange={handleSelectChange} elementId="total-premises-staff-service-costs" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export const TeachingSupportStaff: React.FC<TeachingSupportStaffProps> = ({schoo
</h2>
</div>
<div id="accordion-content-teaching-support-staff" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-teaching-support-staff">
aria-labelledby="accordion-heading-teaching-support-staff" role="region">
<HorizontalBarChartWrapper data={totalTeachingBarData} chartId="total-teaching-support-staff-cost">
<h3 className="govuk-heading-s">Total teaching and teaching support staff</h3>
<ChartDimensions dimensions={CostCategories} handleChange={handleSelectChange} elementId="total-teaching-support-staff-cost" defaultValue={dimension} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ export const Utilities: React.FC<UtilitiesProps> = ({schools}) => {
</h2>
</div>
<div id="accordion-content-utilities" className="govuk-accordion__section-content"
aria-labelledby="accordion-heading-utilities">
aria-labelledby="accordion-heading-utilities" role="region">
<HorizontalBarChartWrapper data={totalUtilitiesCostsBarData} chartId="total-utilities-costs">
<h3 className="govuk-heading-s">Total utilities costs</h3>
<ChartDimensions dimensions={PremisesCategories} handleChange={handleSelectChange} elementId="total-utilities-costs" defaultValue={dimension} />
Expand Down
7 changes: 6 additions & 1 deletion platform/pipelines/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,13 @@ stages:
inputs:
command: test
packagesDirectory: $(NUGET_PACKAGES)
arguments: '--configuration Release --collect "Code coverage"'
arguments: '--configuration Release --collect "Code coverage" --logger "console;verbosity=detailed" --logger "trx;LogFileName=TestResults.trx"'
projects: 'platform/**/*.Tests.csproj'

- task: PublishTestResults@2
inputs:
testResultsFormat: 'XUnit'
testResultsFiles: '**/TestResults.trx'

- job: BuildPlatform
dependsOn: [Set_Build_Number]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<PackageReference Include="Microsoft.Extensions.Logging.Console"/>
<PackageReference Include="Microsoft.Extensions.Options" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />
<ProjectReference Include="..\..\abstractions\EducationBenchmarking.Platform.Search\EducationBenchmarking.Platform.Search.csproj"/>
<ProjectReference Include="..\EducationBenchmarking.Platform.Search\EducationBenchmarking.Platform.Search.csproj"/>
<AssemblyAttribute Include="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute"/>
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
using EducationBenchmarking.Platform.ApiTests.TestSupport;
using Xunit.Abstractions;
using Xunit.Sdk;

namespace EducationBenchmarking.Platform.ApiTests.Drivers;

public class ApiDriver : Dictionary<string, ApiDriver.ApiMessage>
{
private readonly HttpClient _client;
private readonly ITestOutputHelper _output;

public ApiDriver(Config.Api.ApiEndpoint endpoint)
public ApiDriver(Config.Api.ApiEndpoint endpoint, ITestOutputHelper output)
{
_client = new HttpClient { BaseAddress = new Uri(endpoint.Host ?? throw new NullException(endpoint.Host)) };
if (!string.IsNullOrEmpty(endpoint.Key))
{
_client.DefaultRequestHeaders.Add("x-functions-key", endpoint.Key);
}

_output = output;
}

public void CreateRequest(string key, HttpRequestMessage request)
Expand All @@ -26,7 +30,11 @@ public async Task Send()
{
foreach (var message in this.Where(m => m.Value.Response is null))
{
message.Value.Response = await _client.SendAsync(message.Value.Request);
var response = await _client.SendAsync(message.Value.Request);
#if DEBUG
_output.WriteLine($"{response.RequestMessage?.Method} {response.RequestMessage?.RequestUri} [{(int)response.StatusCode}]");
#endif
message.Value.Response = response;
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
using System.Net;
using EducationBenchmarking.Platform.ApiTests.Drivers;
using EducationBenchmarking.Platform.ApiTests.TestSupport;
using FluentAssertions;
using Xunit.Abstractions;
using Xunit.Sdk;

namespace EducationBenchmarking.Platform.ApiTests.Steps;

[Binding]
public class BenchmarkBandingsSteps
public class BenchmarkBandingsSteps : BenchmarkSteps
{
private const string FsmBandingKey = "free-school-meal-banding";
private const string SchoolSizeBandingKey = "school-size-banding";
private readonly ApiDriver _api = new(Config.Apis.Benchmark ?? throw new NullException(Config.Apis.Benchmark));

public BenchmarkBandingsSteps(ITestOutputHelper output) : base(output)
{
}

[Given(@"a valid fsm banding request")]
public void GivenAValidFsmBandingRequest()
{
_api.CreateRequest(FsmBandingKey, new HttpRequestMessage
Api.CreateRequest(FsmBandingKey, new HttpRequestMessage
{
RequestUri = new Uri("/api/free-school-meal/bandings", UriKind.Relative),
Method = HttpMethod.Get
Expand All @@ -26,7 +28,7 @@ public void GivenAValidFsmBandingRequest()
[Then(@"the free school meal banding result should be ok")]
public void ThenTheFreeSchoolMealBandingResultShouldBeOk()
{
var response = _api[FsmBandingKey].Response ?? throw new NullException(_api[FsmBandingKey].Response);
var response = Api[FsmBandingKey].Response ?? throw new NullException(Api[FsmBandingKey].Response);

response.Should().NotBeNull();
response.StatusCode.Should().Be(HttpStatusCode.OK);
Expand All @@ -35,14 +37,14 @@ public void ThenTheFreeSchoolMealBandingResultShouldBeOk()
[When(@"I submit the banding request")]
public async Task WhenISubmitTheBandingRequest()
{
await _api.Send();
await Api.Send();
}

[Then(@"the school size banding result should be ok")]
public void ThenTheSchoolSizeBandingResultShouldBeOk()
{
var response = _api[SchoolSizeBandingKey].Response ??
throw new NullException(_api[SchoolSizeBandingKey].Response);
var response = Api[SchoolSizeBandingKey].Response ??
throw new NullException(Api[SchoolSizeBandingKey].Response);

response.Should().NotBeNull();
response.StatusCode.Should().Be(HttpStatusCode.OK);
Expand All @@ -51,7 +53,7 @@ public void ThenTheSchoolSizeBandingResultShouldBeOk()
[Given(@"a valid school size banding request")]
public void GivenAValidSchoolSizeBandingRequest()
{
_api.CreateRequest(SchoolSizeBandingKey, new HttpRequestMessage
Api.CreateRequest(SchoolSizeBandingKey, new HttpRequestMessage
{
RequestUri = new Uri("/api/school-size/bandings", UriKind.Relative),
Method = HttpMethod.Get
Expand Down
Loading

0 comments on commit ba07eee

Please sign in to comment.