From caf200443712b004d67145f6469a6c76e2dbc359 Mon Sep 17 00:00:00 2001 From: Kevin Joy Date: Thu, 23 Jan 2025 17:00:58 +0000 Subject: [PATCH] Updated tests 2/n --- .../Pages/RequestTrn/CheckAnswers.cshtml.cs | 7 +- .../Pages/RequestTrn/Name.cshtml.cs | 8 +- .../Pages/RequestTrn/NotEligible.cshtml | 2 +- .../PageTests/RequestTrn/CheckAnswersTests.cs | 464 ++++++++++++++++-- .../PageTests/RequestTrn/NameTests.cs | 51 +- .../PageTests/RequestTrn/NotEligibleTests.cs | 6 +- 6 files changed, 490 insertions(+), 48 deletions(-) diff --git a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/CheckAnswers.cshtml.cs b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/CheckAnswers.cshtml.cs index b423df3f0..77f858368 100644 --- a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/CheckAnswers.cshtml.cs +++ b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/CheckAnswers.cshtml.cs @@ -131,12 +131,17 @@ public override void OnPageHandlerExecuting(PageHandlerExecutingContext context) { context.Result = Redirect(linkGenerator.RequestTrnSubmitted(JourneyInstance!.InstanceId)); } + else if (state.HaveRegisteredForAnNpq is null && state.NpqApplicationId is null) + { + context.Result = Redirect(linkGenerator.RequestTrnNpqApplication(JourneyInstance.InstanceId)); + } else if (state.WorkEmail is null && state.WorkingInSchoolOrEducationalSetting == true) { context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId)); } - else if (state.PersonalEmail is null && state.WorkingInSchoolOrEducationalSetting == false) + else if (state.PersonalEmail is null) { + // personal email is required for either WorkingInSchoolOrEducationalSetting being true or false context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId)); } else if (state.Name is null) diff --git a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/Name.cshtml.cs b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/Name.cshtml.cs index ad20a6298..681cd5b32 100644 --- a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/Name.cshtml.cs +++ b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/Name.cshtml.cs @@ -49,13 +49,13 @@ public override void OnPageHandlerExecuting(PageHandlerExecutingContext context) { context.Result = Redirect(linkGenerator.RequestTrnSubmitted(JourneyInstance!.InstanceId)); } - else if (state.WorkEmail is null && state.WorkingInSchoolOrEducationalSetting == true) + else if (state.PersonalEmail is null) { - context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId)); + context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId)); } - else if (state.PersonalEmail is null && state.WorkingInSchoolOrEducationalSetting == false) + else if (state.WorkEmail is null && state.WorkingInSchoolOrEducationalSetting == true) { - context.Result = Redirect(linkGenerator.RequestTrnPersonalEmail(JourneyInstance.InstanceId)); + context.Result = Redirect(linkGenerator.RequestTrnWorkEmail(JourneyInstance.InstanceId)); } } } diff --git a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/NotEligible.cshtml b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/NotEligible.cshtml index 812124f7f..ab9ae9ead 100644 --- a/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/NotEligible.cshtml +++ b/TeachingRecordSystem/src/TeachingRecordSystem.AuthorizeAccess/Pages/RequestTrn/NotEligible.cshtml @@ -12,7 +12,7 @@

@ViewBag.Title

-

You can only use this service if you need a TRN because you're taking an NPQ.

+

You can only use this service if you need a TRN because you’re taking an NPQ.

Find out how to get a TRN if you’re a mentor for a trainee or early career teacher.

diff --git a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/CheckAnswersTests.cs b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/CheckAnswersTests.cs index a6b7f20b2..20eca0460 100644 --- a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/CheckAnswersTests.cs +++ b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/CheckAnswersTests.cs @@ -21,11 +21,25 @@ public async Task Get_HasPendingTrnRequestSetTrue_RedirectsToSubmitted() } [Fact] - public async Task Get_HasEmailMissingFromState_RedirectsToEmail() + public async Task Get_HasWorkEmailMissingFromState_RedirectsToWorkEmail() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = null; + state.PersonalEmail = Faker.Internet.Email(); + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -38,13 +52,58 @@ public async Task Get_HasEmailMissingFromState_RedirectsToEmail() Assert.Equal($"/request-trn/work-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); } + [Fact] + public async Task Get_HasPersonalEmailMissingFromState_RedirectsToPersonalEmail() + { + // Arrange + var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; + state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = null; + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + Assert.Equal(StatusCodes.Status302Found, (int)response.StatusCode); + Assert.Equal($"/request-trn/personal-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); + } + [Fact] public async Task Get_HasNameMissingFromState_RedirectsToName() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = null; + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -62,9 +121,21 @@ public async Task Get_HasHasPreviousNameMissingFromState_RedirectsToPreviousName { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = null; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -82,10 +153,20 @@ public async Task Get_HasPreviousNameMissingFromState_RedirectsToPreviousName() { // Arrange var state = CreateNewState(); + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = true; state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -103,11 +184,22 @@ public async Task Get_HasDateOfBirthMissingFromState_RedirectsToDateOfBirth() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; state.DateOfBirth = null; + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = "qq 12 34 56 56 c"; + var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -125,12 +217,21 @@ public async Task Get_HasEvidenceFileIdMissingFromState_RedirectsToIdentity() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); state.EvidenceFileId = null; + state.EvidenceFileName = null; + state.EvidenceFileSizeDescription = null; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = "qq 12 34 56 56 c"; var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -148,13 +249,21 @@ public async Task Get_HasHasNationalInsuranceNumberMissingFromState_RedirectsToN { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; state.HasNationalInsuranceNumber = null; + state.NationalInsuranceNumber = null; var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -172,12 +281,19 @@ public async Task Get_HasNationalInsuranceNumberTrueAndNationalInsuranceNumberMi { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; state.HasNationalInsuranceNumber = true; state.NationalInsuranceNumber = null; var journeyInstance = await CreateJourneyInstance(state); @@ -197,13 +313,21 @@ public async Task Get_HasNationalInsuranceNumberFalseAndAddressLine1MissingFromS { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; state.HasNationalInsuranceNumber = false; + state.NationalInsuranceNumber = null; state.AddressLine1 = null; var journeyInstance = await CreateJourneyInstance(state); @@ -224,16 +348,22 @@ public async Task Get_ValidRequest_PopulatesModelFromJourneyState(bool hasNation { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOMEID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = true; state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.DateOfBirth = new DateOnly(1999, 01, 01); state.EvidenceFileId = Guid.NewGuid(); state.EvidenceFileName = "evidence-file-name.jpg"; state.EvidenceFileSizeDescription = "1.2 MB"; state.HasNationalInsuranceNumber = hasNationalInsuranceNumber; state.NationalInsuranceNumber = hasNationalInsuranceNumber ? Faker.Identification.UkNationalInsuranceNumber() : null; + if (!hasNationalInsuranceNumber) { state.AddressLine1 = Faker.Address.StreetAddress(); @@ -252,7 +382,8 @@ public async Task Get_ValidRequest_PopulatesModelFromJourneyState(bool hasNation // Assert var doc = await AssertEx.HtmlResponseAsync(response); - Assert.Equal(state.WorkEmail, doc.GetSummaryListValueForKey("Email")); + Assert.Equal(state.WorkEmail, doc.GetSummaryListValueForKey("Work email")); + Assert.Equal(state.PersonalEmail, doc.GetSummaryListValueForKey("Personal email")); Assert.Equal(state.Name, doc.GetSummaryListValueForKey("Name")); Assert.Equal(state.PreviousName, doc.GetSummaryListValueForKey("Previous name")); Assert.Equal(state.DateOfBirth?.ToString("d MMMM yyyy"), doc.GetSummaryListValueForKey("Date of birth")); @@ -273,6 +404,139 @@ public async Task Get_ValidRequest_PopulatesModelFromJourneyState(bool hasNation } } + [Fact] + public async Task Get_GetValidRequestWithNpqNameAndProvider_ShowsNpqNameAndProviderAndHidesNpqApplicationId() + { + // Arrange + var npqApplicationId = default(string?); + var npqName = "Some NPQ Name"; + var npqTrainingProvider = "NPQ TRAINING PROVIDER"; + var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = false; + state.NpqApplicationId = npqApplicationId; + state.NpqName = npqName; + state.NpqTrainingProvider = npqTrainingProvider; + state.WorkingInSchoolOrEducationalSetting = true; + state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = "qq 12 34 56 56 c"; + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + var doc = await AssertEx.HtmlResponseAsync(response); + Assert.Null(doc.GetSummaryListValueForKey("NPQ application ID")); + Assert.Equal(state.WorkEmail, doc.GetSummaryListValueForKey("Work email")); + Assert.Equal(state.PersonalEmail, doc.GetSummaryListValueForKey("Personal email")); + Assert.Equal(state.Name, doc.GetSummaryListValueForKey("Name")); + Assert.Equal(string.Empty, doc.GetSummaryListValueForKey("Previous name")); + Assert.Equal(state.DateOfBirth?.ToString("d MMMM yyyy"), doc.GetSummaryListValueForKey("Date of birth")); + Assert.Equal(state.EvidenceFileName, doc.GetSummaryListValueForKey("Proof of identity")); + Assert.Equal(state.NationalInsuranceNumber, doc.GetSummaryListValueForKey("National Insurance number")); + Assert.Equal(npqName, doc.GetSummaryListValueForKey("NPQ")); + Assert.Equal(npqTrainingProvider, doc.GetSummaryListValueForKey("NPQ Provider")); + Assert.Equal(StatusCodes.Status200OK, (int)response.StatusCode); + } + + [Fact] + public async Task Get_GetValidRequestNpqApplicationIdProvided_HidesNpqNameAndProvider() + { + // Arrange + var npqApplicationId = "ApplicationId-12345"; + var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = npqApplicationId; + state.WorkingInSchoolOrEducationalSetting = true; + state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = "qq 12 34 56 56 c"; + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + var doc = await AssertEx.HtmlResponseAsync(response); + Assert.Equal(state.NpqApplicationId, doc.GetSummaryListValueForKey("NPQ application ID")); + Assert.Equal(state.WorkEmail, doc.GetSummaryListValueForKey("Work email")); + Assert.Equal(state.PersonalEmail, doc.GetSummaryListValueForKey("Personal email")); + Assert.Equal(state.Name, doc.GetSummaryListValueForKey("Name")); + Assert.Equal(string.Empty, doc.GetSummaryListValueForKey("Previous name")); + Assert.Equal(state.DateOfBirth?.ToString("d MMMM yyyy"), doc.GetSummaryListValueForKey("Date of birth")); + Assert.Equal(state.EvidenceFileName, doc.GetSummaryListValueForKey("Proof of identity")); + Assert.Equal(state.NationalInsuranceNumber, doc.GetSummaryListValueForKey("National Insurance number")); + Assert.Null(doc.GetSummaryListValueForKey("NPQ")); + Assert.Null(doc.GetSummaryListValueForKey("NPQ Provider")); + Assert.Equal(StatusCodes.Status200OK, (int)response.StatusCode); + } + + [Fact] + public async Task Get_GetValidRequestWorkingInSchoolOrEducationalSettingFalse_HidesWorkEmail() + { + // Arrange + var npqApplicationId = "ApplicationId-12345"; + var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = npqApplicationId; + state.WorkingInSchoolOrEducationalSetting = false; + state.WorkEmail = null; + state.PersonalEmail = Faker.Internet.Email(); + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + var doc = await AssertEx.HtmlResponseAsync(response); + Assert.Equal(state.NpqApplicationId, doc.GetSummaryListValueForKey("NPQ application ID")); + Assert.Null(doc.GetSummaryListValueForKey("Work email")); + Assert.Equal(state.PersonalEmail, doc.GetSummaryListValueForKey("Personal email")); + Assert.Equal(state.Name, doc.GetSummaryListValueForKey("Name")); + Assert.Equal(string.Empty, doc.GetSummaryListValueForKey("Previous name")); + Assert.Equal(state.DateOfBirth?.ToString("d MMMM yyyy"), doc.GetSummaryListValueForKey("Date of birth")); + Assert.Equal(state.EvidenceFileName, doc.GetSummaryListValueForKey("Proof of identity")); + Assert.Equal(state.NationalInsuranceNumber, doc.GetSummaryListValueForKey("National Insurance number")); + Assert.Null(doc.GetSummaryListValueForKey("NPQ")); + Assert.Null(doc.GetSummaryListValueForKey("NPQ Provider")); + Assert.Equal(StatusCodes.Status200OK, (int)response.StatusCode); + } + [Fact] public async Task Post_HasPendingTrnRequestSetTrue_RedirectsToSubmitted() { @@ -292,11 +556,25 @@ public async Task Post_HasPendingTrnRequestSetTrue_RedirectsToSubmitted() } [Fact] - public async Task Post_HasEmailMissingFromState_RedirectsToEmail() + public async Task Post_HasWorkEmailMissingFromState_RedirectsToWorkEmail() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = null; + state.PersonalEmail = Faker.Internet.Email(); + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -309,13 +587,58 @@ public async Task Post_HasEmailMissingFromState_RedirectsToEmail() Assert.Equal($"/request-trn/work-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); } + [Fact] + public async Task Post_HasPersonalEmailMissingFromState_RedirectsToPersonalEmail() + { + // Arrange + var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; + state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = null; + state.Name = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + Assert.Equal(StatusCodes.Status302Found, (int)response.StatusCode); + Assert.Equal($"/request-trn/personal-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); + } + [Fact] public async Task Post_HasNameMissingFromState_RedirectsToName() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = null; + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -333,9 +656,21 @@ public async Task Post_HasHasPreviousNameMissingFromState_RedirectsToPreviousNam { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = null; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1999, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -353,10 +688,21 @@ public async Task Post_HasPreviousNameMissingFromState_RedirectsToPreviousName() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = true; state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -374,11 +720,21 @@ public async Task Post_HasDateOfBirthMissingFromState_RedirectsToDateOfBirth() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); + state.HasPreviousName = false; + state.PreviousName = null; state.DateOfBirth = null; + state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "evidence-file-name.jpg"; + state.EvidenceFileSizeDescription = "1.2 MB"; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -396,12 +752,21 @@ public async Task Post_HasEvidenceFileIdMissingFromState_RedirectsToIdentity() { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); state.EvidenceFileId = null; + state.EvidenceFileName = null; + state.EvidenceFileSizeDescription = null; + state.HasNationalInsuranceNumber = true; + state.NationalInsuranceNumber = Faker.Identification.UkNationalInsuranceNumber(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -419,13 +784,21 @@ public async Task Post_HasHasNationalInsuranceNumberMissingFromState_RedirectsTo { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; state.HasNationalInsuranceNumber = null; + state.NationalInsuranceNumber = null; var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/check-answers?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -443,12 +816,19 @@ public async Task Post_HasNationalInsuranceNumberTrueAndNationalInsuranceNumberM { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; state.HasNationalInsuranceNumber = true; state.NationalInsuranceNumber = null; var journeyInstance = await CreateJourneyInstance(state); @@ -468,13 +848,21 @@ public async Task Post_HasNationalInsuranceNumberFalseAndAddressLine1MissingFrom { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = false; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); - state.HasPreviousName = true; - state.PreviousName = Faker.Name.FullName(); - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.HasPreviousName = false; + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); state.EvidenceFileId = Guid.NewGuid(); + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; state.HasNationalInsuranceNumber = false; + state.NationalInsuranceNumber = null; state.AddressLine1 = null; var journeyInstance = await CreateJourneyInstance(state); @@ -495,13 +883,19 @@ public async Task Post_ValidRequest_UpdatesStateAndAndRedirectsToSubmitted(bool { // Arrange var state = CreateNewState(); + state.IsTakingNpq = true; + state.HaveRegisteredForAnNpq = true; + state.NpqApplicationId = "SOME ID"; + state.WorkingInSchoolOrEducationalSetting = true; state.WorkEmail = Faker.Internet.Email(); + state.PersonalEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); state.HasPreviousName = false; - state.DateOfBirth = new DateOnly(1980, 3, 1); + state.PreviousName = null; + state.DateOfBirth = new DateOnly(1998, 01, 01); state.EvidenceFileId = Guid.NewGuid(); - state.EvidenceFileName = "evidence-file-name.jpg"; - state.EvidenceFileSizeDescription = "1.2 MB"; + state.EvidenceFileName = "Filename.jpg"; + state.EvidenceFileSizeDescription = "1.1 MB"; state.HasNationalInsuranceNumber = hasNationalInsuranceNumber; state.NationalInsuranceNumber = hasNationalInsuranceNumber ? Faker.Identification.UkNationalInsuranceNumber() : null; if (!hasNationalInsuranceNumber) diff --git a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NameTests.cs b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NameTests.cs index 9f5674521..6bf40de11 100644 --- a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NameTests.cs +++ b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NameTests.cs @@ -21,10 +21,13 @@ public async Task Get_HasPendingTrnRequestSetTrue_RedirectsToSubmitted() } [Fact] - public async Task Get_EmailMissingFromState_RedirectsToEmail() + public async Task Get_PersonalEmailMissingFromState_RedirectsToPersonalEmail() { // Arrange var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = null; + state.WorkEmail = Faker.Internet.Email(); var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/name?{journeyInstance.GetUniqueIdQueryParameter()}"); @@ -34,7 +37,7 @@ public async Task Get_EmailMissingFromState_RedirectsToEmail() // Assert Assert.Equal(StatusCodes.Status302Found, (int)response.StatusCode); - Assert.Equal($"/request-trn/work-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); + Assert.Equal($"/request-trn/personal-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); } [Fact] @@ -42,6 +45,8 @@ public async Task Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModel { // Arrange var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = Faker.Internet.Email(); state.WorkEmail = Faker.Internet.Email(); state.Name = Faker.Name.FullName(); var journeyInstance = await CreateJourneyInstance(state); @@ -79,6 +84,8 @@ public async Task Post_EmptyNameEntered_ReturnsError() { // Arrange var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = Faker.Internet.Email(); state.WorkEmail = Faker.Internet.Email(); var journeyInstance = await CreateJourneyInstance(state); @@ -92,13 +99,47 @@ public async Task Post_EmptyNameEntered_ReturnsError() } [Fact] - public async Task Post_EmailMissingFromState_RedirectsToEmail() + public async Task Post_PersonalEmailMissingFromState_RedirectsToPersonalEmail() { // Arrange var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = null; var journeyInstance = await CreateJourneyInstance(state); - var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/name?{journeyInstance.GetUniqueIdQueryParameter()}"); + var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/name?{journeyInstance.GetUniqueIdQueryParameter()}") + { + Content = new FormUrlEncodedContent(new Dictionary + { + ["Name"] = Faker.Name.FullName() + }), + }; + + // Act + var response = await HttpClient.SendAsync(request); + + // Assert + Assert.Equal(StatusCodes.Status302Found, (int)response.StatusCode); + Assert.Equal($"/request-trn/personal-email?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); + } + + [Fact] + public async Task Post_WorkEmailMissingFromState_RedirectsToWorkEmail() + { + // Arrange + var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = Faker.Internet.Email(); + state.WorkEmail = null; + var journeyInstance = await CreateJourneyInstance(state); + + var request = new HttpRequestMessage(HttpMethod.Post, $"/request-trn/name?{journeyInstance.GetUniqueIdQueryParameter()}") + { + Content = new FormUrlEncodedContent(new Dictionary + { + ["Name"] = Faker.Name.FullName() + }), + }; // Act var response = await HttpClient.SendAsync(request); @@ -113,6 +154,8 @@ public async Task Post_ValidRequest_UpdatesStateAndRedirectsToNextPage() { // Arrange var state = CreateNewState(); + state.WorkingInSchoolOrEducationalSetting = true; + state.PersonalEmail = Faker.Internet.Email(); state.WorkEmail = Faker.Internet.Email(); var journeyInstance = await CreateJourneyInstance(state); diff --git a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NotEligibleTests.cs b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NotEligibleTests.cs index 9523b5107..715fe8f33 100644 --- a/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NotEligibleTests.cs +++ b/TeachingRecordSystem/tests/TeachingRecordSystem.AuthorizeAccess.Tests/PageTests/RequestTrn/NotEligibleTests.cs @@ -21,7 +21,7 @@ public async Task Get_HasPendingTrnRequestSetTrue_RedirectsToSubmitted() } [Fact] - public async Task Get_HasIsPlanningToTakeAnNpqMissingFromState_RedirectsToNpqCheck() + public async Task Get_IsTakingAnNpqMissingFromState_RedirectsToNpqCheck() { // Arrange var state = CreateNewState(); @@ -34,7 +34,7 @@ public async Task Get_HasIsPlanningToTakeAnNpqMissingFromState_RedirectsToNpqChe // Assert Assert.Equal(StatusCodes.Status302Found, (int)response.StatusCode); - Assert.Equal($"/request-trn/npq-check?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); + Assert.Equal($"/request-trn/taking-npq?{journeyInstance.GetUniqueIdQueryParameter()}", response.Headers.Location?.OriginalString); } [Fact] @@ -42,7 +42,7 @@ public async Task Get_ValidRequest_RendersExpectedContent() { // Arrange var state = CreateNewState(); - state.HaveRegisteredForAnNpq = false; + state.IsTakingNpq = false; var journeyInstance = await CreateJourneyInstance(state); var request = new HttpRequestMessage(HttpMethod.Get, $"/request-trn/not-eligible?{journeyInstance.GetUniqueIdQueryParameter()}");