Skip to content

Commit 3530940

Browse files
committed
feat: Se crea el Filtrado por Género y Duración de Película (Tests de Aplicación de Películas)
1 parent e81e9fc commit 3530940

5 files changed

Lines changed: 135 additions & 0 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.luigi.javatest.movies.data;
2+
3+
import com.luigi.javatest.movies.model.Movie;
4+
5+
import java.util.Collection;
6+
7+
public interface MovieRepository {
8+
Movie findById(long id);
9+
Collection<Movie> findAll();
10+
void saveOrUpdate(Movie movie);
11+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.luigi.javatest.movies.model;
2+
3+
public enum Gender {
4+
ACTION,
5+
COMEDY,
6+
DRAMA,
7+
HORROR,
8+
THRILLER
9+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.luigi.javatest.movies.model;
2+
3+
public class Movie {
4+
private Integer id;
5+
private String name;
6+
private int minutes;
7+
private Gender gender;
8+
9+
public Movie(String name, int minutes, Gender gender) {
10+
this(null, name, minutes, gender);
11+
}
12+
13+
public Movie(Integer id, String name, int minutes, Gender gender) {
14+
this.id = id;
15+
this.name = name;
16+
this.minutes = minutes;
17+
this.gender = gender;
18+
}
19+
20+
public Integer getId() {
21+
return id;
22+
}
23+
24+
public String getName() {
25+
return name;
26+
}
27+
28+
public int getMinutes() {
29+
return minutes;
30+
}
31+
32+
public Gender getGender() {
33+
return gender;
34+
}
35+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.luigi.javatest.movies.service;
2+
3+
import com.luigi.javatest.movies.data.MovieRepository;
4+
import com.luigi.javatest.movies.model.Gender;
5+
import com.luigi.javatest.movies.model.Movie;
6+
7+
import java.util.Collection;
8+
import java.util.stream.Collectors;
9+
10+
public class MovieService {
11+
private MovieRepository movieRepository;
12+
13+
public MovieService(MovieRepository movieRepository) {
14+
this.movieRepository = movieRepository;
15+
}
16+
17+
public Collection<Movie> findMoviesByGender(Gender gender) {
18+
19+
return movieRepository.findAll().stream()
20+
.filter(movie -> movie.getGender() == gender).collect(Collectors.toList());
21+
}
22+
23+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.luigi.javatest.movies.service;
2+
3+
import com.luigi.javatest.movies.data.MovieRepository;
4+
import com.luigi.javatest.movies.model.Gender;
5+
import com.luigi.javatest.movies.model.Movie;
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.Test;
8+
import org.mockito.Mockito;
9+
10+
import java.util.Arrays;
11+
import java.util.Collection;
12+
import java.util.List;
13+
import java.util.stream.Collectors;
14+
15+
// Importamos las aserciones nativas de JUnit 5
16+
import static org.junit.jupiter.api.Assertions.*;
17+
18+
public class MovieServiceShould {
19+
20+
private MovieRepository movieRepository;
21+
private MovieService movieService;
22+
23+
@BeforeEach
24+
void setUp() {
25+
// Inicializamos el mock y el servicio antes de cada test
26+
movieRepository = Mockito.mock(MovieRepository.class);
27+
movieService = new MovieService(movieRepository);
28+
}
29+
30+
@Test
31+
public void return_movies_by_gender() {
32+
// GIVEN
33+
Mockito.when(movieRepository.findAll()).thenReturn(
34+
Arrays.asList(
35+
new Movie(1, "Dark Knight", 152, Gender.ACTION),
36+
new Movie(2, "Memento", 113, Gender.THRILLER),
37+
new Movie(3, "Matrix", 136, Gender.COMEDY),
38+
new Movie(4, "Super 8", 112, Gender.THRILLER),
39+
new Movie(5, "Scream", 111, Gender.HORROR),
40+
new Movie(6, "Home Alone", 103, Gender.COMEDY),
41+
new Movie(7, "Matrix", 136, Gender.ACTION)
42+
)
43+
);
44+
45+
// WHEN
46+
Collection<Movie> movies = movieService.findMoviesByGender(Gender.COMEDY);
47+
48+
// THEN
49+
List<Integer> moviesIds = movies.stream()
50+
.map(Movie::getId)
51+
.collect(Collectors.toList());
52+
53+
// Cambiamos assertThat por assertEquals de JUnit 5
54+
// El orden es: assertEquals(esperado, actual)
55+
assertEquals(Arrays.asList(3, 6), moviesIds);
56+
}
57+
}

0 commit comments

Comments
 (0)