From ed2971ff91ce98b46c1e76f215cfabd970600ff6 Mon Sep 17 00:00:00 2001 From: Marouane Addou <105064179+marouaneaddou@users.noreply.github.com> Date: Mon, 28 Sep 2026 21:16:03 +0000 Subject: [PATCH] test(Search-movies): add tests for search movies (#69) --- .../serviceImpl/MovieServiceImpl.java | 5 +- .../serviceImpl/MovieServiceImplTest.java | 102 +++++++++++++++++- 2 files changed, 103 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImpl.java b/src/main/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImpl.java index 05b0937..23fb82c 100644 --- a/src/main/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImpl.java +++ b/src/main/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImpl.java @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* MovieServiceImpl.java :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: marouan +#+ +:+ +#+ */ +/* By: maddou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/09/14 12:33:45 by maddou #+# #+# */ -/* Updated: 2026/09/25 21:45:50 by marouan ### ########.fr */ +/* Updated: 2026/09/28 21:53:54 by maddou ### ########.fr */ /* */ /* ************************************************************************** */ @@ -206,7 +206,6 @@ public MoviePageResponse searchMovie( MovieSearchQuery query, Pageable page ) { ); } - System.out.println(query.getGenreId()); List movies = movieProvider.searchMovieByQuery( query.getLanguage(), query.getQuery(), diff --git a/src/test/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImplTest.java b/src/test/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImplTest.java index 24f39e5..1f975cf 100644 --- a/src/test/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImplTest.java +++ b/src/test/java/com/filmexa/stream/modules/moviesExternal/serviceImpl/MovieServiceImplTest.java @@ -6,7 +6,7 @@ /* By: maddou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2026/09/26 12:52:27 by marouan #+# #+# */ -/* Updated: 2026/09/27 22:10:47 by maddou ### ########.fr */ +/* Updated: 2026/09/28 22:13:35 by maddou ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,16 +32,21 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.verify; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; import com.filmexa.stream.modules.moviesExternal.mapper.MovieMapper; import com.filmexa.stream.modules.moviesExternal.client.MovieProvider; import com.filmexa.stream.modules.moviesExternal.serviceImpl.MovieServiceImpl; +import com.filmexa.stream.modules.moviesExternal.dto.tmdb.MovieDetailsProviderData; import com.filmexa.stream.modules.moviesExternal.dto.tmdb.MovieDetailsProviderResponse; import com.filmexa.stream.modules.moviesExternal.dto.tmdb.MoviesProviderData; import com.filmexa.stream.modules.moviesExternal.dto.response.TrendingMoviesResponse; import com.filmexa.stream.modules.moviesExternal.dto.tmdb.TmdbMoviesPageableResponse; +import com.filmexa.stream.modules.moviesExternal.dto.tmdb.request.TmdbMovieDiscoverRequest; +import com.filmexa.stream.modules.moviesExternal.enums.MovieSort; +import com.filmexa.stream.modules.moviesExternal.dto.request.MovieSearchQuery; import com.filmexa.stream.modules.moviesExternal.dto.response.MoviePageResponse; import com.filmexa.stream.modules.moviesExternal.dto.response.MovieResponse; import com.filmexa.stream.common.exception.InvalidPaginationException; @@ -219,4 +224,99 @@ void shouldBuildHomeMovies() { assertThat(homeData.get("Action").get(0).getTitle()) .isEqualTo("Spider-Man: Brand New Day"); } + + @Test + void shouldCallDiscoverMoviesWhenQueryIsNull() { + MovieSearchQuery query = new MovieSearchQuery( + "en", + null, + null, + 2010, + null, + null + ); + TmdbMovieDiscoverRequest providerParam = new TmdbMovieDiscoverRequest( + query.getLanguage(), + null, + query.getYear(), + query.getMinRating(), + "popularity.desc", + 1 + ); + List movies = new ArrayList<>(); + movies.add( new MoviesProviderData( + 1423191L, + "Resident Evil", + "2026-09-16", + 7.332, + "/i7UyjfPio0VFHB9rBUZSFyhOoM8.jpg", + false + )); + + TmdbMoviesPageableResponse responseProvider = new TmdbMoviesPageableResponse( + 1, + 500, + 10000, + movies + ); + Pageable page = PageRequest.of(0, 20); + when( movieProvider.discoverMovies( providerParam )) + .thenReturn(responseProvider); + + MoviePageResponse response = movieService.searchMovie( + query, page + ); + + assertThat( response.getMovies() ) + .hasSize( 1 ); + assertThat( response.getMovies().get(0).getId() ) + .isEqualTo(1423191L); + + verify( movieProvider ).discoverMovies( providerParam ); + } + + @Test + void chouldCallSearchMovieByQueryWhenQuearyNotNull( ) { + MovieSearchQuery query = new MovieSearchQuery( + "en", + "Inception", + null, + 2010, + null, + null + ); + when( movieProvider.searchMovieByQuery( + "en", + "Inception", + 2010, + 1 + )) + .thenReturn(List.of( + new MovieDetailsProviderData( + 27205L, + "Inception", + "test", + "2010-07-15", + "/xlaY2zyzMfkhk0HSC5VUwzoZPU1.jpg", + 8.374, + List.of(27,878,12), + false + ) + )); + + MoviePageResponse response = movieService.searchMovie( + query, PageRequest.of(1, 20) + ); + + assertThat( response.getMovies() ) + .isNotEmpty(); + assertThat( response.getMovies().get(0).getTitle()) + .isEqualTo("Inception"); + verify( movieProvider ).searchMovieByQuery( + "en", + "Inception", + 2010, + 1 + ); + } }