Esempio n. 1
0
        public async Task When_provider_call_is_successful_Should_return_correct_result()
        {
            // arrange
            var request = new GetShakespearianDescriptionRequest
            {
                Name    = "Pikachu",
                Version = GameVersion.Any
            };
            var pokemonDescriptionProviderMock = new Mock <IPokemonDescriptionProvider>();

            pokemonDescriptionProviderMock
            .Setup(x => x.GetShakesperianDescription(request.Name, request.Version))
            .ReturnsAsync("description");
            var controller = new PokemonController(pokemonDescriptionProviderMock.Object);

            // act
            var result = await controller.GetShakespearianDescription(request);

            // assert
            var okObjectResult = result.Should().BeOfType <OkObjectResult>().Subject;
            var getShakespearianDescriptionResponse = okObjectResult.Value.Should().BeOfType <GetShakespearianDescriptionResponse>().Subject;

            getShakespearianDescriptionResponse.Name.Should().Be(request.Name);
            getShakespearianDescriptionResponse.Description.Should().Be("description");
        }
Esempio n. 2
0
        public async Task When_request_has_long_name_Should_return_validation_error()
        {
            // arrange
            var controller = new PokemonController(new Mock <IPokemonDescriptionProvider>().Object);
            var request    = new GetShakespearianDescriptionRequest
            {
                Name = new string('x', 101)
            };

            // act
            var result = await controller.GetShakespearianDescription(request);

            // assert
            var badRequestResult = result.Should().BeOfType <BadRequestObjectResult>().Subject;
            var validationResult = badRequestResult.Value.Should().BeOfType <ValidationResult>().Subject;

            validationResult.ErrorMessage.Should().Be("Name too long");
        }
Esempio n. 3
0
        public async Task When_request_has_invalid_version_Should_return_validation_error()
        {
            // arrange
            var controller = new PokemonController(new Mock <IPokemonDescriptionProvider>().Object);
            var request    = new GetShakespearianDescriptionRequest
            {
                Name    = "Pikachu",
                Version = (GameVersion)99
            };

            // act
            var result = await controller.GetShakespearianDescription(request);

            // assert
            var badRequestResult = result.Should().BeOfType <BadRequestObjectResult>().Subject;
            var validationResult = badRequestResult.Value.Should().BeOfType <ValidationResult>().Subject;

            validationResult.ErrorMessage.Should().Be("Invalid version");
        }
        public async Task <IActionResult> GetShakespearianDescription([FromRoute] GetShakespearianDescriptionRequest request)
        {
            var validationResult = request.Validate();

            if (!validationResult.Success)
            {
                return(this.BadRequest(validationResult));
            }

            try
            {
                string description = await this.pokemonDescriptionProvider.GetShakesperianDescription(request.Name, request.Version);

                var response = new GetShakespearianDescriptionResponse(request.Name, description);

                return(this.Ok(response));
            }
            catch (Exception e) when(e is PokemonNotFoundException || e is DescriptionForVersionNotFoundException)
            {
                return(this.NotFound(ValidationResult.Failed(e.Message)));
            }
        }