public async Task Post_InvalidStatusReturnsBadRequest(ApprenticeshipQAStatus status) { // Arrange var provider = await TestData.CreateProvider( providerName : "Provider 1", apprenticeshipQAStatus : status); var providerUser = await TestData.CreateUser(providerId : provider.ProviderId); var standard = await TestData.CreateStandard(standardCode : 1234, version : 1, standardName : "Test Standard"); var apprenticeshipId = (await TestData.CreateApprenticeship(provider.ProviderId, standard, createdBy: User.ToUserInfo())).Id; await TestData.CreateApprenticeshipQASubmission( provider.ProviderId, submittedOn : Clock.UtcNow, submittedByUserId : providerUser.UserId, providerMarketingInformation : "The overview", apprenticeshipIds : new[] { apprenticeshipId }); await User.AsHelpdesk(); var requestContent = new FormUrlEncodedContentBuilder() .Add("UnableToComplete", bool.FalseString) .ToContent(); // Act var response = await HttpClient.PostAsync($"apprenticeship-qa/{provider.ProviderId}/status", requestContent); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Post_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); var standard = await TestData.CreateStandard(standardCode : 123, version : 1, standardName : "My standard"); await User.AsProviderUser(provider.ProviderId, ProviderType.FE); var flowModel = new FlowModel(); flowModel.SetApprenticeshipStandard(standard); var mptxInstance = CreateMptxInstance(flowModel); var requestContent = new FormUrlEncodedContentBuilder() .Add("MarketingInformation", "Apprenticeship info") .Add("ContactEmail", "*****@*****.**") .Add("ContactTelephone", "01234 567890") .ToContent(); // Act var response = await HttpClient.PostAsync( $"new-apprenticeship-provider/apprenticeship-details?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}", requestContent); // Act Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Post_ValidSetsCorrectStatusAndRequestRendersExpectedOutput( bool passed, ApprenticeshipQAStatus expectedStatus, bool expectApprenticeshipToBeMadeLive) { // Arrange var provider = await TestData.CreateProvider( providerName : "Provider 1", apprenticeshipQAStatus : ApprenticeshipQAStatus.InProgress); var providerUser = await TestData.CreateUser(providerId : provider.ProviderId); var standard = await TestData.CreateStandard(standardCode : 1234, version : 1, standardName : "Test Standard"); var apprenticeshipId = (await TestData.CreateApprenticeship(provider.ProviderId, standard, createdBy: User.ToUserInfo())).ApprenticeshipId; var submissionId = await TestData.CreateApprenticeshipQASubmission( provider.ProviderId, submittedOn : Clock.UtcNow, submittedByUserId : providerUser.UserId, providerMarketingInformation : "The overview", apprenticeshipIds : new[] { apprenticeshipId }); await TestData.UpdateApprenticeshipQASubmission( submissionId, providerAssessmentPassed : passed, apprenticeshipAssessmentsPassed : passed, passed : passed, lastAssessedByUserId : User.UserId, lastAssessedOn : Clock.UtcNow); await User.AsHelpdesk(); var requestContent = new FormUrlEncodedContentBuilder().ToContent(); // Act var response = await HttpClient.PostAsync($"apprenticeship-qa/{provider.ProviderId}/complete", requestContent); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var doc = await response.GetDocument(); var providerName = doc.GetElementById("pttcd-apprenticeship-qa-complete-provider-name").TextContent.Trim(); Assert.Equal("Provider 1", providerName); var newStatus = await WithSqlQueryDispatcher(dispatcher => dispatcher.ExecuteQuery(new GetProviderApprenticeshipQAStatus() { ProviderId = provider.ProviderId })); Assert.Equal(expectedStatus, newStatus); if (expectApprenticeshipToBeMadeLive) { SqlQuerySpy.VerifyQuery <PublishApprenticeship, OneOf <NotFound, Success> >( q => q.ApprenticeshipId == apprenticeshipId && q.PublishedBy.UserId == User.UserId && q.PublishedOn == Clock.UtcNow); } }
public async Task Get_QAStatusNotValid_ReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var providerId = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); var standardCode = 123; var standardVersion = 1; var standard = await TestData.CreateStandard(standardCode, standardVersion, standardName : "My standard"); await User.AsProviderUser(providerId, ProviderType.Apprenticeships); var flowModel = new FlowModel(); flowModel.SetProviderDetails("Provider 1 rocks"); flowModel.SetApprenticeshipStandardOrFramework(standard); flowModel.SetApprenticeshipDetails( marketingInformation: "My apprenticeship", website: "http://provider.com/apprenticeship", contactTelephone: "01234 5678902", contactEmail: "*****@*****.**", contactWebsite: "http://provider.com"); flowModel.SetApprenticeshipLocationType(ApprenticeshipLocationType.EmployerBased); flowModel.SetApprenticeshipIsNational(true); var mptxInstance = CreateMptxInstance(flowModel); // Act var response = await HttpClient.GetAsync( $"new-apprenticeship-provider/apprenticeship-confirmation?providerId={providerId}&ffiid={mptxInstance.InstanceId}"); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public static string ToDescription(this ApprenticeshipQAStatus status) { if (status.HasFlag(ApprenticeshipQAStatus.UnableToComplete)) { return("Unable to complete"); } switch (status) { case ApprenticeshipQAStatus.NotStarted: return("New provider"); case ApprenticeshipQAStatus.Submitted: return("Ready for QA"); case ApprenticeshipQAStatus.InProgress: return("In progress"); case ApprenticeshipQAStatus.Failed: return("Failed"); case ApprenticeshipQAStatus.Passed: return("Passed"); default: throw new NotImplementedException($"Unknown value: '{status}'."); } }
public async Task Post_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(provider.ProviderId, ProviderType.Apprenticeships); var flowModel = new FlowModel(); flowModel.SetApprenticeshipLocationType(ApprenticeshipLocationType.EmployerBased); flowModel.SetApprenticeshipIsNational(false); var mptxInstance = CreateMptxInstance(flowModel); var regions = await RegionCache.GetAllRegions(); var subRegion1Id = regions.First().SubRegions.First().Id; var subRegion2Id = regions.Skip(1).First().SubRegions.First().Id; var requestContent = new FormUrlEncodedContentBuilder() .Add("RegionIds", subRegion1Id) .Add("RegionIds", subRegion2Id) .ToContent(); // Act var response = await HttpClient.PostAsync( $"new-apprenticeship-provider/apprenticeship-employer-locations-regions?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}", requestContent); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task RendersCorrectMessage(ApprenticeshipQAStatus qaStatus, string expectedNotificationId) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(provider.ProviderId, ProviderType.Apprenticeships); // Act var response = await HttpClient.GetAsync("QANotificationsTests"); // Assert response.EnsureSuccessStatusCode(); var doc = await response.GetDocument(); var notificationElements = doc.QuerySelectorAll("div") .Where(e => e.Id?.StartsWith("pttcd-new-apprenticeship-provider__qa-notifications-") ?? false); if (expectedNotificationId == null) { Assert.Empty(notificationElements); } else { var notification = Assert.Single(notificationElements); Assert.Equal(expectedNotificationId, notification.Id); } }
public async Task Get_InvalidStatusReturnsBadRequest(ApprenticeshipQAStatus status) { // Arrange var ukprn = 12345; var providerId = await TestData.CreateProvider( ukprn : ukprn, providerName : "Provider 1", apprenticeshipQAStatus : status); var providerUserId = $"{ukprn}-user"; await TestData.CreateUser(providerUserId, "*****@*****.**", "Provider 1", "Person", providerId); var standard = await TestData.CreateStandard(standardCode : 1234, version : 1, standardName : "Test Standard"); var apprenticeshipId = await TestData.CreateApprenticeship(providerId, standard, createdBy : User.ToUserInfo()); await TestData.CreateApprenticeshipQASubmission( providerId, submittedOn : Clock.UtcNow, submittedByUserId : providerUserId, providerMarketingInformation : "The overview", apprenticeshipIds : new[] { apprenticeshipId }); await User.AsHelpdesk(); // Act var response = await HttpClient.GetAsync($"apprenticeship-qa/{providerId}/status"); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public Task SetProviderApprenticeshipQAStatus(Guid providerId, ApprenticeshipQAStatus status) => WithSqlQueryDispatcher(async dispatcher => { await dispatcher.ExecuteQuery(new SetProviderApprenticeshipQAStatus() { ProviderId = providerId, ApprenticeshipQAStatus = status }); });
public async Task Post_StatusNotInProgressReturnsBadRequest(ApprenticeshipQAStatus status) { // Arrange var ukprn = 12345; var providerId = await TestData.CreateProvider( ukprn : ukprn, providerName : "Provider 1", apprenticeshipQAStatus : status); var providerUserId = $"{ukprn}-user"; await TestData.CreateUser(providerUserId, "*****@*****.**", "Provider 1", "Person", providerId); var standard = await TestData.CreateStandard(standardCode : 1234, version : 1, standardName : "Test Standard"); var apprenticeshipId = await TestData.CreateApprenticeship(providerId, standard, createdBy : User.ToUserInfo()); if (status != ApprenticeshipQAStatus.NotStarted) { var submissionId = await TestData.CreateApprenticeshipQASubmission( providerId, submittedOn : Clock.UtcNow, submittedByUserId : providerUserId, providerMarketingInformation : "The overview", apprenticeshipIds : new[] { apprenticeshipId }); if (status != ApprenticeshipQAStatus.Submitted && !status.HasFlag(ApprenticeshipQAStatus.UnableToComplete)) { var passed = status == ApprenticeshipQAStatus.Failed ? false : true; await TestData.UpdateApprenticeshipQASubmission( submissionId, providerAssessmentPassed : passed, apprenticeshipAssessmentsPassed : passed, passed : passed, lastAssessedByUserId : User.UserId, lastAssessedOn : Clock.UtcNow); } } await User.AsHelpdesk(); var requestContent = new FormUrlEncodedContentBuilder().ToContent(); // Act var response = await HttpClient.PostAsync($"apprenticeship-qa/{providerId}/complete", requestContent); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Get_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(provider.ProviderId, ProviderType.Apprenticeships); var mptxInstance = CreateMptxInstance(new FlowModel()); // Act var response = await HttpClient.GetAsync( $"new-apprenticeship-provider/apprenticeship-locations?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}"); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task GetConfirmation_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(provider.ProviderId, ProviderType.FE); var flowModel = new FlowModel(); flowModel.SetProviderDetails("<p>New marketing info</p>"); var mptxInstance = CreateMptxInstance(flowModel); // Act var response = await HttpClient.GetAsync( $"new-apprenticeship-provider/provider-detail-confirmation?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}"); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task HasNotPassedQA_DoesNotRenderApprenticeshipsRow(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider( providerType : ProviderType.Apprenticeships, apprenticeshipQAStatus : qaStatus); var request = new HttpRequestMessage(HttpMethod.Get, $"/dashboard?providerId={provider.ProviderId}"); // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(HttpStatusCode.OK); var doc = await response.GetDocument(); doc.GetElementByTestId("apprenticeships-row").Should().BeNull(); }
public async Task FEOnlyProviderRendersNoMessage(ApprenticeshipQAStatus qaStatus, string notificationId) { // Arrange var provider = await TestData.CreateProvider( apprenticeshipQAStatus : qaStatus, providerType : ProviderType.FE); await User.AsProviderUser(provider.ProviderId, ProviderType.FE); // Act var response = await HttpClient.GetAsync("QANotificationsTests"); // Assert response.EnsureSuccessStatusCode(); var doc = await response.GetDocument(); Assert.Null(doc.GetElementById(notificationId)); }
public async Task Get_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var providerId = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(providerId, ProviderType.Apprenticeships); var flowModel = new FlowModel(); flowModel.SetApprenticeshipLocationType(ApprenticeshipLocationType.EmployerBased); flowModel.SetApprenticeshipIsNational(false); var mptxInstance = CreateMptxInstance(flowModel); // Act var response = await HttpClient.GetAsync( $"new-apprenticeship-provider/apprenticeship-employer-locations-regions?providerId={providerId}&ffiid={mptxInstance.InstanceId}"); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Post_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); await User.AsProviderUser(provider.ProviderId, ProviderType.Apprenticeships); var mptxInstance = CreateMptxInstance(new FlowModel()); var requestContent = new FormUrlEncodedContentBuilder() .Add("LocationType", "EmployerBased") .ToContent(); // Act var response = await HttpClient.PostAsync( $"new-apprenticeship-provider/apprenticeship-locations?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}", requestContent); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Get_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider(apprenticeshipQAStatus : qaStatus); var standard = await TestData.CreateStandard(standardCode : 123, version : 1, standardName : "My standard"); await User.AsProviderUser(provider.ProviderId, ProviderType.Apprenticeships); var flowModel = new FlowModel(); flowModel.SetApprenticeshipStandard(standard); var mptxInstance = CreateMptxInstance(flowModel); // Act var response = await HttpClient.GetAsync( $"new-apprenticeship-provider/apprenticeship-details?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}"); // Act Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }
public async Task Post_QAStatusNotValidReturnsBadRequest(ApprenticeshipQAStatus qaStatus) { // Arrange var provider = await TestData.CreateProvider( providerName : "Provider name", apprenticeshipQAStatus : qaStatus, courseDirectoryName : "Alias"); await User.AsProviderUser(provider.ProviderId, ProviderType.FE); var mptxInstance = CreateMptxInstance(new FlowModel()); var requestContent = new FormUrlEncodedContentBuilder() .Add("MarketingInformation", "<p>New marketing info</p>") .ToContent(); // Act var response = await HttpClient.PostAsync( $"new-apprenticeship-provider/provider-detail?providerId={provider.ProviderId}&ffiid={mptxInstance.InstanceId}", requestContent); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); }