Exemple #1
0
        public async Task <ActionResult <PagedSearchResponse <GameViewModel> > > SearchGames(
            [FromQuery] SearchGamesQuery query)
        {
            var(items, total) = await _sender.Send(query);

            return(Ok(new PagedSearchResponse <GameViewModel>(items, total)));
        }
Exemple #2
0
 private Task <IResult> IsValidAsync(SearchGamesQuery query)
 {
     return(_validator
            .Require <SearchTextLengthValidRule>()
            .WithOptions(x => x.StopIfFailed())
            .WithData(query.SearchText)
            .Require <SkipTakeValuesValidRule>()
            .WithOptions(x => x.StopIfFailed())
            .WithData((query.Skip, query.Take))
            .ValidateAsync());
 }
Exemple #3
0
        public void SearchGamesQueryValidator_MinPlayersIsValid_ValidationPassed(int?minPlayers)
        {
            var model = new SearchGamesQuery
            {
                MinPlayers = minPlayers
            };

            var result = _sut.TestValidate(model);

            result.ShouldNotHaveValidationErrorFor(s => s.MaxPlayers);
        }
Exemple #4
0
        public void SearchGamesQueryValidator_MinPlayersIsInvalid_ValidationErrorThrown(int?minPlayers)
        {
            var model = new SearchGamesQuery
            {
                MinPlayers = minPlayers
            };

            var result = _sut.TestValidate(model);

            result.ShouldHaveValidationErrorFor(s => s.MinPlayers);
        }
Exemple #5
0
        public async Task <IResult <IReadOnlyCollection <GameWithImageResponse> > > HandleAsync(SearchGamesQuery query)
        {
            var validationResult = await IsValidAsync(query);

            if (validationResult.HasFailed())
            {
                return(validationResult.Map <IReadOnlyCollection <GameWithImageResponse> >());
            }

            return((await _searchService
                    .SearchGames(query.SearchText, query.Skip, query.Take))
                   .ToSuccessfulResult());
        }