-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
JunHwan Kim
committed
Jan 4, 2024
1 parent
6d59c9c
commit 296d80f
Showing
2 changed files
with
144 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,16 @@ | ||
package dnd.project.domain.lecture.service; | ||
|
||
import dnd.project.domain.bookmark.entity.Bookmark; | ||
import dnd.project.domain.bookmark.repository.BookmarkRepository; | ||
import dnd.project.domain.lecture.entity.Lecture; | ||
import dnd.project.domain.lecture.repository.LectureRepository; | ||
import dnd.project.domain.lecture.response.LectureListReadResponse; | ||
import dnd.project.domain.lecture.response.LectureReadResponse; | ||
import dnd.project.domain.lecture.response.TagGroup; | ||
import dnd.project.domain.review.entity.LikeReview; | ||
import dnd.project.domain.review.entity.Review; | ||
import dnd.project.domain.review.entity.ReviewTag; | ||
import dnd.project.domain.review.repository.LikeReviewRepository; | ||
import dnd.project.domain.review.repository.ReviewRepository; | ||
import dnd.project.domain.user.entity.Authority; | ||
import dnd.project.domain.user.entity.Users; | ||
|
@@ -38,6 +42,10 @@ class LectureServiceTest { | |
ReviewRepository reviewRepository; | ||
@Autowired | ||
UserRepository userRepository; | ||
@Autowired | ||
LikeReviewRepository likeReviewRepository; | ||
@Autowired | ||
BookmarkRepository bookmarkRepository; | ||
|
||
@DisplayName("강의 검색 - 메인 카테고리, 서브 카테고리가 유효하지 않을 때") | ||
@Test | ||
|
@@ -204,7 +212,142 @@ void getLectures5() { | |
} | ||
} | ||
|
||
// method | ||
@DisplayName("강의 목록 조회") | ||
@Test | ||
void getLectures6() { | ||
// given | ||
// Lectures | ||
List<Lecture> totalLectures = List.of( | ||
getLecture("스프링 부트 - 핵심 원리와 활용", "99,000", "김영한", "프로그래밍", "웹", "스프링,스프링부트", "실무에 필요한 스프링 부트는 이 강의 하나로 모두 정리해드립니다."), | ||
getLecture("스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술", "99,000", "김영한", "프로그래밍", "웹", "스프링,스프링MVC", "웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다."), | ||
getLecture("스프링 DB 2편 - 데이터 접근 활용 기술", "99,000", "김영한", "프로그래밍", "웹", "스프링,DB", "백엔드 개발에 필요한 DB 데이터 접근 기술을 활용하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다."), | ||
getLecture("배달앱 클론코딩 [with React Native]", "71,500", "조현영", "프로그래밍", "웹", "리액트 네이티브", "리액트 네이티브로 라이더용 배달앱을 만들어봅니다. 6년간 리액트 네이티브로 5개 이상의 앱을 만들고, 카카오 모빌리티에 매각한 개발자의 강의입니다."), | ||
getLecture("앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지", "205,700", "앨런(Allen)", "프로그래밍", "웹", "iOS", "탄탄한 신입 iOS개발자가 되기 위한 기본기 갖추기. 15개의 앱을 만들어 보면서 익히는.. iOS프로그래밍의 기초")); | ||
lectureRepository.saveAll(totalLectures); | ||
|
||
// Users | ||
List<Users> totalUsers = List.of( | ||
saveUser("[email protected]", "테스터1"), | ||
saveUser("[email protected]", "테스터2"), | ||
saveUser("[email protected]", "테스터3")); | ||
userRepository.saveAll(totalUsers); | ||
|
||
// Reviews | ||
List<Review> totalReviews = List.of( | ||
getReview(totalLectures.get(0), | ||
totalUsers.get(0), | ||
5.0, | ||
ReviewTag.TAG001.getName() + "," + | ||
ReviewTag.TAG002.getName() + "," + | ||
ReviewTag.TAG003.getName() + "," + | ||
ReviewTag.TAG004.getName() + "," + | ||
ReviewTag.TAG005.getName() + "," + | ||
ReviewTag.TAG0010.getName() + "," + | ||
ReviewTag.TAG0011.getName(), "내용이 알찹니다!"), | ||
|
||
getReview(totalLectures.get(0), | ||
totalUsers.get(1), | ||
4.0, | ||
ReviewTag.TAG001.getName() + "," + | ||
ReviewTag.TAG005.getName() + "," + | ||
ReviewTag.TAG009.getName(), | ||
"아주 퍼펙트한 강의 이군요"), | ||
|
||
getReview(totalLectures.get(0), | ||
totalUsers.get(2), | ||
2.5, | ||
ReviewTag.TAG001.getName() + "," + | ||
ReviewTag.TAG006.getName() + "," + | ||
ReviewTag.TAG0010.getName(), | ||
"이 강의를 듣고 개념이 달라졌습니다.")); | ||
|
||
reviewRepository.saveAll(totalReviews); | ||
|
||
List<LikeReview> likeReviews = List.of( | ||
LikeReview.builder() | ||
.users(totalUsers.get(0)) | ||
.review(totalReviews.get(0)) | ||
.build(), | ||
LikeReview.builder() | ||
.users(totalUsers.get(0)) | ||
.review(totalReviews.get(1)) | ||
.build(), | ||
LikeReview.builder() | ||
.users(totalUsers.get(1)) | ||
.review(totalReviews.get(0)) | ||
.build(), | ||
LikeReview.builder() | ||
.users(totalUsers.get(1)) | ||
.review(totalReviews.get(1)) | ||
.build(), | ||
LikeReview.builder() | ||
.users(totalUsers.get(2)) | ||
.review(totalReviews.get(0)) | ||
.build()); | ||
|
||
likeReviewRepository.saveAll(likeReviews); | ||
|
||
// Bookmark | ||
List<Bookmark> bookmarks = List.of( | ||
Bookmark.builder() | ||
.user(totalUsers.get(0)) | ||
.lecture(totalLectures.get(0)) | ||
.build(), | ||
Bookmark.builder() | ||
.user(totalUsers.get(1)) | ||
.lecture(totalLectures.get(0)) | ||
.build(), | ||
Bookmark.builder() | ||
.user(totalUsers.get(2)) | ||
.lecture(totalLectures.get(0)) | ||
.build(), | ||
Bookmark.builder() | ||
.user(totalUsers.get(0)) | ||
.lecture(totalLectures.get(2)) | ||
.build(), | ||
Bookmark.builder() | ||
.user(totalUsers.get(1)) | ||
.lecture(totalLectures.get(2)) | ||
.build()); | ||
|
||
bookmarkRepository.saveAll(bookmarks); | ||
|
||
// when | ||
LectureListReadResponse response = lectureService.getLectures(null, | ||
null, | ||
null, | ||
0, | ||
10, | ||
null); | ||
|
||
// then | ||
Assertions.assertThat(response.getLectures().size()).isEqualTo(totalLectures.size()); | ||
Assertions.assertThat(response.getLectures().get(0).getAverageScore()).isEqualTo(4.0); | ||
Assertions.assertThat(response.getLectures().get(0).getReviewCount()).isEqualTo(3); | ||
Assertions.assertThat(response.getLectures().get(0).getBookmarkCount()).isEqualTo(3); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(0).getContent()).isEqualTo(totalReviews.get(2).getContent()); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(1).getContent()).isEqualTo(totalReviews.get(1).getContent()); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(2).getContent()).isEqualTo(totalReviews.get(0).getContent()); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(0).getLikeCount()).isEqualTo(0); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(1).getLikeCount()).isEqualTo(2); | ||
Assertions.assertThat(response.getLectures().get(0).getReviews().get(2).getLikeCount()).isEqualTo(3); | ||
|
||
List<TagGroup> tagGroups = response.getLectures().get(0).getTagGroups(); | ||
Assertions.assertThat(tagGroups.size()).isEqualTo(3); | ||
Assertions.assertThat(tagGroups).extracting("name").contains("강사에 대해", "강의내용에 대해", "강의후, 느끼는 변화"); | ||
|
||
for (TagGroup tagGroup : tagGroups) { | ||
List<TagGroup.Tag> tags = tagGroup.getTags(); | ||
|
||
if (tagGroup.getName().equals("강사에 대해")) { | ||
Assertions.assertThat(tags.size()).isEqualTo(4); | ||
} else if (tagGroup.getName().equals("강의내용에 대해")) { | ||
Assertions.assertThat(tags.size()).isEqualTo(4); | ||
} else { | ||
Assertions.assertThat(tags.size()).isEqualTo(3); | ||
} | ||
} | ||
} | ||
|
||
private static Review getReview( | ||
Lecture lecture, Users randomUser, double score, String tags, String content | ||
|