public async Task <List <Guid> > DeleteHearingsByPartialCaseText(DeleteTestHearingDataRequest request) { request.Limit ??= DEFAULT_LIMIT; try { var caseTypes = new List <int> { HearingData.CACD_CASE_TYPE_ID_FROM_BOOKINGS_API, HearingData.GENERIC_CASE_TYPE_ID_FROM_BOOKINGS_API }; var response = await _bookingsApiClient.GetHearingsByTypesAsync(caseTypes, CURSOR, DEFAULT_LIMIT); var hearings = new List <BookingsHearingResponse>(); foreach (var bookedHearing in response.Hearings) { hearings.AddRange(bookedHearing.Hearings); } return(await DeleteHearings(hearings, request.PartialHearingCaseName)); } catch (BookingsApiException e) { _logger.LogError(e, "Encountered error '{message}'", e.Message); throw; } }
public async Task Should_delete_hearings() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = "Test" }; var idsResponse = new List <Guid>() { Guid.NewGuid() }; BookingsApiService .Setup(x => x.DeleteHearingsByPartialCaseText(It.IsAny <DeleteTestHearingDataRequest>())) .ReturnsAsync(idsResponse); VideoApiClient .Setup(x => x.DeleteAudioApplicationAsync(It.IsAny <Guid>())) .Returns(Task.CompletedTask); var response = await Controller.DeleteTestDataByPartialCaseText(request); var result = (ObjectResult)response; result.StatusCode.Should().Be((int)HttpStatusCode.OK); var deletionDetails = (DeletedResponse)result.Value; deletionDetails.NumberOfDeletedHearings.Should().Be(1); }
public DeleteHearingBuilder() { _request = new DeleteTestHearingDataRequest() { Limit = DeleteData.LIMIT, PartialHearingCaseName = DeleteData.PARTIAL_HEARING_CASE_NAME }; }
public async Task Should_pass_validation() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = VALID_TEXT }; var result = await _validator.ValidateAsync(request); result.IsValid.Should().BeTrue(); }
public async Task Should_fail_validation_if_hearing_case_name_does_not_contain_test() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = INVALID_TEXT }; var result = await _validator.ValidateAsync(request); result.IsValid.Should().BeFalse(); result.Errors.Count.Should().Be(1); result.Errors.Any(x => x.ErrorMessage == DeleteTestHearingDataRequestValidator.HEARING_CASE_NAME_MUST_CONTAIN_TEST_ERROR_MESSAGE) .Should().BeTrue(); }
public async Task Should_fail_validation_if_case_name_empty() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = string.Empty }; var result = await _validator.ValidateAsync(request); result.IsValid.Should().BeFalse(); result.Errors.Count.Should().Be(1); result.Errors.Any(x => x.ErrorMessage == DeleteTestHearingDataRequestValidator.EMPTY_REQUEST_ERROR_MESSAGE) .Should().BeTrue(); }
public async Task Should_throw_error_without_specifying_test_in_request() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = NAME_THAT_WONT_BE_FOUND, Limit = 1 }; var uri = ApiUriFactory.UtilityEndpoints.DeleteHearings; await SendPostRequest(uri, RequestHelper.Serialise(request)); VerifyResponse(HttpStatusCode.BadRequest, false); }
public async Task <IActionResult> DeleteTestDataByPartialCaseText(DeleteTestHearingDataRequest request) { _logger.LogDebug("DeleteTestDataByPartialCaseText"); try { var response = await _testApiClient.DeleteTestDataByPartialCaseTextAsync(request); _logger.LogDebug($"{response} hearings deleted"); return(Ok(response)); } catch (TestApiException e) { _logger.LogError(e, "Unable to delete hearing and/or conference with error '{message}'", e.Message); return(StatusCode(e.StatusCode, e.Response)); } }
public async Task Should_remove_hearings() { var request = new DeleteTestHearingDataRequest() { PartialHearingCaseName = $"Test {NAME_THAT_WONT_BE_FOUND}", Limit = 1 }; var uri = ApiUriFactory.UtilityEndpoints.DeleteHearings; await SendPostRequest(uri, RequestHelper.Serialise(request)); VerifyResponse(HttpStatusCode.OK, true); var response = RequestHelper.Deserialise <DeletedResponse>(Json); response.NumberOfDeletedHearings.Should().Be(0); }
public async Task <IActionResult> DeleteTestDataByPartialCaseText(DeleteTestHearingDataRequest request) { _logger.LogDebug($"DeleteHearingsByPartialCaseText"); List <Guid> hearingIds; try { hearingIds = await _bookingsApiService.DeleteHearingsByPartialCaseText(request); } catch (BookingsApiException e) { return(StatusCode(e.StatusCode, e.Response)); } try { foreach (var hearingId in hearingIds) { await _videoApiClient.DeleteAudioApplicationAsync(hearingId); _logger.LogInformation("Successfully deleted audio application with hearing id {hearingId}", hearingId); } } catch (VideoApiException e) { if (e.StatusCode != (int)HttpStatusCode.NotFound) { _logger.LogError(e, "Failed to delete audio application with error {message}", e.Message); return(StatusCode(e.StatusCode, e.Response)); } } var response = new DeletedResponse() { NumberOfDeletedHearings = hearingIds.Count }; return(Ok(response)); }
public void RemoveData(TestContext context) { if (context?.Test?.CaseNames == null) { return; } if (context.Test.CaseNames.Count == 0) { return; } const int LIMIT = 1000; foreach (var caseName in context.Test.CaseNames) { var request = new DeleteTestHearingDataRequest() { Limit = LIMIT, PartialHearingCaseName = caseName }; var response = context.TestApi.DeleteTestData(request); response.StatusCode.Should().Be(HttpStatusCode.OK, $"Failed to delete hearing with case name '{request.PartialHearingCaseName}'"); } }
public RemoveHearingsControllerTests() { _loggerMock = new Mock <ILogger <HearingsController> >(); _request = new DeleteHearingBuilder().Build(); }