public async Task Should_return_return_a_list_of_hearings_for_a_valid_case_number(string caseNumber)
        {
            var query = new SearchForHearingsQuery
            {
                CaseNumber = caseNumber
            };
            var hearingsByCaseNumber = new List <VideoHearing> {
                GetHearing(caseNumber)
            };

            QueryHandlerMock
            .Setup(x => x.Handle <GetHearingsBySearchQuery, List <VideoHearing> >(It.IsAny <GetHearingsBySearchQuery>()))
            .ReturnsAsync(hearingsByCaseNumber);

            var result = await Controller.SearchForHearingsAsync(query);

            result.Should().NotBeNull();

            var objectResult = (OkObjectResult)result;

            objectResult.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var hearingDetailsResponse = (List <AudioRecordedHearingsBySearchResponse>)objectResult.Value;

            hearingDetailsResponse.Should().NotBeNull();

            hearingDetailsResponse[0].CaseNumber.Should().Be(caseNumber);

            QueryHandlerMock
            .Verify(x => x.Handle <GetHearingsBySearchQuery, List <VideoHearing> >(It.IsAny <GetHearingsBySearchQuery>()), Times.Once);
        }
        public async Task Should_return_an_empty_list_if_no_records_found_for_the_give_case_number()
        {
            const string caseNumber = "TaxCase12345/33";

            var query = new SearchForHearingsQuery
            {
                CaseNumber = caseNumber
            };

            QueryHandlerMock
            .Setup(x => x.Handle <GetHearingsBySearchQuery, List <VideoHearing> >(It.IsAny <GetHearingsBySearchQuery>()))
            .ReturnsAsync((List <VideoHearing>)null);

            var result = await Controller.SearchForHearingsAsync(query);

            result.Should().NotBeNull();

            var objectResult = (OkObjectResult)result;

            objectResult.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var hearingDetailsResponse = (List <AudioRecordedHearingsBySearchResponse>)objectResult.Value;

            hearingDetailsResponse.Should().NotBeNull();

            QueryHandlerMock
            .Verify(x => x.Handle <GetHearingsBySearchQuery, List <VideoHearing> >(It.IsAny <GetHearingsBySearchQuery>()), Times.Once);
        }
        public void GivenIHaveAnInvalidSearchForHearingByCaseNumberRequest()
        {
            var caseResponse = _context.TestData.Hearing.Cases.First();
            var query        = new SearchForHearingsQuery
            {
                CaseNumber = caseResponse.Number + "01"
            };

            _context.Request = _context.Get(SearchForHearings(query));
        }
        public async Task <IActionResult> SearchForHearingsAsync([FromQuery] SearchForHearingsQuery searchQuery)
        {
            var caseNumber = WebUtility.UrlDecode(searchQuery.CaseNumber);

            var query    = new GetHearingsBySearchQuery(caseNumber, searchQuery.Date);
            var hearings = await _queryHandler.Handle <GetHearingsBySearchQuery, List <VideoHearing> >(query);

            var hearingMapper = new AudioRecordedHearingsBySearchResponseMapper();
            var response      = hearingMapper.MapHearingToDetailedResponse(hearings, caseNumber);

            return(Ok(response));
        }
        public void GivenIHaveASearchHearingsByDateRequest()
        {
            var seededHearing = Context.TestData.SeededHearing;

            var query = new SearchForHearingsQuery
            {
                Date = seededHearing.ScheduledDateTime
            };

            Context.Uri        = SearchForHearings(query);
            Context.HttpMethod = HttpMethod.Get;
        }
        public void GivenIHaveASearchHearingsByWrongCaseNumberRightDateRequest()
        {
            var seededHearing = Context.TestData.SeededHearing;
            var caseData      = seededHearing.HearingCases.First();
            var caseNumber    = caseData.Case.Number;
            var query         = new SearchForHearingsQuery
            {
                CaseNumber = caseNumber + "0237ehd",
                Date       = seededHearing.ScheduledDateTime
            };

            Context.Uri        = SearchForHearings(query);
            Context.HttpMethod = HttpMethod.Get;
        }
        public void GivenIHaveASearchHearingsByCaseNumberWrongDateRequest()
        {
            var seededHearing = Context.TestData.SeededHearing;
            var caseData      = seededHearing.HearingCases.First();
            var caseNumber    = caseData.Case.Number;
            var query         = new SearchForHearingsQuery
            {
                CaseNumber = caseNumber.Substring(0, 3),
                Date       = seededHearing.ScheduledDateTime.AddDays(1)
            };

            Context.Uri        = SearchForHearings(query);
            Context.HttpMethod = HttpMethod.Get;
        }
        public void GivenIHaveASearchHearingsByCaseNumberRequest()
        {
            var seededHearing = Context.TestData.SeededHearing;
            var caseData      = seededHearing.HearingCases.First();
            var caseNumber    = caseData.Case.Number;

            var query = new SearchForHearingsQuery
            {
                CaseNumber = caseNumber
            };

            Context.Uri        = SearchForHearings(query);
            Context.HttpMethod = HttpMethod.Get;
        }
 public static string SearchForHearings(SearchForHearingsQuery query) =>
 $"{ApiRoot}/audiorecording/search?{QueryStringBuilder.ConvertToQueryString(query)}";