public static string ToDescription(this ApprenticeshipQAUnableToCompleteReasons status) { switch (status) { case ApprenticeshipQAUnableToCompleteReasons.None: return("None"); case ApprenticeshipQAUnableToCompleteReasons.Other: return("Other"); case ApprenticeshipQAUnableToCompleteReasons.ProviderDevelopingProvision: return("Provider Developing Provision"); case ApprenticeshipQAUnableToCompleteReasons.ProviderHasAppliedToTheWrongRoute: return("Provider has applied to the wrong route"); case ApprenticeshipQAUnableToCompleteReasons.ProviderHasWithdrawnApplication: return("Provider has withdrawn application"); case ApprenticeshipQAUnableToCompleteReasons.StandardNotReady: return("Standard not ready"); default: throw new NotImplementedException($"Unknown value: '{status}'."); } }
public Task CreateApprenticeshipQAUnableToCompleteInfo( Guid providerId, ApprenticeshipQAUnableToCompleteReasons unableToCompleteReasons, string comments, string addedByUserId, DateTime addedOn) => WithSqlQueryDispatcher(dispatcher => dispatcher.ExecuteQuery( new CreateApprenticeshipQAUnableToCompleteInfo() { ProviderId = providerId, UnableToCompleteReasons = unableToCompleteReasons, Comments = comments, AddedByUserId = addedByUserId, AddedOn = addedOn }));
public async Task Get_QAReport_For_Unable_To_CompleteQA(ApprenticeshipQAUnableToCompleteReasons unableReason) { //arange var ukprn = 12345; var email = "*****@*****.**"; var providerName = "Provider 1"; var providerUserId = $"{ukprn}-user"; var adminUserId = $"admin-user"; Clock.UtcNow = new DateTime(2019, 5, 17, 9, 3, 27, DateTimeKind.Utc); var requestedOn = Clock.UtcNow; var unableToCompleteComments = "QA Cannot be completed because x"; var providerId = await TestData.CreateProvider( ukprn : ukprn, providerName : providerName, apprenticeshipQAStatus : ApprenticeshipQAStatus.UnableToComplete); var providerUser = await TestData.CreateUser(providerUserId, email, "Provider 1", "Person", providerId); var adminUser = await TestData.CreateUser(adminUserId, "admin", "admin", "admin", null); var standard = await TestData.CreateStandard(standardCode : 1234, version : 1, standardName : "Test Standard"); var apprenticeshipId = await TestData.CreateApprenticeship(providerId, standard, createdBy : providerUser); // Create submission var submissionId = await TestData.CreateApprenticeshipQASubmission( providerId, submittedOn : Clock.UtcNow, submittedByUserId : providerUserId, providerMarketingInformation : "The overview", apprenticeshipIds : new[] { apprenticeshipId }); // Create provider assessment Clock.UtcNow = Clock.UtcNow.AddDays(5); var unableToCompleteOn = Clock.UtcNow; await TestData.CreateApprenticeshipQAUnableToCompleteInfo( providerId, unableToCompleteReasons : unableReason, comments : unableToCompleteComments, addedByUserId : adminUserId, unableToCompleteOn); // Update submission await TestData.UpdateApprenticeshipQASubmission( submissionId, providerAssessmentPassed : false, apprenticeshipAssessmentsPassed : null, passed : null, lastAssessedByUserId : adminUserId, lastAssessedOn : unableToCompleteOn); // Act var response = await HttpClient.GetAsync($"apprenticeship-qa/report"); // Assert var results = await response.AsCsvListOf <ReportModel>(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Collection(results, item => { Assert.Equal(ukprn, item.Ukprn); Assert.Equal(providerName, item.ProviderName); Assert.Equal(email, item.Email); Assert.Equal("No", item.PassedQA); Assert.Empty(item.PassedQAOn); Assert.Equal("No", item.FailedQA); Assert.Empty(item.FailedQAOn); Assert.Equal("Yes", item.UnableToComplete); Assert.Equal(unableToCompleteOn.ToString("dd MMM yyyy"), item.UnableToCompleteOn); Assert.Equal(unableToCompleteComments, item.Notes); Assert.Equal(item.UnableToCompleteReasons, unableReason.ToDescription()); Assert.Equal(ApprenticeshipQAStatus.UnableToComplete.ToDescription(), item.QAStatus); }); }