Feature/delete movie test (#79)
* feat: MovieServiceImplTest - test registering movie * feat: MovieServiceImplTest - test deleteing movie * feat: MovieServiceImplTest - test code for checking if exceptions occur * refactor: MovieRepository NativeQuery -> JPQL
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package com.ticketing.server.movie.domain.repository;
|
package com.ticketing.server.movie.domain.repository;
|
||||||
|
|
||||||
import com.ticketing.server.movie.domain.Movie;
|
import com.ticketing.server.movie.domain.Movie;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
@@ -17,8 +16,8 @@ public interface MovieRepository extends JpaRepository<Movie, Long> {
|
|||||||
|
|
||||||
@Query(value = "SELECT m "
|
@Query(value = "SELECT m "
|
||||||
+ "FROM Movie m "
|
+ "FROM Movie m "
|
||||||
+ "WHERE title = :title "
|
+ "WHERE m.title = :title "
|
||||||
+ "AND deleted_at IS NULL")
|
+ "AND m.deletedAt IS NULL")
|
||||||
Optional<Movie> findValidMovieWithTitle(String title);
|
Optional<Movie> findValidMovieWithTitle(String title);
|
||||||
|
|
||||||
@Query(value = "SELECT * "
|
@Query(value = "SELECT * "
|
||||||
|
|||||||
@@ -1,15 +1,23 @@
|
|||||||
package com.ticketing.server.movie.service;
|
package com.ticketing.server.movie.service;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyLong;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import com.ticketing.server.global.exception.TicketingException;
|
||||||
import com.ticketing.server.movie.domain.Movie;
|
import com.ticketing.server.movie.domain.Movie;
|
||||||
import com.ticketing.server.movie.domain.repository.MovieRepository;
|
import com.ticketing.server.movie.domain.repository.MovieRepository;
|
||||||
|
import com.ticketing.server.movie.service.dto.DeletedMovieDTO;
|
||||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||||
import com.ticketing.server.movie.service.dto.MovieListDTO;
|
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
import org.hibernate.sql.Delete;
|
||||||
import org.junit.jupiter.api.DisplayName;
|
import org.junit.jupiter.api.DisplayName;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
@@ -21,9 +29,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
|
|||||||
public class MovieServiceImplTest {
|
public class MovieServiceImplTest {
|
||||||
|
|
||||||
Movie movie;
|
Movie movie;
|
||||||
MovieDTO movieDto;
|
|
||||||
List<Movie> movies = new ArrayList<>();
|
List<Movie> movies = new ArrayList<>();
|
||||||
List<MovieDTO> movieDTOS = new ArrayList<>();
|
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
MovieRepository movieRepository;
|
MovieRepository movieRepository;
|
||||||
@@ -59,7 +65,76 @@ public class MovieServiceImplTest {
|
|||||||
List<MovieDTO> movieDtos = movieService.getMovies();
|
List<MovieDTO> movieDtos = movieService.getMovies();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertTrue(movieDtos.isEmpty());
|
assertTrue(!movieDtos.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Movie Service Test - register movie")
|
||||||
|
void shouldAbleToRegisterMovie() {
|
||||||
|
// given
|
||||||
|
String title = "추가할 영화 제목";
|
||||||
|
movie = new Movie(title, 100L);
|
||||||
|
|
||||||
|
when(movieRepository.findValidMovieWithTitle(title))
|
||||||
|
.thenReturn(Optional.empty());
|
||||||
|
when(movieRepository.save(any()))
|
||||||
|
.thenReturn(movie);
|
||||||
|
|
||||||
|
// when
|
||||||
|
RegisteredMovieDTO registeredMovieDto =
|
||||||
|
movieService.registerMovie(title, movie.getRunningTime());
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(registeredMovieDto).isNotNull();
|
||||||
|
assertTrue(registeredMovieDto.getTitle().equals(title));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Movie Service Test - register movie when there is same movie already")
|
||||||
|
void shouldThrowExceptionWhenRegistering() {
|
||||||
|
// given
|
||||||
|
String title = "이미 중복된 영화 제목";
|
||||||
|
|
||||||
|
Movie movie = new Movie(title, 100L);
|
||||||
|
|
||||||
|
when(movieRepository.findValidMovieWithTitle(title))
|
||||||
|
.thenReturn(Optional.of(movie));
|
||||||
|
|
||||||
|
// when
|
||||||
|
// then
|
||||||
|
assertThatThrownBy(() -> movieService.registerMovie(title, 100L))
|
||||||
|
.isInstanceOf(TicketingException.class);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Movie Service Test - delete movie")
|
||||||
|
void shouldAbleToDeleteMovie() {
|
||||||
|
// given
|
||||||
|
Movie movie = new Movie("삭제할 영화 제목", 100L);
|
||||||
|
|
||||||
|
when(movieRepository.findByIdAndDeletedAtNull(1L))
|
||||||
|
.thenReturn(Optional.of(movie));
|
||||||
|
|
||||||
|
// when
|
||||||
|
DeletedMovieDTO deletedMovieDto =
|
||||||
|
movieService.deleteMovie(1L);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertTrue(deletedMovieDto.getTitle().equals("삭제할 영화 제목"));
|
||||||
|
assertThat(deletedMovieDto.getDeletedAt()).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("Movie Service Test - delete movie when there is no such movie")
|
||||||
|
void shouldThrowExceptionWhenDeleting() {
|
||||||
|
// given
|
||||||
|
when(movieRepository.findByIdAndDeletedAtNull(1L))
|
||||||
|
.thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
// when
|
||||||
|
// then
|
||||||
|
assertThatThrownBy(() -> movieService.deleteMovie(1L))
|
||||||
|
.isInstanceOf(TicketingException.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user