Skip to content

Add TRN to Sentry scope #2372

Add TRN to Sentry scope

Add TRN to Sentry scope #2372

GitHub Actions / Support UI test results succeeded Apr 10, 2024 in 0s

404 passed, 0 failed and 0 skipped

Tests passed successfully

✅ TeachingRecordSystem/tests/TeachingRecordSystem.SupportUi.Tests/TestResults/_fv-az1456-573_2024-04-10_09_34_59.trx

404 tests were completed in 143s with 404 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.AddAlert.ConfirmTests 6✅ 71s
TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.AddAlert.IndexTests 6✅ 59s
TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.Alert.IndexTests 5✅ 52s
TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.CloseAlert.ConfirmTests 4✅ 46s
TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.CloseAlert.IndexTests 7✅ 72s
TeachingRecordSystem.SupportUi.Tests.PageTests.ApiKeys.AddApiKeyTests 9✅ 54s
TeachingRecordSystem.SupportUi.Tests.PageTests.ApiKeys.EditApiKeyTests 9✅ 58s
TeachingRecordSystem.SupportUi.Tests.PageTests.ApplicationUsers.AddApplicationUserTests 6✅ 28s
TeachingRecordSystem.SupportUi.Tests.PageTests.ApplicationUsers.EditApplicationUserTests 23✅ 101s
TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.AcceptTests 6✅ 79s
TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.IndexTests 12✅ 115s
TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.RejectTests 8✅ 99s
TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.IndexTests 3✅ 1s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.CheckAnswersTests 10✅ 104s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.IndexTests 1✅ 15s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.ProviderTests 6✅ 60s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.SpecialismTests 7✅ 72s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.StartDateTests 10✅ 89s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.StatusTests 11✅ 94s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.DeleteMq.ConfirmTests 7✅ 94s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.DeleteMq.IndexTests 10✅ 96s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.ConfirmTests 6✅ 92s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.IndexTests 7✅ 71s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.ReasonTests 10✅ 94s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.ConfirmTests 6✅ 90s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.IndexTests 9✅ 106s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.ReasonTests 10✅ 97s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.ConfirmTests 6✅ 87s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.IndexTests 9✅ 87s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.ReasonTests 10✅ 100s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.ConfirmTests 9✅ 104s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.IndexTests 10✅ 98s
TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.ReasonTests 14✅ 105s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.IndexTests 6✅ 73s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.AlertsTests 5✅ 64s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.ChangeLogMandatoryQualificationEventsTests 27✅ 130s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.ChangeLogTests 10✅ 109s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditDateOfBirth.ConfirmTests 5✅ 54s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditDateOfBirth.IndexTests 13✅ 113s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditName.ConfirmTests 8✅ 82s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditName.IndexTests 9✅ 100s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.IndexTests 3✅ 39s
TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.QualificationsTests 5✅ 56s
TeachingRecordSystem.SupportUi.Tests.PageTests.Users.AddUser.ConfirmTests 12✅ 57s
TeachingRecordSystem.SupportUi.Tests.PageTests.Users.AddUser.IndexTests 8✅ 33s
TeachingRecordSystem.SupportUi.Tests.PageTests.Users.EditUserTests 18✅ 92s
TeachingRecordSystem.SupportUi.Tests.PageTests.Users.UsersTests 3✅ 18s

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.AddAlert.ConfirmTests

✅ Get_StateHasMissingRequiredData_RedirectsToIndex(sanctionCode: "G1", details: null, startDateString: null)
✅ Get_StateHasMissingRequiredData_RedirectsToIndex(sanctionCode: null, details: "These are some test details", startDateString: null)
✅ Get_StateHasMissingRequiredData_RedirectsToIndex(sanctionCode: null, details: null, startDateString: "2021-01-01")
✅ Get_ValidRequest_RendersExpectedContent
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_ValidRequest_AddsAlertAndCompletesJourney

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.AddAlert.IndexTests

✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForValidPerson_ReturnsOk
✅ Post_EmptyRequiredFields_ReturnsError
✅ Post_InvalidLinkUrl_ReturnsError
✅ Post_ValidData_RedirectsToConfirmPage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.Alert.IndexTests

✅ Get_ValidRequest_RendersExpectedContent(startDateString: "2021-01-01", endDateString: "2022-03-05", details: "Alert details", detailsLink: "http://www.gov.uk", isSpent: True, isActive: True, expectedAlertStatus: Closed)
✅ Get_ValidRequest_RendersExpectedContent(startDateString: "2021-01-01", endDateString: "2022-03-05", details: "Alert details", detailsLink: null, isSpent: True, isActive: False, expectedAlertStatus: Inactive)
✅ Get_ValidRequest_RendersExpectedContent(startDateString: "2021-01-01", endDateString: null, details: null, detailsLink: "http://www.gov.uk", isSpent: False, isActive: False, expectedAlertStatus: Inactive)
✅ Get_ValidRequest_RendersExpectedContent(startDateString: "2021-01-01", endDateString: null, details: null, detailsLink: null, isSpent: False, isActive: True, expectedAlertStatus: Active)
✅ Get_WithAlertIdForNonExistentAlert_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.CloseAlert.ConfirmTests

✅ Get_StateHasNoEndDate_RedirectsToIndex
✅ Get_ValidRequest_RendersExpectedContent
✅ Get_WithAlertIdForNonExistentAlert_ReturnsNotFound
✅ Post_ValidRequest_ClosesAlertAndCompletesJourney

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Alerts.CloseAlert.IndexTests

✅ Get_ValidRequestWithEndDateInJourneyState_PopulatesEndDateFromJourneyState
✅ Get_WithAlertIdForActiveAlert_ReturnsOk
✅ Get_WithAlertIdForEndedAlert_ReturnsNotFound
✅ Get_WithAlertIdForNonExistentAlert_ReturnsNotFound
✅ Post_EmptyEndDate_ReturnsError
✅ Post_EndDateBeforeStartDate_ReturnsError
✅ Post_ValidEndDate_RedirectsToConfirmPage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ApiKeys.AddApiKeyTests

✅ Get_ApplicationUserDoesNotExist_ReturnsBadRequest
✅ Get_UserDoesNotHavePermission_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent
✅ Post_ApplicationUserDoesNotExist_ReturnsBadRequest
✅ Post_KeyAlreadyExists_RendersErrorMessage
✅ Post_KeyIsTooLong_RendersErrorMessage
✅ Post_KeyIsTooShort_RendersErrorMessage
✅ Post_UserDoesNotHavePermission_ReturnsForbidden
✅ Post_ValidRequest_CreatesApiKeyCreatesEventAndRedirectsToApplicationUserWithFlashMessage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ApiKeys.EditApiKeyTests

✅ Get_ApiKeyDoesNotExist_ReturnsNotFound
✅ Get_KeyIsExpired_HasDisabledExpireButton
✅ Get_KeyIsNotExpired_HasNonDisabledExpireButton
✅ Get_UserDoesNotHavePermission_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent
✅ PostExpire_KeyDoesNotExist_ReturnsNotFound
✅ PostExpire_KeyIsAlreadyExpired_ReturnsBadRequest
✅ PostExpire_UserDoesNotHavePermission_ReturnsForbidden
✅ PostExpire_ValidRequest_SetsExpiresOnApiKeyCreatesEventAndRedirectsToApplicationUserWithFlashMessage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ApplicationUsers.AddApplicationUserTests

✅ Get_UserDoesNotHavePermission_ReturnsForbidden
✅ Get_ValidRequest_ReturnsExpectedContent
✅ Post_NameNotSpecified_RendersError
✅ Post_NameTooLong_RendersError
✅ Post_UserDoesNotHavePermission_ReturnsForbidden
✅ Post_ValidRequest_CreatesApplicationUserCreatesEventAndRedirectsWithFlashMessage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ApplicationUsers.EditApplicationUserTests

✅ Get_UserDoesNotExist_ReturnsNotFound
✅ Get_UserDoesNotHavePermission_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent
✅ Post_NameNotProvided_RendersError
✅ Post_NameTooLong_RendersError
✅ Post_UserDoesNotExist_ReturnsNotFound
✅ Post_UserDoesNotHavePermission_ReturnsForbidden
✅ Post_ValidRequest_UpdatesNameAndRolesAndOneLoginSettingsAndCreatesEventAndRedirectsWithFlashMessage
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "387c4429-bf25-44d1-80c7-a7eebcd0cfbe", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "ClientId", expectedErrorMessage: "Enter a client ID")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "e734b86f-c196-4963-83c8-9aefbec060df", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "ClientSecret", expectedErrorMessage: "Enter a client secret")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "S", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "0d1babab-8712-48df-adae-96a0b6481f6f", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "ClientSecret", expectedErrorMessage: "Client secret must be at least 16 characters")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "foo", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "e74f77ad-2b10-49b3-98cc-cbe72774a6c2", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "RedirectUris", expectedErrorMessage: "One or more redirect URIs are not valid")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "foo", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "bb4ff148-5254-4a7a-8661-d5d2d687fdd7", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "PostLogoutRedirectUris", expectedErrorMessage: "One or more post logout redirect URIs are not vali"···)
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "29e92860-ee2f-4380-96a2-d5d4a234175b", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginClientId", expectedErrorMessage: "Enter the One Login client ID")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginAuthenticationSchemeName", expectedErrorMessage: "Enter an authentication scheme name")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "4624b9cb-85ba-4e3e-8233-0860dad8f711", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, expectedErrorField: "OneLoginPostLogoutRedirectUriPath", expectedErrorMessage: "One Login post logout redirect URI must be 100 cha"···)
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "4884f28a-7f4e-474c-b489-c4bcbff941b2", oneLoginRedirectUriPath: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginRedirectUriPath", expectedErrorMessage: "One Login redirect URI must be 100 characters or l"···)
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "771d8c3f-c028-4637-be58-d15f7f84f370", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "", expectedErrorField: "OneLoginPostLogoutRedirectUriPath", expectedErrorMessage: "Enter the One Login post logout redirect URI")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "d26381a9-8699-4ef6-8d47-a188d8a28833", oneLoginRedirectUriPath: "", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginRedirectUriPath", expectedErrorMessage: "Enter the One Login redirect URI")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginAuthenticationSchemeName", expectedErrorMessage: "Authentication scheme name must be 50 characters o"···)
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "", oneLoginAuthenticationSchemeName: "eeb13b7c-66b5-4cdf-92a8-2380b4ea42cb", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "OneLoginPrivateKeyPem", expectedErrorMessage: "Enter the One Login private key")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "client_id", clientSecret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "9b9b3f7b-c777-4d14-944f-9f29a5e74d52", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "ClientSecret", expectedErrorMessage: "Client secret must be 200 characters or less")
✅ Post_WithOidcClientButInvalidDetails_RendersExpectedError(clientId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, clientSecret: "Secret0123456789", redirectUris: "https://localhost/callback", postLogoutRedirectUris: "https://localhost/logout-callback", oneLoginClientId: "client_id", oneLoginClientKeyPem: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9"···, oneLoginAuthenticationSchemeName: "b36cd084-25a8-48d3-9374-0cb871987310", oneLoginRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/callback", oneLoginPostLogoutRedirectUriPath: "/_onelogin/System.Func`1[System.Guid]/logout-callb"···, expectedErrorField: "ClientId", expectedErrorMessage: "Client ID must be 50 characters or less")

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.AcceptTests

✅ Get_WhenUserDoesNotHaveHelpdeskOrAdministratorRole_ReturnsForbidden
✅ Get_WhenUserHasNoRoles_ReturnsForbidden
✅ Get_WithTicketNumberForInactiveIncident_ReturnsBadRequest
✅ Get_WithTicketNumberForNonExistentIncident_ReturnsNotFound
✅ Post_ValidRequest_RedirectsWithFlashMessage
✅ Post_WhenUserDoesNotHaveHelpdeskOrAdministratorRole_ReturnsForbidden

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.IndexTests

✅ Get_UserWithNoRoles_ReturnsForbidden
✅ Get_UserWithoutHelpdeskOrAdministratorRole_ReturnsForbidden
✅ Get_WithTicketNumberForActiveDateOfBirthChangeIncident_RendersExpectedContent
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: False, hasNewMiddleName: False, hasNewLastName: True)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: False, hasNewMiddleName: True, hasNewLastName: False)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: False, hasNewMiddleName: True, hasNewLastName: True)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: True, hasNewMiddleName: False, hasNewLastName: False)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: True, hasNewMiddleName: False, hasNewLastName: True)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: True, hasNewMiddleName: True, hasNewLastName: False)
✅ Get_WithTicketNumberForActiveNameChangeIncident_RendersExpectedContent(hasNewFirstName: True, hasNewMiddleName: True, hasNewLastName: True)
✅ Get_WithTicketNumberForInactiveIncident_ReturnsBadRequest
✅ Get_WithTicketNumberForNonExistentIncident_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.EditChangeRequest.RejectTests

✅ Get_WhenUserDoesNotHaveHelpdeskOrAdministratorRole_ReturnsForbidden
✅ Get_WhenUserHasNoRoles_ReturnsForbidden
✅ Get_WithTicketNumberForInactiveIncident_ReturnsBadRequest
✅ Get_WithTicketNumberForNonExistentIncident_ReturnsNotFound
✅ Post_WhenRejectionReasonChoiceHasNoSelection_ReturnsError
✅ Post_WhenRejectionReasonChoiceIsChangeNoLongerRequired_RedirectsWithFlashMessage
✅ Post_WhenRejectionReasonChoiceIsNotChangeNoLongerRequired_RedirectsWithFlashMessage
✅ Post_WhenUserDoesNotHaveHelpdeskOrAdministratorRole_ReturnsForbidden

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.ChangeRequests.IndexTests

✅ Get_UserWithNoRoles_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent
✅ Get_ValidRequestNoActiveChangeRequests_RendersExpectedContent

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.CheckAnswersTests

✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState(status: Failed)
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState(status: InProgress)
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState(status: Passed)
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForValidPersonReturnsOk
✅ Post_Cancel_DeletesJourneyRedirectsAndDoesNotCreateMq
✅ Post_Confirm_CreatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(status: Failed)
✅ Post_Confirm_CreatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(status: InProgress)
✅ Post_Confirm_CreatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(status: Passed)
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.IndexTests

✅ Get_RedirectsToMqAddProvider

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.ProviderTests

✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForValidPerson_ReturnsOk
✅ Post_WhenNoProviderIsSelected_ReturnsError
✅ Post_WhenProviderIsSelected_RedirectsToSpecialismPage
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.SpecialismTests

✅ Get_ProviderMissingFromState_RedirectsToProvider
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_ProviderMissingFromState_RedirectsToProvider
✅ Post_WhenNoSpecialismIsSelected_ReturnsError
✅ Post_WhenSpecialismIsSelected_RedirectsToStartDatePage
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.StartDateTests

✅ Get_SpecialismMissingFromState_RedirectsToSpecialism
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForValidPerson_ReturnsOk
✅ Post_SpecialismMissingFromState_RedirectToSpecialism
✅ Post_StartDateIsAfterOrEqualToEndDate_RendersError(daysAfter: 0)
✅ Post_StartDateIsAfterOrEqualToEndDate_RendersError(daysAfter: 1)
✅ Post_WhenNoStartDateIsEntered_ReturnsError
✅ Post_WhenStartDateIsEntered_RedirectsToResultPage
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.AddMq.StatusTests

✅ Get_StartDateMissingFromState_RedirectsToStartDate
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForValidPerson_ReturnsOk
✅ Post_EndDateIsBeforeOrEqualToStartDate_RendersError(daysBefore: 0)
✅ Post_EndDateIsBeforeOrEqualToStartDate_RendersError(daysBefore: 1)
✅ Post_StartDateMissingFromState_RedirectsToStartDate
✅ Post_ValidRequest_RedirectsToResultPage
✅ Post_WhenResultIsNotSelected_ReturnsError
✅ Post_WhenResultIsPassedAndEndDateHasNotBeenEntered_ReturnsError
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.DeleteMq.ConfirmTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequest_DisplaysContentAsExpected(providerName: "University of Leeds", specialism: Hearing, startDateString: "2021-10-05", status: Deferred, endDateString: null, deletionReason: ProviderRequest, deletionReasonDetail: null, uploadEvidence: False)
✅ Get_ValidRequest_DisplaysContentAsExpected(providerName: "University of Leeds", specialism: Hearing, startDateString: "2021-10-05", status: Passed, endDateString: "2021-11-05", deletionReason: ProviderRequest, deletionReasonDetail: "Some details about the deletion reason", uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(providerName: null, specialism: null, startDateString: null, status: null, endDateString: null, deletionReason: AnotherReason, deletionReasonDetail: null, uploadEvidence: False)
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_Confirm_DeletesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage
✅ Post_MissingDataInJourneyState_Redirects

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.DeleteMq.IndexTests

✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Get_WithQualificationIdForValidQualification_ReturnsOk
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_ValidInput_RedirectsToConfirmPage
✅ Post_WhenEvidenceFileIsInvalidType_ReturnsError
✅ Post_WhenNoDeletionReasonIsSelected_ReturnsError
✅ Post_WhenNoUploadEvidenceOptionIsSelected_ReturnsError
✅ Post_WhenUploadEvidenceOptionIsYesAndNoFileIsSelected_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.ConfirmTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: "Some reason", uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: null, uploadEvidence: False)
✅ Post_Cancel_DeletesJourneyAndRedirectsAndDoesNotUpdateMq
✅ Post_Confirm_UpdatesMqCreatesEventAndCompletesJourneyRedirectsWithFlashMessage
✅ Post_MissingDataInJourneyState_Redirects

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.IndexTests

✅ Get_ValidRequestWithInitializedJourneyState_PopulatesModelFromJourneyState
✅ Get_ValidRequestWithUninitializedJourneyState_PopulatesModelFromDatabase
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_WhenNoProviderIsSelected_ReturnsError
✅ Post_WhenProviderIsSelected_RedirectsToReasonPage
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Provider.ReasonTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequestWithPopulatedDataInJourneyState_ReturnsOK
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_ValidInput_RedirectsToConfirmPage
✅ Post_WhenEvidenceFileIsInvalidType_ReturnsError
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError
✅ Post_WhenNoUploadEvidenceOptionIsSelected_ReturnsError
✅ Post_WhenUploadEvidenceOptionIsYesAndNoFileIsSelected_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.ConfirmTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: "Some reason", uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: null, uploadEvidence: False)
✅ Post_Cancel_DeletesJourneyRedirectsAndDoesNotUpdateMq
✅ Post_Confirm_UpdatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage
✅ Post_MissingDataInJourneyState_Redirects

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.IndexTests

✅ Get_QualificationWasMigratedFromDqtWithLegacySpecialism_ShowsLegacySpecialisms
✅ Get_QualificationWasMigratedFromDqtWithNonLegacySpecialism_DoesNotShowLegacySpecialisms
✅ Get_ValidRequestWithInitializedJourneyState_PopulatesModelFromJourneyState
✅ Get_ValidRequestWithUninitializedJourneyState_PopulatesModelFromDatabase
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_WhenNoSpecialismIsSelected_ReturnsError
✅ Post_WhenSpecialismIsSelected_RedirectsToReasonPage
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Specialism.ReasonTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequestWithPopulatedDataInJourneyState_ReturnsOK
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_ValidInput_RedirectsToConfirmPage
✅ Post_WhenEvidenceFileIsInvalidType_ReturnsError
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError
✅ Post_WhenNoUploadEvidenceOptionIsSelected_ReturnsError
✅ Post_WhenUploadEvidenceOptionIsYesAndNoFileIsSelected_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.ConfirmTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: "Some reason", uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(changeReasonDetail: null, uploadEvidence: False)
✅ Post_Cancel_DeletesJourneyRedirectsAndDoesNotUpdateMq
✅ Post_Confirm_UpdatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage
✅ Post_MissingDataInJourneyState_Redirects

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.IndexTests

✅ Get_ValidRequestWithInitializedJourneyState_PopulatesModelFromJourneyState
✅ Get_ValidRequestWithUninitializedJourneyState_PopulatesModelFromDatabase
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_StartDateIsAfterOrEqualToEndDate_RendersError(daysAfter: 0)
✅ Post_StartDateIsAfterOrEqualToEndDate_RendersError(daysAfter: 1)
✅ Post_WhenNoStartDateIsEntered_ReturnsError
✅ Post_WhenStartDateIsEntered_RedirectsToReasonPage
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.StartDate.ReasonTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequestWithPopulatedDataInJourneyState_ReturnsOK
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_ValidInput_RedirectsToConfirmPage
✅ Post_WhenEvidenceFileIsInvalidType_ReturnsError
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError
✅ Post_WhenNoUploadEvidenceOptionIsSelected_ReturnsError
✅ Post_WhenUploadEvidenceOptionIsYesAndNoFileIsSelected_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.ConfirmTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequest_DisplaysContentAsExpected(isStatusChange: False, isEndDateChange: True, changeReasonDetail: null, uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(isStatusChange: True, isEndDateChange: False, changeReasonDetail: "some reason", uploadEvidence: True)
✅ Get_ValidRequest_DisplaysContentAsExpected(isStatusChange: True, isEndDateChange: True, changeReasonDetail: null, uploadEvidence: False)
✅ Post_Cancel_DeletesJourneyRedirectsAndDoesNotUpdateMq
✅ Post_Confirm_UpdatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(isStatusChange: False, isEndDateChange: True, changeReasonDetail: null, uploadEvidence: True)
✅ Post_Confirm_UpdatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(isStatusChange: True, isEndDateChange: False, changeReasonDetail: "some reason", uploadEvidence: True)
✅ Post_Confirm_UpdatesMqCreatesEventCompletesJourneyAndRedirectsWithFlashMessage(isStatusChange: True, isEndDateChange: True, changeReasonDetail: null, uploadEvidence: False)
✅ Post_MissingDataInJourneyState_Redirects

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.IndexTests

✅ Get_ValidRequestWithInitializedJourneyState_PopulatesModelFromJourneyState
✅ Get_ValidRequestWithUninitializedJourneyState_PopulatesModelFromDatabase
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_EndDateIsBeforeOrEqualToStartDate_RendersError(daysBefore: 0)
✅ Post_EndDateIsBeforeOrEqualToStartDate_RendersError(daysBefore: 1)
✅ Post_ValidRequest_RedirectsToConfirmPage
✅ Post_WhenResultIsNotSelected_ReturnsError
✅ Post_WhenResultIsSelectedAndEndDateHasNotBeenEntered_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Mqs.EditMq.Status.ReasonTests

✅ Get_MissingDataInJourneyState_Redirects
✅ Get_ValidRequestWithPopulatedDataInJourneyState_ReturnsOK
✅ Get_WithQualificationIdForNonExistentQualification_ReturnsNotFound
✅ Post_Cancel_DeletesJourneyAndRedirects
✅ Post_ValidInput_RedirectsToConfirmPage(isStatusChange: False, isEndDateChange: True)
✅ Post_ValidInput_RedirectsToConfirmPage(isStatusChange: True, isEndDateChange: False)
✅ Post_ValidInput_RedirectsToConfirmPage(isStatusChange: True, isEndDateChange: True)
✅ Post_WhenEvidenceFileIsInvalidType_ReturnsError
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError(isStatusChange: False, isEndDateChange: True)
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError(isStatusChange: True, isEndDateChange: False)
✅ Post_WhenNoChangeReasonIsSelected_ReturnsError(isStatusChange: True, isEndDateChange: True)
✅ Post_WhenNoUploadEvidenceOptionIsSelected_ReturnsError
✅ Post_WhenUploadEvidenceOptionIsYesAndNoFileIsSelected_ReturnsError
✅ Post_WithQualificationIdForNonExistentQualification_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.IndexTests

✅ Get_WithEmptySearchParameter_DisplaysSearchFormOnly
✅ Get_WithNoQueryParameters_DisplaysSearchFormOnly
✅ Get_WithSearchQueryParameterWithNoMatches_DisplaysNoMatches
✅ Get_WithSearchThatLooksLikeADate_DisplaysMatchesOnDateOfBirth
✅ Get_WithSearchThatLooksLikeAName_DisplaysMatchesOnName
✅ Get_WithSearchThatLooksLikeATrn_DisplaysMatchOnTrn

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.AlertsTests

✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForPersonWithCurrentAndPreviousAlerts_DisplaysExpectedContent
✅ Get_WithPersonIdForPersonWithNoAlerts_DisplaysNoCurrentAlerts
✅ Get_WithPersonIdForPersonWithOnlyCurrentAlerts_DisplaysExpectedContent
✅ Get_WithPersonIdForPersonWithOnlyPreviousAlerts_DisplaysExpectedContent

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.ChangeLogMandatoryQualificationEventsTests

✅ Person_WithDeletedMandatoryQualificationEventWithLegacyProvider_RendersExpectedProviderName
✅ Person_WithDeletedMandatoryQualificationEventWithNoProvider_RendersNoneForProviderName
✅ Person_WithMandatoryQualficationDqtDeactivatedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualficationDqtDeactivatedEventWithLegacyProvider_RendersExpectedProviderName
✅ Person_WithMandatoryQualficationDqtDeactivatedEventWithNoProvider_RendersExpectedContent
✅ Person_WithMandatoryQualificationCreatedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationCreatedEventCreatedByDqtUser_RendersExpectedRaisedBy
✅ Person_WithMandatoryQualificationDeletedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationDeletedEventWithEmptyData_RendersExpectedContent
✅ Person_WithMandatoryQualificationDeletedEventWithNoEvidenceFile_DoesNotRenderEvidenceRow
✅ Person_WithMandatoryQualificationDqtReactivatedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationImportedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationMigratedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationMigratedEventWithChangedProvider_RendersProviderRowInPreviousDataSummaryList
✅ Person_WithMandatoryQualificationMigratedEventWithChangedSpecialism_RendersSpecialismRowInPreviousDataSummaryList
✅ Person_WithMandatoryQualificationMigratedEventWithNoChanges_DoesNotRenderPreviousDataSummaryList
✅ Person_WithMandatoryQualificationUpdatedEvent_RendersExpectedContent
✅ Person_WithMandatoryQualificationUpdatedEventWithChangedEndDate_RendersEndDateRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithChangedProvider_RendersTrainingProviderRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithChangedSpecialism_RendersSpecialismRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithChangedStartDate_RendersStartDateRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithChangedStatus_RendersStatusRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithoutChangedProvider_DoesNotRenderTrainingProviderRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithoutChangedSpecialism_DoesNotRenderSpecialismRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithoutChangedStartDate_DoesNotRenderStartDateRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithoutChangedStatus_DoesNotRenderStatusRowWithinPreviousData
✅ Person_WithMandatoryQualificationUpdatedEventWithoutChangeReason_DoesNotRenderReasonForChangeBlock

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.ChangeLogTests

✅ Get_NoChanges_DisplaysNoChangesMessage
✅ Get_PersonDoesNotExist_ReturnsNotFound
✅ Get_PersonWithDateOfBirthChangeCase_RendersExpectedItem(status: Approved, expectedSummaryText: "Approved")
✅ Get_PersonWithDateOfBirthChangeCase_RendersExpectedItem(status: Rejected, expectedSummaryText: "Rejected")
✅ Get_PersonWithNameChangeCase_RendersExpectedItem(status: Approved, expectedSummaryText: "Approved")
✅ Get_PersonWithNameChangeCase_RendersExpectedItem(status: Rejected, expectedSummaryText: "Rejected")
✅ Get_PersonWithNote_RendersExpectedContent
✅ Get_PersonWithTask_RendersExpectedContent
✅ Get_PersonWithTaskWithCompletedStatus_RendersClosedStatus
✅ Get_PersonWithTaskWithPastDueDate_RendersOverdueStatus

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditDateOfBirth.ConfirmTests

✅ Get_StateHasNoDateOfBirth_RedirectsToIndex
✅ Get_ValidRequest_RendersExpectedContent
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_ValidRequest_UpdatesDateOfBirthAndCompletesJourney
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditDateOfBirth.IndexTests

✅ Get_ValidRequestForNewJourney_PopulatesModelFromDqt
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_WithInvalidData_ReturnsError(day: "", month: "", year: "", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Enter a date of birth")
✅ Post_WithInvalidData_ReturnsError(day: "", month: "", year: "1969", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a day and month")
✅ Post_WithInvalidData_ReturnsError(day: "", month: "10", year: "", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a day and year")
✅ Post_WithInvalidData_ReturnsError(day: "", month: "10", year: "1969", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a day")
✅ Post_WithInvalidData_ReturnsError(day: "10", month: "", year: "", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a month and year")
✅ Post_WithInvalidData_ReturnsError(day: "10", month: "", year: "1969", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a month")
✅ Post_WithInvalidData_ReturnsError(day: "10", month: "10", year: "", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must include a year")
✅ Post_WithInvalidData_ReturnsError(day: "32", month: "10", year: "1969", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must be a real date")
✅ Post_WithInvalidData_ReturnsError(day: "Blah", month: "Blah", year: "Blah", expectedErrorElementId: "DateOfBirth", expectedErrorMessage: "Date of birth must be a real date")
✅ Post_WithValidData_RedirectsToConfirmPage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditName.ConfirmTests

✅ Get_StateHasMissingRequiredData_RedirectsToIndex(firstName: "NewFirstName", middleName: null, lastName: null)
✅ Get_StateHasMissingRequiredData_RedirectsToIndex(firstName: null, middleName: "NewMiddleName", lastName: null)
✅ Get_StateHasMissingRequiredData_RedirectsToIndex(firstName: null, middleName: null, lastName: "NewLastName")
✅ Get_StateHasMissingRequiredData_RedirectsToIndex(firstName: null, middleName: null, lastName: null)
✅ Get_ValidRequest_RendersExpectedContent
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_ValidRequest_UpdatesNameAndCompletesJourney
✅ Post_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.EditName.IndexTests

✅ Get_ValidRequestForNewJourney_PopulatesModelFromDqt
✅ Get_ValidRequestWithPopulatedDataInJourneyState_PopulatesModelFromJourneyState
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Post_WithInvalidData_ReturnsExpectedErrors(firstName: "", middleName: "", lastName: "Bloggs", expectedErrorElementId: "FirstName", expectedErrorMessage: "Enter a first name")
✅ Post_WithInvalidData_ReturnsExpectedErrors(firstName: "Joe", middleName: "", lastName: "", expectedErrorElementId: "LastName", expectedErrorMessage: "Enter a last name")
✅ Post_WithInvalidData_ReturnsExpectedErrors(firstName: "Joe", middleName: "", lastName: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, expectedErrorElementId: "LastName", expectedErrorMessage: "Last name must be 100 characters or less")
✅ Post_WithInvalidData_ReturnsExpectedErrors(firstName: "Joe", middleName: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, lastName: "Bloggs", expectedErrorElementId: "MiddleName", expectedErrorMessage: "Middle name must be 100 characters or less")
✅ Post_WithInvalidData_ReturnsExpectedErrors(firstName: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"···, middleName: "", lastName: "Bloggs", expectedErrorElementId: "FirstName", expectedErrorMessage: "First name must be 100 characters or less")
✅ Post_WithValidData_RedirectsToConfirmPage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.IndexTests

✅ Get_WithPersonIdForExistingPersonWithAllPropertiesSet_ReturnsExpectedContent
✅ Get_WithPersonIdForExistingPersonWithMissingProperties_ReturnsExpectedContent
✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Persons.PersonDetail.QualificationsTests

✅ Get_WithPersonIdForNonExistentPerson_ReturnsNotFound
✅ Get_WithPersonIdForPersonWithMandatoryQualifications_DisplaysExpectedContent(providerName: "University of Birmingham", specialism: Hearing, startDateString: "2022-01-05", status: Deferred, endDateString: null)
✅ Get_WithPersonIdForPersonWithMandatoryQualifications_DisplaysExpectedContent(providerName: "University of Birmingham", specialism: Hearing, startDateString: "2022-01-05", status: Passed, endDateString: "2022-07-13")
✅ Get_WithPersonIdForPersonWithMandatoryQualifications_DisplaysExpectedContent(providerName: null, specialism: null, startDateString: null, status: null, endDateString: null)
✅ Get_WithPersonIdForPersonWithNoMandatoryQualifications_DisplaysNoMandatoryQualifications

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Users.AddUser.ConfirmTests

✅ Get_UserIdDoesNotExist_ReturnsNotFound
✅ Get_UserWithoutAdministratorRole_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: False, hasDisabledCrmAccount: False, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: False, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: False, hasDqtRoles: True)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: True, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: True, hasDqtRoles: True)
✅ Post_NoName_RendersError
✅ Post_NoRolesSelected_RendersError
✅ Post_UserIdDoesNotExist_ReturnsNotFound
✅ Post_UserWithoutAdministratorRole_ReturnsForbidden
✅ Post_ValidRequest_CreatesUserEmitsEventAndRedirectsWithFlashMessage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Users.AddUser.IndexTests

✅ Get_UserWithoutAdministratorRole_ReturnsForbidden
✅ Get_WithAdministratorUser_ReturnsOk
✅ Post_EmailDoesNotHaveSuffix_AppendsEducationSuffixBeforeSearching
✅ Post_NoEmailEntered_RendersErrorMessage
✅ Post_UserFound_ButAlreadyExistsInTrs_RedirectsToEditPage
✅ Post_UserFound_RedirectsToConfirmPage
✅ Post_UserNotFound_RendersErrorMessage
✅ Post_UserWithoutAdministratorRole_ReturnsForbidden

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Users.EditUserTests

✅ Get_UserIdDoesNotExist_ReturnsNotFound
✅ Get_UserWithOutAdministratorRole_ReturnsForbidden
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: False, hasDisabledCrmAccount: False, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: False, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: False, hasDqtRoles: True)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: True, hasDqtRoles: False)
✅ Get_ValidRequest_RendersExpectedContent(hasCrmAccount: True, hasDisabledCrmAccount: True, hasDqtRoles: True)
✅ Post_NoName_RendersError
✅ Post_NoRolesSelected_RendersError
✅ Post_UserExistsButIsAlreadyActive_ReturnsBadRequest
✅ Post_UserExistsButIsAlreadyDeactivated_ReturnsBadRequest
✅ Post_UserIdDoesNotExist_ReturnsNotFound
✅ Post_UserWithoutAdministratorRole_ReturnsForbidden
✅ Post_ValidRequest_ActivatesUsersEmitsEventAndRedirectsWithFlashMessage
✅ Post_ValidRequest_CreatesUserEmitsEventAndRedirectsWithFlashMessage(changeName: False, changeRoles: True, expectedEvent: True, expectedChanges: Roles)
✅ Post_ValidRequest_CreatesUserEmitsEventAndRedirectsWithFlashMessage(changeName: True, changeRoles: False, expectedEvent: True, expectedChanges: Name)
✅ Post_ValidRequest_CreatesUserEmitsEventAndRedirectsWithFlashMessage(changeName: True, changeRoles: True, expectedEvent: True, expectedChanges: Name | Roles)
✅ Post_ValidRequest_DeactivatesUsersEmitsEventAndRedirectsWithFlashMessage

✅ TeachingRecordSystem.SupportUi.Tests.PageTests.Users.UsersTests

✅ Get_UserWithAdministratorRole_ReturnsOk
✅ Get_UserWithOutAdministratorRole_ReturnsForbidden
✅ Get_ValidRequestAndUsersFound_RendersUsers