public async Task ReturnsBadRequestIfPokemonDoesNotExist(string name) { DescriptionService .Setup(s => s.GetShakespeareanDescription(It.IsAny <string>())) .ReturnsAsync(new Monad <string>(new KeyNotFoundException())); var result = await Controller.GetShakespeareanDescription(name); Assert.IsType <BadRequestObjectResult>(result); }
public async Task ThrowsOnIllegalResult() { DescriptionService .Setup(s => s.GetShakespeareanDescription(It.IsAny <string>())) .ReturnsAsync(new Monad <string>(result: null !)); var exception = await Assert.ThrowsAsync <InvalidOperationException>( async() => await Controller.GetShakespeareanDescription("mew")); Assert.Null(exception.InnerException); }
public async Task ReturnsTooManyRequestsIfAnyLimitIsExceeded(string name) { DescriptionService .Setup(s => s.GetShakespeareanDescription(It.IsAny <string>())) .ReturnsAsync(new Monad <string>(new LimitExceededException())); var result = await Controller.GetShakespeareanDescription(name); var statusCodeResult = Assert.IsType <StatusCodeResult>(result); Assert.Equal(StatusCodes.Status429TooManyRequests, statusCodeResult.StatusCode); }
public async Task ReturnedNameMatchesParameter(string name, string description) { DescriptionService .Setup(s => s.GetShakespeareanDescription(It.IsAny <string>())) .ReturnsAsync(new Monad <string>(description)); var result = await Controller.GetShakespeareanDescription(name); var okResult = Assert.IsType <OkObjectResult>(result); var response = Assert.IsType <PokemonResponse>(okResult.Value); Assert.Equal(name, response.Name); }
public async Task ThrowsOnUnexpectedError() { var expected = new ArgumentException(); DescriptionService .Setup(s => s.GetShakespeareanDescription(It.IsAny <string>())) .ReturnsAsync(new Monad <string>(expected)); var exception = await Assert.ThrowsAsync <InvalidOperationException>( async() => await Controller.GetShakespeareanDescription("mew")); Assert.Same(expected, exception.InnerException); }
public async Task PokemonNameIsAlwaysPassedLowercase(string name) { DescriptionService #pragma warning disable CA1308 // We actually want ToLowerInvariant .Setup(s => s.GetShakespeareanDescription(name.ToLowerInvariant())) #pragma warning restore CA1308 .ReturnsAsync(new Monad <string>("Dummy")) .Verifiable(); var result = await Controller.GetShakespeareanDescription(name); DescriptionService.VerifyAll(); }