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);
            }
        }
Exemple #2
0
        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);
        }