@@ -30,11 +30,11 @@ void setUp() {
3030 Arrays .asList (
3131 new Movie (1 , "Dark Knight" , 152 , Gender .ACTION , "Christopher Nolan" ),
3232 new Movie (2 , "Memento" , 113 , Gender .THRILLER , "Christopher Nolan" ),
33- new Movie (3 , "Super 8" , 112 , Gender .THRILLER , "J.J. Abrams" ),
34- new Movie (4 , "Superman" , 103 , Gender .ACTION , "Richard Donner" ),
33+ new Movie (3 , "Super 8" , 112 , Gender .DRAMA , "J.J. Abrams" ),
34+ new Movie (4 , "Superman" , 173 , Gender .ACTION , "Richard Donner" ),
3535 new Movie (5 , "Home Alone" , 103 , Gender .COMEDY , "Chris Columbus" ),
3636 new Movie (6 , "Home Alone" , 120 , Gender .COMEDY , "director1" ),
37- new Movie (7 , "Matrix" , 136 , Gender .ACTION , "director2" )
37+ new Movie (7 , "Matrix" , 166 , Gender .ACTION , "director2" )
3838 )
3939 );
4040 }
@@ -54,7 +54,7 @@ public void return_movies_by_length() {
5454 // WHEN
5555 Collection <Movie > movies = movieService .findMoviesByLength (120 );
5656 // THEN
57- assertEquals (Arrays .asList (2 , 3 , 4 , 5 , 6 ), getMoviesIds (movies ));
57+ assertEquals (Arrays .asList (2 , 3 , 5 , 6 ), getMoviesIds (movies ));
5858 }
5959
6060 public static List <Integer > getMoviesIds (Collection <Movie > movies ) {
@@ -79,4 +79,41 @@ void return_movies_by_director() {
7979 List <Integer > ids = movies .stream ().map (Movie ::getId ).collect (Collectors .toList ());
8080 assertEquals (Arrays .asList (1 , 2 ), ids ); // Dark Knight y Memento
8181 }
82+ @ Test
83+ void find_movies_by_genre_and_max_duration () {
84+ // Buscar peliculas de ACCION de menos de 160 min (Debería salir Superman)
85+ Movie template = new Movie (null , null , 160 , Gender .ACTION , null );
86+ Collection <Movie > movies = movieService .findMoviesByTemplate (template );
87+
88+ assertEquals (1 , movies .size ());
89+ assertTrue (movies .stream ().allMatch (m -> m .getName ().equals ("Dark Knight" )));
90+ }
91+
92+ @ Test
93+ void find_movies_by_name_and_director () {
94+ // Buscar "Super" del director "Abrams"
95+ Movie template = new Movie (null , "Super" , null , null , "Abrams" );
96+ Collection <Movie > movies = movieService .findMoviesByTemplate (template );
97+
98+ assertEquals (1 , movies .size ());
99+ }
100+
101+ @ Test
102+ void throw_exception_when_minutes_are_negative () {
103+ Movie template = new Movie (null , null , -10 , null , null );
104+
105+ assertThrows (IllegalArgumentException .class , () -> {
106+ movieService .findMoviesByTemplate (template );
107+ });
108+ }
109+
110+ @ Test
111+ void ignore_other_filters_if_id_is_present () {
112+ // Aunque pida comedia, si el ID 1 es Acción, debe devolver el 1 (Acción)
113+ Movie template = new Movie (1 , "Inexistente" , 10 , Gender .ACTION , "Nadie" );
114+ Collection <Movie > movies = movieService .findMoviesByTemplate (template );
115+
116+ assertEquals (1 , movies .size ());
117+ assertEquals ("Dark Knight" , movies .iterator ().next ().getName ());
118+ }
82119}
0 commit comments