Compare commits
5 Commits
feature/ch
...
feature/ge
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e6966e5e1e | ||
|
|
d4385d15a7 | ||
|
|
096b1dadf3 | ||
|
|
409b6f7f53 | ||
|
|
8b81fc0713 |
@@ -7,10 +7,14 @@ import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Entity
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MovieTime extends AbstractEntity {
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ticketing.server.movie.domain.repository;
|
||||
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import com.ticketing.server.movie.domain.MovieTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@@ -10,12 +11,11 @@ import org.springframework.stereotype.Repository;
|
||||
@Repository
|
||||
public interface MovieTimeRepository extends JpaRepository<MovieTime, Long> {
|
||||
|
||||
@Query(value = "SELECT * "
|
||||
+ "FROM movie_time "
|
||||
+ "WHERE movie_id = :movieId "
|
||||
+ "AND start_at "
|
||||
+ "BETWEEN date_format(start_at, :startOfDay) "
|
||||
+ "AND date_format(start_at, :endOfDay)", nativeQuery = true)
|
||||
List<MovieTime> findValidMovieTimes(long movieId, LocalDateTime startOfDay, LocalDateTime endOfDay);
|
||||
@Query(value = "SELECT mt "
|
||||
+ "FROM MovieTime mt "
|
||||
+ "JOIN FETCH mt.movie "
|
||||
+ "WHERE mt.movie = :movie "
|
||||
+ "AND mt.startAt BETWEEN :startOfDay AND :endOfDay ")
|
||||
List<MovieTime> findValidMovieTimes(Movie movie, LocalDateTime startOfDay, LocalDateTime endOfDay);
|
||||
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class MovieTimeServiceImpl implements MovieTimeService {
|
||||
LocalDateTime startOfDay = runningDate.atStartOfDay().plusHours(6);
|
||||
LocalDateTime endOfDay = startOfDay.plusDays(1);
|
||||
|
||||
List<MovieTime> movieTimes = movieTimeRepository.findValidMovieTimes(movie.getId(), startOfDay, endOfDay);
|
||||
List<MovieTime> movieTimes = movieTimeRepository.findValidMovieTimes(movie, startOfDay, endOfDay);
|
||||
|
||||
return movieTimes.stream()
|
||||
.map(MovieTimeDto::from)
|
||||
|
||||
@@ -10,7 +10,7 @@ import lombok.Getter;
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class MovieTimeDto {
|
||||
|
||||
private long movieTimeId;
|
||||
private Long movieTimeId;
|
||||
|
||||
private Integer theaterNumber;
|
||||
|
||||
|
||||
@@ -35,7 +35,8 @@ public class MovieServiceImplTest {
|
||||
@DisplayName("Movie Service Test - get movies when there is no movie")
|
||||
void shouldGetEmptyList() {
|
||||
// given
|
||||
when(movieRepository.findValidMovies()).thenReturn(Collections.emptyList());
|
||||
when(movieRepository.findValidMovies())
|
||||
.thenReturn(Collections.emptyList());
|
||||
|
||||
// when
|
||||
List<MovieDto> movieDtoList = movieService.getMovies();
|
||||
@@ -49,11 +50,12 @@ public class MovieServiceImplTest {
|
||||
void shouldAbleToGetMovies() {
|
||||
// given
|
||||
movie = new Movie("범죄도시2", 106);
|
||||
movieDto = movie.toDto();
|
||||
movieDto = movieDto.from(movie);
|
||||
movies.add(movie);
|
||||
movieDtos.add(movieDto);
|
||||
|
||||
when(movieRepository.findValidMovies()).thenReturn(movies);
|
||||
when(movieRepository.findValidMovies())
|
||||
.thenReturn(movies);
|
||||
|
||||
// when
|
||||
List<MovieDto> movieDtoList = movieService.getMovies();
|
||||
|
||||
@@ -1,21 +1,36 @@
|
||||
package com.ticketing.server.movie.service;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import com.ticketing.server.movie.domain.MovieTime;
|
||||
import com.ticketing.server.movie.domain.Theater;
|
||||
import com.ticketing.server.movie.domain.repository.MovieRepository;
|
||||
import com.ticketing.server.movie.domain.repository.MovieTimeRepository;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeDto;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
public class MovieTimeServiceImplTest {
|
||||
|
||||
LocalDateTime startOfDay = LocalDate.now().atStartOfDay().plusHours(6);
|
||||
LocalDateTime endOfDay = startOfDay.plusDays(1);
|
||||
String title = "범죄도시2";
|
||||
List<MovieTime> movieTimes = new ArrayList<>();
|
||||
|
||||
@Mock
|
||||
MovieRepository movieRepository;
|
||||
|
||||
@Mock
|
||||
MovieTimeRepository movieTimeRepository;
|
||||
@@ -24,10 +39,48 @@ public class MovieTimeServiceImplTest {
|
||||
MovieTimeServiceImpl movieTimeService;
|
||||
|
||||
@Test
|
||||
@Rollback
|
||||
@DisplayName("MovieTime Service Test - get empty list when there is no valid movie times")
|
||||
void shouldGetEmptyList() {
|
||||
// given
|
||||
Movie movie = new Movie(title, 106);
|
||||
|
||||
when(movieRepository.findByTitle(title))
|
||||
.thenReturn(Optional.of(movie));
|
||||
|
||||
when(movieTimeRepository.findValidMovieTimes(any(), any(), any()))
|
||||
.thenReturn(Collections.emptyList());
|
||||
|
||||
// when
|
||||
List<MovieTimeDto> movieTimeDtoList = movieTimeService.getMovieTimes(title, LocalDate.now());
|
||||
|
||||
// then
|
||||
assertTrue(movieTimeDtoList.isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("MovieTime Service Test - get list when there is valid movie times")
|
||||
void shouldGetMovieTimeList() {
|
||||
// given
|
||||
Movie movie = new Movie(title, 106);
|
||||
Theater theater = new Theater(1, 100);
|
||||
MovieTime movieTime = new MovieTime(movie, theater, 1,
|
||||
LocalDateTime.of(2022, 7, 1, 17, 0, 0),
|
||||
LocalDateTime.of(2022, 7, 1, 18, 56, 0)
|
||||
);
|
||||
|
||||
movieTimes.add(movieTime);
|
||||
|
||||
when(movieRepository.findByTitle(title))
|
||||
.thenReturn(Optional.of(movie));
|
||||
|
||||
when(movieTimeRepository.findValidMovieTimes(any(), any(), any()))
|
||||
.thenReturn(movieTimes);
|
||||
|
||||
// when
|
||||
List<MovieTimeDto> movieTimeDtoList = movieTimeService.getMovieTimes(title, LocalDate.of(2022, 07, 01));
|
||||
|
||||
// then
|
||||
assertTrue(!movieTimeDtoList.isEmpty());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user