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"); }
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"); }
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))); } }