public async Task Should_return_bad_request_status_if_no_items_in_the_date_list() { var startDate = new DateTime(2020, 10, 1); var endDate = new DateTime(2020, 10, 1); var request = new MultiHearingRequest { StartDate = startDate, EndDate = endDate }; var response = await _controller.CloneHearing(Guid.NewGuid(), request); response.Should().BeOfType <BadRequestResult>(); }
public async Task <IActionResult> CloneHearing(Guid hearingId, MultiHearingRequest hearingRequest) { _logger.LogDebug("Attempting to clone hearing {Hearing}", hearingId); var publicHolidays = await _publicHolidayRetriever.RetrieveUpcomingHolidays(); var listOfDates = DateListMapper.GetListOfWorkingDates(hearingRequest.StartDate, hearingRequest.EndDate, publicHolidays); if (listOfDates.Count == 0) { _logger.LogWarning("No working dates provided to clone to"); return(BadRequest()); } var cloneHearingRequest = new CloneHearingRequest { Dates = listOfDates }; try { _logger.LogDebug("Sending request to clone hearing to Bookings API"); await _bookingsApiClient.CloneHearingAsync(hearingId, cloneHearingRequest); _logger.LogDebug("Successfully cloned hearing {Hearing}", hearingId); return(NoContent()); } catch (BookingsApiException e) { _logger.LogError(e, "There was a problem cloning the booking. Status Code {StatusCode} - Message {Message}", e.StatusCode, e.Response); if (e.StatusCode == (int)HttpStatusCode.BadRequest) { return(BadRequest(e.Response)); } throw; } }