Skip to content

Commit

Permalink
feat : 강의 목록 API 테스트 코드 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
JunHwan Kim committed Jan 4, 2024
1 parent 6d59c9c commit 296d80f
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ public List<Review> findAllReviewsByIds(List<Long> ids) {
.fetch();
}


public List<LectureListReadResponse.LectureInfo.ReviewInfo> findAllReviewsById(Long id) {

return queryFactory.select(
Expand Down
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;
Expand Down Expand Up @@ -38,6 +42,10 @@ class LectureServiceTest {
ReviewRepository reviewRepository;
@Autowired
UserRepository userRepository;
@Autowired
LikeReviewRepository likeReviewRepository;
@Autowired
BookmarkRepository bookmarkRepository;

@DisplayName("강의 검색 - 메인 카테고리, 서브 카테고리가 유효하지 않을 때")
@Test
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 296d80f

Please sign in to comment.