public async Task DeleteVenue_Post_DeletesVenueAndRedirects() { // Arrange var provider = await TestData.CreateProvider( providerType : ProviderType.FE); await User.AsTestUser(TestUserType.ProviderUser, provider.ProviderId); var venue = await TestData.CreateVenue(provider.ProviderId); var requestContent = new FormUrlEncodedContentBuilder() .Add(nameof(Command.Confirm), true) .Add(nameof(Command.ProviderId), provider.ProviderId) .ToContent(); var request = new HttpRequestMessage(HttpMethod.Post, $"/venues/{venue.Id}/delete") { Content = requestContent }; // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(StatusCodes.Status302Found); response.Headers.Location.OriginalString.Should().Be($"/venues/{venue.Id}/delete-success?providerId={provider.ProviderId}"); CosmosDbQueryDispatcher.VerifyExecuteQuery <Core.DataStore.CosmosDb.Queries.DeleteVenue, OneOf <NotFound, Success> >(q => q.VenueId == venue.Id, Times.Once()); }
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())).Id; 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); CosmosDbQueryDispatcher.VerifyExecuteQuery <UpdateApprenticeshipStatus, OneOf <NotFound, Success> >( q => q.ApprenticeshipId == apprenticeshipId && q.ProviderUkprn == provider.Ukprn && q.Status == 1, expectApprenticeshipToBeMadeLive ? Times.Once() : Times.Never()); }
public async Task Post_ValidRequest_UpdatesDatabaseAndRedirects() { // Arrange var provider = await TestData.CreateProvider(); var venueId = (await TestData.CreateVenue(provider.ProviderId)).Id; var journeyInstance = await CreateJourneyInstance(venueId); journeyInstance.UpdateState(state => { state.Name = "Updated name"; state.Email = "*****@*****.**"; state.PhoneNumber = "02345 678901"; state.Website = "updated-provider.com"; state.AddressLine1 = "Updated line 1"; state.AddressLine2 = "Updated line 2"; state.Town = "Updated town"; state.County = "Updated county"; state.Postcode = "UP1 D8D"; state.Latitude = 42; state.Longitude = 42; }); var requestContent = new FormUrlEncodedContentBuilder() .ToContent(); var request = new HttpRequestMessage(HttpMethod.Post, $"venues/{venueId}") { Content = requestContent }; // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(HttpStatusCode.Found); response.Headers.Location.OriginalString.Should().Be($"/venues?providerId={provider.ProviderId}"); CosmosDbQueryDispatcher.VerifyExecuteQuery <UpdateVenue, OneOf <NotFound, Venue> >(q => q.VenueId == venueId && q.Name == "Updated name" && q.Email == "*****@*****.**" && q.PhoneNumber == "02345 678901" && q.Website == "updated-provider.com" && q.AddressLine1 == "Updated line 1" && q.AddressLine2 == "Updated line 2" && q.Town == "Updated town" && q.County == "Updated county" && q.Postcode == "UP1 D8D" && q.Latitude == 42 && q.Longitude == 42 && q.UpdatedBy.UserId == User.UserId && q.UpdatedDate == Clock.UtcNow); }
public async Task Post_ValidRequest_DeletesCourseRunAndRedirects() { // Arrange var providerId = await TestData.CreateProvider(ukprn : 12345); var courseId = await TestData.CreateCourse( providerId, qualificationCourseTitle : "Maths", createdBy : User.ToUserInfo()); var courseRunId = await GetCourseRunIdForCourse(courseId); var requestContent = new FormUrlEncodedContentBuilder() .Add("Confirm", "true") .ToContent(); var request = new HttpRequestMessage( HttpMethod.Post, $"/courses/{courseId}/course-runs/{courseRunId}/delete?returnUrl=%2fcourses") { Content = requestContent }; await User.AsProviderUser(providerId, ProviderType.FE); CreateFormFlowInstance(courseId, courseRunId); // Act var response = await HttpClient.SendAsync(request); // Assert Assert.Equal(HttpStatusCode.Found, response.StatusCode); Assert.Equal( $"/courses/{courseId}/course-runs/{courseRunId}/delete/confirmed", response.Headers.Location.OriginalString); CosmosDbQueryDispatcher.VerifyExecuteQuery <DeleteCourseRunQuery, OneOf <NotFound, Success> >(q => q.CourseId == courseId && q.CourseRunId == courseRunId && q.ProviderUkprn == 12345); }
public async Task Post_ValidRequest_UpdatesProviderTypeAndRedirects(ProviderType providerType) { // Arrange var providerId = await TestData.CreateProvider(providerType : ProviderType.Undefined); var content = new FormUrlEncodedContentBuilder() .Add("ProviderType", (int)providerType) .ToContent(); var request = new HttpRequestMessage(HttpMethod.Post, $"providers/provider-type?providerId={providerId}") { Content = content }; // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(HttpStatusCode.Found); response.Headers.Location.OriginalString.Should().Be($"/providers?providerId={providerId}"); CosmosDbQueryDispatcher.VerifyExecuteQuery <UpdateProviderType, OneOf <NotFound, Success> >(q => q.ProviderId == providerId && q.ProviderType == providerType); }
public async Task Post_ValidRequest_CreatesVenueCompletesJourneyAndRedirects() { // Arrange var provider = await TestData.CreateProvider(); var addressLine1 = "Test Venue line 1"; var addressLine2 = "Test Venue line 2"; var town = "Town"; var county = "County"; var postcode = "AB1 2DE"; var name = "My Venue"; var email = "*****@*****.**"; var telephone = "020 7946 0000"; var website = "example.com"; var latitude = 42M; var longitude = 43M; var journeyInstance = CreateJourneyInstance( provider.ProviderId, new AddVenueJourneyModel() { AddressLine1 = addressLine1, AddressLine2 = addressLine2, County = county, Email = email, Latitude = latitude, Longitude = longitude, Name = name, AddressIsOutsideOfEngland = false, Telephone = telephone, Postcode = postcode, Town = town, Website = website, ValidStages = AddVenueCompletedStages.All }); var request = new HttpRequestMessage( HttpMethod.Post, $"/venues/add/publish?providerId={provider.ProviderId}&ffiid={journeyInstance.InstanceId.UniqueKey}"); // Act var response = await HttpClient.SendAsync(request); // Assert response.StatusCode.Should().Be(HttpStatusCode.Found); response.Headers.Location.OriginalString.Should().Be( $"/venues/add/success?providerId={provider.ProviderId}&ffiid={journeyInstance.InstanceId.UniqueKey}"); GetJourneyInstance <AddVenueJourneyModel>(journeyInstance.InstanceId).Completed.Should().BeTrue(); CosmosDbQueryDispatcher.VerifyExecuteQuery <CreateVenue, Success>(q => q.ProviderUkprn == provider.Ukprn && q.Name == name && q.Email == email && q.Telephone == telephone && q.Website == website && q.AddressLine1 == addressLine1 && q.AddressLine2 == addressLine2 && q.Town == town && q.County == county && q.Postcode == postcode && q.Latitude == latitude && q.Longitude == longitude && q.CreatedBy.UserId == User.UserId && q.CreatedDate == Clock.UtcNow); }