From 95fd5e1cbf85978812a1c447ca566c8bd3335845 Mon Sep 17 00:00:00 2001 From: Jinyoung Date: Fri, 19 Sep 2025 22:03:45 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EC=BD=94=EC=8A=A4=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/opendata/CourseServiceTest.java | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/test/java/com/opendata/CourseServiceTest.java diff --git a/src/test/java/com/opendata/CourseServiceTest.java b/src/test/java/com/opendata/CourseServiceTest.java new file mode 100644 index 0000000..5a79fe8 --- /dev/null +++ b/src/test/java/com/opendata/CourseServiceTest.java @@ -0,0 +1,100 @@ +package com.opendata; +import com.opendata.domain.course.dto.response.CourseResponse; +import com.opendata.domain.course.entity.Course; +import com.opendata.domain.course.entity.CourseComponent; +import com.opendata.domain.course.repository.CourseComponentRepository; +import com.opendata.domain.course.repository.CourseRepository; +import com.opendata.domain.course.service.CourseService; +import com.opendata.domain.user.entity.User; +import com.opendata.global.security.CustomUserDetails; +import jakarta.transaction.Transactional; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +@SpringBootTest +@Transactional // 테스트 환경에선 DB에 반영되지 않고 롤백. +class CourseServiceTest { + @Autowired + private CourseService courseService; + @Autowired + private CourseRepository courseRepository; + @Autowired + private CourseComponentRepository courseComponentRepository; + + private List result; + private String courseId; + + @BeforeEach + void setUp() { + result = courseService.recommendCourses( + 37.5665, 126.9780, + "2025-09-19 12:00", "2025-09-19 18:00", + "경복궁" + ); + courseId = result.get(0).courseId(); // 공통으로 쓸 ID + } + + + @Test + @DisplayName("코스 생성 테스트") + void recommendCourses_shouldReturnFromRealDb() { + assertThat(result).isNotEmpty(); + + result.forEach(course -> { + System.out.println("CourseId: " + course.courseId()); + course.courseComponentDtoList().forEach(component -> { + System.out.println(component.tourSpotName() + + " (" + component.tourspotId() + "), 시간: " + component.time() + + ", 혼잡도: " + component.congestionLevel()); + }); + }); + } + + @Test + @DisplayName("코스 즐겨찾기 테스트") + void likeCourse_shouldPostAtRealDb(){ + String parsedCourseId = courseId.split("tempCourse:")[1]; + String email = "kamillcream1@gmail.com"; + + User user = new User(); + user.setEmail(email); + + + CustomUserDetails userDetails = new CustomUserDetails(user); + + List coursesBefore = courseRepository.findAll(); + int beforeTest = coursesBefore.size(); + + courseService.likeCourse(parsedCourseId, userDetails); + + + List coursesAfter = courseRepository.findAll(); + + assertThat(coursesAfter).hasSize(beforeTest + 1); + assertThat(coursesAfter).isNotEmpty(); + assertThat(coursesAfter.get(0).getCourseComponents()).isNotEmpty(); + } + + @Test + @DisplayName("코스 상세정보 조회 테스트") + void fetchCourseDetailTest(){ + String parsedCourseId = courseId.split("tempCourse:")[1]; + + CourseResponse courseResponse = courseService.fetchCourseDetail(parsedCourseId); + courseResponse.courseComponentDtoList().forEach( + courseComponentDto ->{ + System.out.println(courseComponentDto.tourspotId()); + System.out.println(courseComponentDto.tourSpotName()); + } + ); + + assertThat(courseResponse).isNotNull(); + } +} From 455a6e142325b3d27b6f8924ae01cd0ab0fc9665 Mon Sep 17 00:00:00 2001 From: Jinyoung Date: Fri, 19 Sep 2025 22:04:16 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EA=B8=B0=EB=B3=B8=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9E=90=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=EC=96=B4=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/opendata/domain/course/entity/Course.java | 2 +- .../java/com/opendata/domain/tourspot/entity/TourSpot.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/opendata/domain/course/entity/Course.java b/src/main/java/com/opendata/domain/course/entity/Course.java index 7f6eba5..f8d867b 100644 --- a/src/main/java/com/opendata/domain/course/entity/Course.java +++ b/src/main/java/com/opendata/domain/course/entity/Course.java @@ -14,7 +14,7 @@ @Table(name = "course") @Builder @Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) +@NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) public class Course extends BaseEntity { @Id diff --git a/src/main/java/com/opendata/domain/tourspot/entity/TourSpot.java b/src/main/java/com/opendata/domain/tourspot/entity/TourSpot.java index e728b3b..fb66d34 100644 --- a/src/main/java/com/opendata/domain/tourspot/entity/TourSpot.java +++ b/src/main/java/com/opendata/domain/tourspot/entity/TourSpot.java @@ -16,8 +16,8 @@ }) @Getter @Setter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor(access = AccessLevel.PRIVATE) +@NoArgsConstructor +@AllArgsConstructor @Builder public class TourSpot extends BaseEntity { From 80ad7c921a60618e831ebb41b0596216eebd2212 Mon Sep 17 00:00:00 2001 From: Jinyoung Date: Fri, 19 Sep 2025 22:04:21 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=9C=84=ED=95=9C=20=EC=84=B8=ED=84=B0=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/opendata/domain/user/entity/User.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/opendata/domain/user/entity/User.java b/src/main/java/com/opendata/domain/user/entity/User.java index 7ef9ddf..86abaf0 100644 --- a/src/main/java/com/opendata/domain/user/entity/User.java +++ b/src/main/java/com/opendata/domain/user/entity/User.java @@ -10,6 +10,7 @@ @Entity @Table(name = "user") @Getter +@Setter @NoArgsConstructor @AllArgsConstructor @Builder From a8afeaccc36b9bd2a8c0dc1edc122ce258ba72d9 Mon Sep 17 00:00:00 2001 From: Jinyoung Date: Fri, 19 Sep 2025 22:04:34 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20assertj=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index deb5b63..2f0cfa8 100644 --- a/build.gradle +++ b/build.gradle @@ -69,6 +69,8 @@ dependencies { //webclient implementation 'org.springframework.boot:spring-boot-starter-webflux' + testImplementation 'org.assertj:assertj-core:3.26.3' + //swagger implementation 'io.swagger.core.v3:swagger-annotations:2.2.22' implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4'