public async Task Step2__Customer_Searches_For_Cheap_Science_Fiction_Books_About_Robots()
        {
            const decimal maxPrice = 20m;
            var           query    = new SearchBooksQuery
            {
                Genres = new List <BookGenre> {
                    BookGenre.ScienceFiction
                },
                SearchTerm = "robot",
                MaxPrice   = maxPrice
            };
            var expectedBooks =
                _books.Where(
                    x => x.Title.Contains(query.SearchTerm, StringComparison.OrdinalIgnoreCase) &&
                    x.Price <= maxPrice);
            var booksPage = await Client.SearchBooks(query);

            booksPage.Items.Should().BeEquivalentTo(expectedBooks);
            booksPage.Items.Should().BeInAscendingOrder(x => x.Price);
            _selectedBooks = booksPage.Items;
        }
Example #2
0
        public async Task <Page <BookModel> > SearchBooks(SearchBooksQuery query)
        {
            var url = new Url("books");

            if (query.Genres.Count > 0)
            {
                url.SetQueryParam(nameof(query.Genres).ToLowerInvariant(), query.Genres);
            }
            if (query.MaxPrice != null)
            {
                url.SetQueryParam(nameof(query.MaxPrice).ToLowerInvariant(), query.MaxPrice);
            }
            if (!string.IsNullOrEmpty(query.SearchTerm))
            {
                url.SetQueryParam(nameof(query.SearchTerm).ToLowerInvariant(), query.SearchTerm);
            }
            using var response = await _httpClient.GetAsync(url);

            var booksPage = await SafelyReadFromJsonAsync <Page <BookModel> >(response);

            return(booksPage);
        }
Example #3
0
        public async Task <ActionResult <Page <BookModel> > > SearchBooks([FromQuery] SearchBooksQuery query)
        {
            var booksPage = await _mediator.Send(query);

            return(Ok(booksPage));
        }
 public async Task <ActionResult <SearchBooksOutputModel> > Search(
     [FromQuery] SearchBooksQuery query)
 => await this.Send(query);