public async Task CreateMovie_WhenAnExceptionIsThrownInTheDomainLayer_ShouldThrow() { // Arrange var expectedMessage = "Some Exception Message"; var expectedException = new DuplicateMovieException(expectedMessage); var moviesController = new MovieControllerForTest(expectedException); var movieResource = new MovieResource { Title = "Some Title", Genre = GenreParser.ToString(Genre.Action), ImageUrl = "Some Url", Year = 1900 }; // Act try { await moviesController.CreateMovie(movieResource); Assert.Fail("We were expecting an exception of type: DuplicateMovieException to be thrown, but no exception was thrown"); } catch (DuplicateMovieException e) { // Assert Assert.AreEqual(expectedMessage, e.Message); } }
public async Task CreateMovie_WhenProvidedWithADuplicateMovieResource_ShouldThrow() { // Arrange var movie = RandomMovieGenerator.GenerateRandomMovies(1).Single(); var movieResourceJson = $"{{\"title\": \"{movie.Title}\", \"ImageUrl\": \"{movie.ImageUrl}\", \"Genre\": \"{movie.Genre}\", \"Year\": {movie.Year} }}"; var movieHttpContent = new StringContent(movieResourceJson, Encoding.UTF8, "application/json"); await _httpClient.PostAsync("api/movies", movieHttpContent); // Act var httpResponseMessage = await _httpClient.PostAsync("api/movies", movieHttpContent); // Assert var contentString = await httpResponseMessage.Content.ReadAsStringAsync(); Assert.AreEqual(HttpStatusCode.BadRequest, httpResponseMessage.StatusCode, "The Response content is: " + contentString); var duplicateMovieException = new DuplicateMovieException(); Assert.AreEqual(duplicateMovieException.Reason, httpResponseMessage.ReasonPhrase, "The Response content is: " + contentString); StringAssert.Contains(contentString, movie.Title); }