Skip to content

rename

rename #1533

GitHub Actions / TeachingRecordSystem.Core.Tests test results succeeded Dec 31, 2024 in 0s

259 passed, 0 failed and 2 skipped

Tests passed successfully

βœ…Β TeachingRecordSystem/tests/TeachingRecordSystem.Core.Tests/TestResults/_fv-az1789-900_2024-12-31_10_26_21.trx

261 tests were completed in 99s with 259 passed, 0 failed and 2 skipped.

Test suite Passed Failed Skipped Time
TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertCreatedNotificationMapperTests 2βœ… 5s
TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertDeletedNotificationMapperTests 2βœ… 5s
TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertUpdatedNotificationMapperTests 3βœ… 6s
TeachingRecordSystem.Core.Tests.DataStore.Postgres.Models.MandatoryQualificationProviderTests 40βœ… 5ms
TeachingRecordSystem.Core.Tests.DataStore.Postgres.Models.PersonTests 18βœ… 67ms
TeachingRecordSystem.Core.Tests.EventInfoTests 2βœ… 54ms
TeachingRecordSystem.Core.Tests.Jobs.BatchSendEytsAwardedEmailsJobTests 8βœ… 2s
TeachingRecordSystem.Core.Tests.Jobs.BatchSendInductionCompletedEmailsJobTests 8βœ… 2s
TeachingRecordSystem.Core.Tests.Jobs.BatchSendInternationalQtsAwardedEmailsJobTests 8βœ… 3s
TeachingRecordSystem.Core.Tests.Jobs.BatchSendQtsAwardedEmailsJobTests 8βœ… 2s
TeachingRecordSystem.Core.Tests.Jobs.EytsAwardedEmailJobDispatcherTests 1βœ… 235ms
TeachingRecordSystem.Core.Tests.Jobs.InductionCompletedEmailJobDispatcherTests 1βœ… 73ms
TeachingRecordSystem.Core.Tests.Jobs.InternationalQtsAwardedEmailJobDispatcherTests 1βœ… 42ms
TeachingRecordSystem.Core.Tests.Jobs.QtsAwardedEmailJobDispatcherTests 1βœ… 243ms
TeachingRecordSystem.Core.Tests.Jobs.SendInductionCompletedEmailJobTests 1βœ… 132ms
TeachingRecordSystem.Core.Tests.Jobs.SendInternationalQtsAwardedEmailJobTests 1βœ… 59ms
TeachingRecordSystem.Core.Tests.Jobs.SendQtsAwardedEmailJobTests 1βœ… 109ms
TeachingRecordSystem.Core.Tests.Jobs.SyncAllInductionsFromCrmJobTests 1βšͺ 1ms
TeachingRecordSystem.Core.Tests.Services.Certificates.CertificateGeneratorTests 1βœ… 1s
TeachingRecordSystem.Core.Tests.Services.DqtOutbox.OutboxMessageHandlerTests 1βœ… 3s
TeachingRecordSystem.Core.Tests.Services.Establishments.Gias.EstablishmentRefresherTests 2βœ… 2s
TeachingRecordSystem.Core.Tests.Services.Establishments.Tps.TpsEstablishmentRefresherTests 10βœ… 169ms
TeachingRecordSystem.Core.Tests.Services.PersonMatching.PersonMatchingServiceTests 40βœ… 27s
TeachingRecordSystem.Core.Tests.Services.TrsDataSync.TrsDataSyncHelperTests 43βœ… 1βšͺ 32s
TeachingRecordSystem.Core.Tests.Services.TrsDataSync.TrsDataSyncServiceTests 6βœ… 4s
TeachingRecordSystem.Core.Tests.Services.Webhooks.WebhookDeliveryServiceTests 6βœ… 4s
TeachingRecordSystem.Core.Tests.Services.Webhooks.WebhookSenderTests 1βœ… 610ms
TeachingRecordSystem.Core.Tests.Services.WorkforceData.TpsCsvExtractFileImporterTests 25βœ… 251ms
TeachingRecordSystem.Core.Tests.Services.WorkforceData.TpsCsvExtractProcessorTests 17βœ… 9s
TeachingRecordSystem.Core.Tests.Services.WorkforceData.WorkforceDataExporterTests 1βœ… 817ms

βœ…Β TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertCreatedNotificationMapperTests

βœ… MapEventAsync_AlertIsInternalOnly_ReturnsNull
βœ… MapEventAsync_AlertIsNotInternalOnly_ReturnsNotification

βœ…Β TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertDeletedNotificationMapperTests

βœ… MapEventAsync_AlertIsInternalOnly_ReturnsNull
βœ… MapEventAsync_AlertIsNotInternalOnly_ReturnsNotification

βœ…Β TeachingRecordSystem.Core.Tests.ApiSchema.VNext.WebhookData.AlertUpdatedNotificationMapperTests

βœ… MapEventAsync_AlertIsInternalOnly_ReturnsNull
βœ… MapEventAsync_AlertIsNotInternalOnly_ReturnsNotification
βœ… MapEventAsync_OnlyLinkIsChanged_ReturnsNull

βœ…Β TeachingRecordSystem.Core.Tests.DataStore.Postgres.Models.MandatoryQualificationProviderTests

βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "10", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "100", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "110", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "120", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "130", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "140", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "150", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "160", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "170", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "180", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "190", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "20", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "200", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "210", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "220", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "230", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "240", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "30", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "40", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "50", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "60", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "70", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "80", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "90", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "950", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "951", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "952", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "953", expectedResult: False)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "954", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "955", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "956", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "957", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "958", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "959", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "960", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "961", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "962", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "963", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "964", expectedResult: True)
βœ… TryMapFromDqtMqEstablishment_ReturnsExpectedResult(mqestablishmentValue: "965", expectedResult: True)

βœ…Β TeachingRecordSystem.Core.Tests.DataStore.Postgres.Models.PersonTests

βœ… InductionManagedByCpd_ReturnsTrue(yearsSinceCompleted: -3, expected: False)
βœ… InductionManagedByCpd_ReturnsTrue(yearsSinceCompleted: -7, expected: True)
βœ… SetCpdInductionStatus_PersonIsExemptAndNewStatusIsNotPassed_KeepsOverallStatusAsExempt(status: InProgress)
βœ… SetCpdInductionStatus_PersonIsExemptAndNewStatusIsNotPassed_KeepsOverallStatusAsExempt(status: RequiredToComplete)
βœ… SetCpdInductionStatus_PersonIsExemptAndNewStatusIsPassed_SetsOverallStatusToPassed
βœ… SetCpdInductionStatus_SetsOverallStatusAndOutsEvent(status: InProgress)
βœ… SetCpdInductionStatus_SetsOverallStatusAndOutsEvent(status: Passed)
βœ… SetCpdInductionStatus_SetsOverallStatusAndOutsEvent(status: RequiredToComplete)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: False, currentStatus: Exempt)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: False, currentStatus: Failed)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: False, currentStatus: InProgress)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: False, currentStatus: Passed)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: True, currentStatus: Exempt)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: True, currentStatus: Failed)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: True, currentStatus: InProgress)
βœ… TrySetWelshInductionStatus_StatusIsAlreadySetToHigherPriorityStatus_ReturnsFalse(passed: True, currentStatus: Passed)
βœ… TrySetWelshInductionStatus_StatusIsAtLowerPriorityStatus_UpdatesStatusAndReturnsTrue(passed: False, currentStatus: RequiredToComplete, expectedStatus: FailedInWales, expectedExemptionReasons: None)
βœ… TrySetWelshInductionStatus_StatusIsAtLowerPriorityStatus_UpdatesStatusAndReturnsTrue(passed: True, currentStatus: RequiredToComplete, expectedStatus: Exempt, expectedExemptionReasons: PassedInductionInWales)

βœ…Β TeachingRecordSystem.Core.Tests.EventInfoTests

βœ… EventSerializesCorrectly
βœ… EventWithDqtUserIdSerializesRaisedByCorrectly

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.BatchSendEytsAwardedEmailsJobTests

βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2022-05-23T00:00:00.0000000Z, previousJobLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-03-26T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-03-30T08:00:00.0000000Z, startExpected: 2023-03-26T00:00:00.0000000Z, endExpected: 2023-03-27T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-04-01T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-04-05T08:00:00.0000000Z, startExpected: 2023-04-01T00:00:00.0000000Z, endExpected: 2023-04-02T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-10-29T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-11-02T08:00:00.0000000Z, startExpected: 2023-10-29T00:00:00.0000000Z, endExpected: 2023-10-30T00:00:00.0000000Z)
βœ… Execute_WhenDoesNotHaveAwardeesForDateRange_UpdatesDatabaseOnly
βœ… Execute_WhenEnqueueFails_DoesNotUpdateDatabase
βœ… Execute_WhenHasAwardeesForDateRange_UpdatesDatabaseAndEnqueuesJobToSendEmail

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.BatchSendInductionCompletedEmailsJobTests

βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2022-05-23T00:00:00.0000000Z, previousJobLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-03-26T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-03-30T08:00:00.0000000Z, startExpected: 2023-03-26T00:00:00.0000000Z, endExpected: 2023-03-27T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-04-01T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-04-05T08:00:00.0000000Z, startExpected: 2023-04-01T00:00:00.0000000Z, endExpected: 2023-04-02T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-10-29T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-11-02T08:00:00.0000000Z, startExpected: 2023-10-29T00:00:00.0000000Z, endExpected: 2023-10-30T00:00:00.0000000Z)
βœ… Execute_WhenDoesNotHaveCompleteesForDateRange_UpdatesDatabaseOnly
βœ… Execute_WhenEnqueueFails_DoesNotUpdateDatabase
βœ… Execute_WhenHasCompleteesForDateRange_UpdatesDatabaseAndEnqueuesJobToSendEmail

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.BatchSendInternationalQtsAwardedEmailsJobTests

βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2022-05-23T00:00:00.0000000Z, previousJobLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-03-26T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-03-30T08:00:00.0000000Z, startExpected: 2023-03-26T00:00:00.0000000Z, endExpected: 2023-03-27T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-04-01T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-04-05T08:00:00.0000000Z, startExpected: 2023-04-01T00:00:00.0000000Z, endExpected: 2023-04-02T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-10-29T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-11-02T08:00:00.0000000Z, startExpected: 2023-10-29T00:00:00.0000000Z, endExpected: 2023-10-30T00:00:00.0000000Z)
βœ… Execute_WhenDoesNotHaveAwardeesForDateRange_UpdatesDatabaseOnly
βœ… Execute_WhenEnqueueFails_DoesNotUpdateDatabase
βœ… Execute_WhenHasAwardeesForDateRange_UpdatesDatabaseAndEnqueuesJobToSendEmail

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.BatchSendQtsAwardedEmailsJobTests

βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2022-05-23T00:00:00.0000000Z, previousJobLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-02-02T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-02-06T08:00:00.0000000Z, startExpected: 2023-02-02T00:00:00.0000000Z, endExpected: 2023-02-03T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-03-26T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-03-30T08:00:00.0000000Z, startExpected: 2023-03-26T00:00:00.0000000Z, endExpected: 2023-03-27T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-04-01T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-04-05T08:00:00.0000000Z, startExpected: 2023-04-01T00:00:00.0000000Z, endExpected: 2023-04-02T00:00:00.0000000Z)
βœ… Execute_ForMultipleScenarios_EvaluatesDateRangeCorrectly(initialLastAwardedToUtc: 2023-10-29T00:00:00.0000000Z, previousJobLastAwardedToUtc: null, utcNow: 2023-11-02T08:00:00.0000000Z, startExpected: 2023-10-29T00:00:00.0000000Z, endExpected: 2023-10-30T00:00:00.0000000Z)
βœ… Execute_WhenDoesNotHaveAwardeesForDateRange_UpdatesDatabaseOnly
βœ… Execute_WhenEnqueueFails_DoesNotUpdateDatabase
βœ… Execute_WhenHasAwardeesForDateRange_UpdatesDatabaseAndEnqueuesJobToSendEmail

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.EytsAwardedEmailJobDispatcherTests

βœ… Execute_WhenCalled_EnqueuesSendEmailJobForAllUnsentItems

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.InductionCompletedEmailJobDispatcherTests

βœ… Execute_WhenCalled_EnqueuesSendEmailJobForAllUnsentItems

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.InternationalQtsAwardedEmailJobDispatcherTests

βœ… Execute_WhenCalled_EnqueuesSendEmailJobForAllUnsentItems

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.QtsAwardedEmailJobDispatcherTests

βœ… Execute_WhenCalled_EnqueuesSendEmailJobForAllUnsentItems

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.SendInductionCompletedEmailJobTests

βœ… Execute_WhenCalled_GetsTrnTokenSendsEmailAddsEventAndUpdatesDatabase

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.SendInternationalQtsAwardedEmailJobTests

βœ… Execute_WhenCalled_GetsTrnTokenSendsEmailAddsEventAndUpdatesDatabase

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.SendQtsAwardedEmailJobTests

βœ… Execute_WhenCalled_GetsTrnTokenSendsEmailAddsEventAndUpdatesDatabase

βœ…Β TeachingRecordSystem.Core.Tests.Jobs.SyncAllInductionsFromCrmJobTests

βšͺ SyncInductionsAsync_WithExistingDqtInduction_UpdatesPersonRecord

βœ…Β TeachingRecordSystem.Core.Tests.Services.Certificates.CertificateGeneratorTests

βœ… GenerateCertificate_GetsTemplateFromBlobStorageAndSetFieldValuesAsExpected

βœ…Β TeachingRecordSystem.Core.Tests.Services.DqtOutbox.OutboxMessageHandlerTests

βœ… HandleOutboxMessage_ForTrnRequestMetadataMessage_AddsTrnRequestMetadataToDb

βœ…Β TeachingRecordSystem.Core.Tests.Services.Establishments.Gias.EstablishmentRefresherTests

βœ… RefreshEstablishments_WhenCalledForExistingUrn_UpdatesEstablishment
βœ… RefreshEstablishments_WhenCalledforNewUrn_AddsNewEstablishments

βœ…Β TeachingRecordSystem.Core.Tests.Services.Establishments.Tps.TpsEstablishmentRefresherTests

βœ… ImportFile_WithRowData_InsertsRecordsAsExpected(scenarioData: TpsEstablishmentFileImportTestScenarioData { IsExpectedToBeImported = False, Row = TpsEstablishmentCsvRow { EmployersName = "Employers Name", EstablishmentCode = "1234", LaCode = "123", SchoolClosedDate = "1234", SchoolGiasName = "School Gias Name" } })
βœ… ImportFile_WithRowData_InsertsRecordsAsExpected(scenarioData: TpsEstablishmentFileImportTestScenarioData { IsExpectedToBeImported = False, Row = TpsEstablishmentCsvRow { EmployersName = "Employers Name", EstablishmentCode = "1234", LaCode = "1234", SchoolClosedDate = "03/02/2023", SchoolGiasName = "School Gias Name" } })
βœ… ImportFile_WithRowData_InsertsRecordsAsExpected(scenarioData: TpsEstablishmentFileImportTestScenarioData { IsExpectedToBeImported = False, Row = TpsEstablishmentCsvRow { EmployersName = "Employers Name", EstablishmentCode = "12345", LaCode = "123", SchoolClosedDate = "03/02/2023", SchoolGiasName = "School Gias Name" } })
βœ… ImportFile_WithRowData_InsertsRecordsAsExpected(scenarioData: TpsEstablishmentFileImportTestScenarioData { IsExpectedToBeImported = True, Row = TpsEstablishmentCsvRow { EmployersName = "Employers Name", EstablishmentCode = "1234", LaCode = "123", SchoolClosedDate = "03/02/2023", SchoolGiasName = "School Gias Name" } })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = "Employers Name 2", ExpectedLaName = "Hackney", IsExpectedToGenerateEstablishment = True, TpsEstablishments = [TpsEstablishment { EmployersName = "Employers Name 1", EstablishmentCode = "0000", LaCode = "204", SchoolClosedDate = 01/01/2023, SchoolGiasName = null, Β·Β·Β· }, TpsEstablishment { EmployersName = "Employers Name 2", EstablishmentCode = "0000", LaCode = "204", SchoolClosedDate = null, SchoolGiasName = null, Β·Β·Β· }] })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = "Employers Name", ExpectedLaName = "Hackney", IsExpectedToGenerateEstablishment = True, TpsEstablishments = [TpsEstablishment { EmployersName = "Employers Name", EstablishmentCode = "0000", LaCode = "204", SchoolClosedDate = null, SchoolGiasName = null, Β·Β·Β· }] })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = "Employers Name", ExpectedLaName = null, IsExpectedToGenerateEstablishment = True, TpsEstablishments = [TpsEstablishment { EmployersName = "Employers Name", EstablishmentCode = "0000", LaCode = "751", SchoolClosedDate = null, SchoolGiasName = "School Gias Name", Β·Β·Β· }] })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = "Full and Part-Time Youth and Community Worker", ExpectedLaName = "City of London", IsExpectedToGenerateEstablishment = True, TpsEstablishments = [TpsEstablishment { EmployersName = "CORPORATION OF LONDON", EstablishmentCode = "0972", LaCode = "201", SchoolClosedDate = null, SchoolGiasName = null, Β·Β·Β· }] })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = "Full and Part-Time Youth and Community Worker", ExpectedLaName = "Hackney", IsExpectedToGenerateEstablishment = True, TpsEstablishments = [TpsEstablishment { EmployersName = "Hackney", EstablishmentCode = "0972", LaCode = "204", SchoolClosedDate = null, SchoolGiasName = null, Β·Β·Β· }] })
βœ… RefreshEstablishments_WithTpsEstablishments_UpdatesEstablishmentsAsExpected(scenarioData: TpsEstablishmentRefreshTestScenarioData { ExpectedEstablishmentName = null, ExpectedLaName = null, IsExpectedToGenerateEstablishment = False, TpsEstablishments = [TpsEstablishment { EmployersName = "Hackney", EstablishmentCode = "2654", LaCode = "204", SchoolClosedDate = null, SchoolGiasName = null, Β·Β·Β· }] })

βœ…Β TeachingRecordSystem.Core.Tests.Services.PersonMatching.PersonMatchingServiceTests

βœ… GetMatchedAttributes_ReturnsExpectedResults(usePersonNino: False)
βœ… GetMatchedAttributes_ReturnsExpectedResults(usePersonNino: True)
βœ… GetSuggestedMatches_ReturnsExpectedResults(usePersonNino: False)
βœ… GetSuggestedMatches_ReturnsExpectedResults(usePersonNino: True)
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesAlias, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedButDifferent, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: NotSpecified, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: SpecifiedButDifferent, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedButDifferent, trnOption: NotSpecified, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedButDifferent, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MatchesPersonName, dateOfBirthOption: NotSpecifed, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesEmploymentNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: NotSpecified, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedButDifferent, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, NationalInsuranceNumber])
βœ… Match_ReturnsExpectedResult(nameOption: MultipleSpecifiedAndOneMatchesPersonName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedButDifferent, trnOption: SpecifiedAndMatches, expectMatch: True, expectedMatchedAttributes: [FullName, DateOfBirth, Trn])
βœ… Match_ReturnsExpectedResult(nameOption: NoFullName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: NotSpecifed, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedAndMatchesPersonNino, trnOption: SpecifiedAndMatches, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: SpecifiedButDifferentFirstName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: NotSpecified, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: SpecifiedButDifferentLastName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: NotSpecified, trnOption: NotSpecified, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: SpecifiedButDifferentLastName, dateOfBirthOption: MatchesPersonDateOfBirth, nationalInsuranceNumberOption: SpecifiedButDifferent, trnOption: SpecifiedButDifferent, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_ReturnsExpectedResult(nameOption: SpecifiedButDifferentLastName, dateOfBirthOption: SpecifiedButDifferent, nationalInsuranceNumberOption: NotSpecified, trnOption: NotSpecified, expectMatch: False, expectedMatchedAttributes: null)
βœ… Match_WithMultipleMatchingNames_ReturnsResult
βœ… Match_WithMultipleMatchingResults_ReturnsNull

βœ…Β TeachingRecordSystem.Core.Tests.Services.TrsDataSync.TrsDataSyncHelperTests

βœ… DeleteRecordsAsync_WithPerson_RemovesRowFromDb
βœ… SyncAlertAsync_NewRecord_WritesNewRowToDb(personAlreadySynced: False)
βœ… SyncAlertAsync_NewRecord_WritesNewRowToDb(personAlreadySynced: True)
βœ… SyncAlertAsync_SanctionCodeIsRedundant_IsNotWrittenToDb
βœ… SyncAlertAsync_WithDeactivatedEvent_SetsDeletedOnAttribute
βœ… SyncAlertAsync_WithDqtCreateAudit_CreatesExpectedEvents
βœ… SyncAlertAsync_WithDqtDeactivatedAudit_CreatesExpectedEvent
βœ… SyncAlertAsync_WithDqtReactivatedAudit_CreatesExpectedEvents
βšͺ SyncAlertAsync_WithDqtUpdateAudit_CreatesExpectedEvents
βœ… SyncAlertAsync_WithNoDqtAudit_CreatesExpectedEvents
βœ… SyncAlertAsync_WithNoDqtCreateButWithUpdateAudits_CreatesExpectedEvents
βœ… SyncEventsAsync_NewRecord_WritesNewRowToDb
βœ… SyncInductionsAsync_WithContactOnlyInductionStatus_UpdatesPersonRecord(personAlreadySynced: False)
βœ… SyncInductionsAsync_WithContactOnlyInductionStatus_UpdatesPersonRecord(personAlreadySynced: True)
βœ… SyncInductionsAsync_WithDqtCreateAudit_CreatesExpectedEvents
βœ… SyncInductionsAsync_WithDqtDeactivatedAudit_CreatesExpectedEvent
βœ… SyncInductionsAsync_WithDqtReactivatedAudit_CreatesExpectedEvent
βœ… SyncInductionsAsync_WithDqtUpdateAudit_CreatesExpectedEvents
βœ… SyncInductionsAsync_WithExistingDqtInduction_UpdatesPersonRecord
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: Exempt, expectedTrsInductionStatus: Exempt)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: Fail, expectedTrsInductionStatus: Failed)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: FailedinWales, expectedTrsInductionStatus: FailedInWales)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: InductionExtended, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: InProgress, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: NotYetCompleted, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: Pass, expectedTrsInductionStatus: Passed)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: PassedinWales, expectedTrsInductionStatus: Exempt)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: False, dqtInductionStatus: RequiredtoComplete, expectedTrsInductionStatus: RequiredToComplete)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: Exempt, expectedTrsInductionStatus: Exempt)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: Fail, expectedTrsInductionStatus: Failed)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: FailedinWales, expectedTrsInductionStatus: FailedInWales)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: InductionExtended, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: InProgress, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: NotYetCompleted, expectedTrsInductionStatus: InProgress)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: Pass, expectedTrsInductionStatus: Passed)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: PassedinWales, expectedTrsInductionStatus: Exempt)
βœ… SyncInductionsAsync_WithInduction_UpdatesPersonRecord(personAlreadySynced: True, dqtInductionStatus: RequiredtoComplete, expectedTrsInductionStatus: RequiredToComplete)
βœ… SyncInductionsAsync_WithNoDqtAudit_CreatesExpectedEvents
βœ… SyncInductionsAsync_WithNoDqtCreateButWithUpdateAudits_CreatesExpectedEvents
βœ… SyncInductionsAsync_WithQtls_UpdatesPersonRecord
βœ… SyncInductionsAsync_WithQtlsButNotExemptAndIgnoreInvalidSetToFalse_ThrowsException
βœ… SyncPersonAsync_AlreadyHaveNewerVersion_DoesNotUpdateDatabase
βœ… SyncPersonAsync_ExistingRecord_UpdatesExistingRowInDb
βœ… SyncPersonAsync_NewRecord_WritesNewRowToDb

βœ…Β TeachingRecordSystem.Core.Tests.Services.TrsDataSync.TrsDataSyncServiceTests

βœ… Contact_DeletedRecord_DeletesPersonRecordFromDatabase
βœ… Contact_NewRecord_WritesNewPersonRecordToDatabase
βœ… Contact_UpdatedRecord_WritesUpdatedPersonRecordToDatabase
βœ… Induction_NewRecord_WritesUpdatedPersonRecordToDatabase(personAlreadySynced: False)
βœ… Induction_NewRecord_WritesUpdatedPersonRecordToDatabase(personAlreadySynced: True)
βœ… Induction_UpdatedRecord_WritesUpdatedPersonRecordToDatabase

βœ…Β TeachingRecordSystem.Core.Tests.Services.Webhooks.WebhookDeliveryServiceTests

βœ… SendMessagesAsync_DoesNotSendMessageDueInFuture
βœ… SendMessagesAsync_NoOutstandingMessages_ReturnsMoreRecordsFalse
βœ… SendMessagesAsync_OutstandingMessages_ReturnsMoreRecordsTrue
βœ… SendMessagesAsync_SenderFails_UpdatesDbWithDueTimeForRetry
βœ… SendMessagesAsync_SenderFailsAndNoMoreRetriesAllowed_UpdatesDbWithNullDueTime
βœ… SendMessagesAsync_SendsDueMessageAndUpdatesDb

βœ…Β TeachingRecordSystem.Core.Tests.Services.Webhooks.WebhookSenderTests

βœ… SendMessageAsync_SendsMessageWithExpectedContent

βœ…Β TeachingRecordSystem.Core.Tests.Services.WorkforceData.TpsCsvExtractFileImporterTests

βœ… CopyValidFormatDataToStaging_WithValidData_InsertsRecordWithExpectedResult
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = DateOfBirthIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "1234", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = DateOfBirthIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = null, DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = DateOfDeathIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "1234", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = EmploymentEndDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "1234", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = EmploymentEndDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = null, EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = EmploymentStartDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "1234", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = EmploymentStartDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = null, EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = EstablishmentNumberIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "12345", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = ExtractDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = ExtractDateIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = FullOrPartTimeIndicatorIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = FullOrPartTimeIndicatorIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = GenderIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = GenderIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = LocalAuthorityCodeIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = LocalAuthorityCodeIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = NationalInsuranceNumberIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = NationalInsuranceNumberIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = None, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = None, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = null, Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = None, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = null, EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = TrnIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = TrnIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })
βœ… ImportFile_WithRowData_InsertsRecordWithExpectedResult(testScenarioData: TpsCsvExtractFileImportTestScenarioData { ExpectedResult = WithdrawlIndicatorIncorrectFormat, Row = TpsCsvExtractRowRaw { DateOfBirth = "01/01/1980", DateOfDeath = "01/02/2024", EmploymentEndDate = "03/05/2024", EmploymentStartDate = "03/02/2023", EstablishmentCode = "1234", Β·Β·Β· } })

βœ…Β TeachingRecordSystem.Core.Tests.Services.WorkforceData.TpsCsvExtractProcessorTests

βœ… BackfillNinoAndPersonPostcodeInEmploymentHistory_WhenCalledWithPersonEmploymentRecordsWithoutNinoAndPersonPostcode_SetsNinoAndPersonPostcode
βœ… ProcessEndedEmployments_WithLastKnownEmployedDateGreaterThanThreeMonthsBeforeLastExtractDate_SetsEndDateOnPersonEmploymentRecord
βœ… ProcessNewEmploymentHistory_ForLaCodeAndEstablishmentNumberWithMultipleEstablishmentEntries_MatchesToTheMostOpenEstablishment
βœ… ProcessNewEmploymentHistory_WhenCalledWithEndDateInTheFuture_SetsLastKnownEmployedDateToExtractDate
βœ… ProcessNewEmploymentHistory_WhenCalledWithLastKnownEmployedDateOlderThanFiveMonths_SetsEndDate
βœ… ProcessNewEmploymentHistory_WhenCalledWithNewEmploymentHistory_InsertsNewPersonEmploymentRecord
βœ… ProcessNewEmploymentHistory_WhenCalledWithWithdrawalIndicatorSet_SetsEndDate
βœ… ProcessNewEmploymentHistory_WithValidData_OnlyMatchesToLaCodeAndPostCodeForHigherEducationIfNoMatchOnLaCodeAndEstablishment
βœ… ProcessNonMatchingEstablishments_WhenCalledWithEstablishmentsNotMatchingEstablishmentsInTrs_SetsResultToInvalidEstablishment
βœ… ProcessNonMatchingTrns_WhenCalledWithTrnsNotMatchingPersonsInTrs_SetsResultToInvalidTrn
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithEndDateInTheFuture_SetsLastKnownEmployedDateToExtractDate
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithLastKnownEmployedDateOlderThanFiveMonths_SetsEndDate
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithUpdatedEmploymentHistory_UpdatesPersonEmploymentRecord
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithUpdatedEmploymentHistoryWithNoChanges_SetsResultToValidNoChanges
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithWithdrawalIndicatorNowRemoved_ResetsEndDate
βœ… ProcessUpdatedEmploymentHistory_WhenCalledWithWithdrawalIndicatorSet_SetsEndDate
βœ… UpdateLatestEstablishmentVersions_WithEstablishmentChangingUrn_UpdatesPersonEmploymentRecord

βœ…Β TeachingRecordSystem.Core.Tests.Services.WorkforceData.WorkforceDataExporterTests

βœ… Export_WhenCalled_ExportsDataToParquetFileAndUploadsToGcs