diff --git a/book-service/src/main/java/kr/mybrary/bookservice/book/domain/BookWriteService.java b/book-service/src/main/java/kr/mybrary/bookservice/book/domain/BookWriteService.java index 1b935a7..9de02b7 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/book/domain/BookWriteService.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/book/domain/BookWriteService.java @@ -1,19 +1,20 @@ package kr.mybrary.bookservice.book.domain; import java.util.List; +import java.util.stream.Collectors; import kr.mybrary.bookservice.book.domain.dto.BookDtoMapper; import kr.mybrary.bookservice.book.domain.dto.request.BookCreateServiceRequest; import kr.mybrary.bookservice.book.domain.exception.BookAlreadyExistsException; import kr.mybrary.bookservice.book.persistence.Book; -import kr.mybrary.bookservice.book.persistence.bookInfo.BookCategory; import kr.mybrary.bookservice.book.persistence.bookInfo.Author; import kr.mybrary.bookservice.book.persistence.bookInfo.BookAuthor; +import kr.mybrary.bookservice.book.persistence.bookInfo.BookCategory; +import kr.mybrary.bookservice.book.persistence.bookInfo.BookTranslator; +import kr.mybrary.bookservice.book.persistence.bookInfo.Translator; import kr.mybrary.bookservice.book.persistence.repository.AuthorRepository; import kr.mybrary.bookservice.book.persistence.repository.BookCategoryRepository; import kr.mybrary.bookservice.book.persistence.repository.BookRepository; import kr.mybrary.bookservice.book.persistence.repository.TranslatorRepository; -import kr.mybrary.bookservice.book.persistence.bookInfo.BookTranslator; -import kr.mybrary.bookservice.book.persistence.bookInfo.Translator; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.retry.annotation.Backoff; @@ -42,22 +43,38 @@ public void create(BookCreateServiceRequest request) { checkBookAlreadyRegistered(request); Book book = BookDtoMapper.INSTANCE.bookCreateRequestToEntity(request); - List bookAuthors = request.getAuthors().stream() - .map(r -> getAuthor(r.getAuthorId(), r.getName())) - .map(author -> BookAuthor.builder().author(author).build()) - .toList(); + book.addBookAuthor(getBookAuthors(request)); + book.addBookTranslator(getBookTranslators(request)); + book.assignCategory(getBookCategory(request.getCategoryId(), request.getCategory())); + book.updateAuthorWithComma(joiningAuthorWithComma(request)); + book.updateTranslatorWithComma(joiningTranslatorWithComma(request)); + + bookRepository.save(book); + log.info("New Book Saved : {}, {}", book.getTitle(), book.getIsbn13()); + } + + private String joiningAuthorWithComma(BookCreateServiceRequest request) { + return request.getAuthors().stream().map(BookCreateServiceRequest.Author::getName) + .collect(Collectors.joining(", ")); + } - List bookTranslators = request.getTranslators().stream() + private String joiningTranslatorWithComma(BookCreateServiceRequest request) { + return request.getTranslators().stream().map(BookCreateServiceRequest.Translator::getName) + .collect(Collectors.joining(", ")); + } + + private List getBookTranslators(BookCreateServiceRequest request) { + return request.getTranslators().stream() .map(r -> getTranslator(r.getTranslatorId(), r.getName())) .map(translator -> BookTranslator.builder().translator(translator).build()) .toList(); + } - book.addBookAuthor(bookAuthors); - book.addBookTranslator(bookTranslators); - book.assignCategory(getBookCategory(request.getCategoryId(), request.getCategory())); - - bookRepository.save(book); - log.info("New Book Saved : {}, {}", book.getTitle(), book.getIsbn13()); + private List getBookAuthors(BookCreateServiceRequest request) { + return request.getAuthors().stream() + .map(r -> getAuthor(r.getAuthorId(), r.getName())) + .map(author -> BookAuthor.builder().author(author).build()) + .toList(); } private void checkBookAlreadyRegistered(BookCreateServiceRequest request) { diff --git a/book-service/src/main/java/kr/mybrary/bookservice/book/domain/dto/BookDtoMapper.java b/book-service/src/main/java/kr/mybrary/bookservice/book/domain/dto/BookDtoMapper.java index 2eadee4..bc3684e 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/book/domain/dto/BookDtoMapper.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/book/domain/dto/BookDtoMapper.java @@ -31,6 +31,8 @@ public interface BookDtoMapper { @Mapping(target = "starRating", constant = "0") @Mapping(target = "reviewCount", constant = "0") @Mapping(target = "recommendationFeedCount", constant = "0") + @Mapping(target = "authors", constant = "") + @Mapping(target = "translators", constant = "") @Mapping(target = "aladinStarRating", source = "starRating") @Mapping(target = "aladinReviewCount", source = "reviewCount") Book bookCreateRequestToEntity(BookCreateServiceRequest request); diff --git a/book-service/src/main/java/kr/mybrary/bookservice/book/persistence/Book.java b/book-service/src/main/java/kr/mybrary/bookservice/book/persistence/Book.java index d387335..28692ac 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/book/persistence/Book.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/book/persistence/Book.java @@ -11,6 +11,9 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; import kr.mybrary.bookservice.book.persistence.bookInfo.BookAuthor; import kr.mybrary.bookservice.book.persistence.bookInfo.BookCategory; import kr.mybrary.bookservice.book.persistence.bookInfo.BookTranslator; @@ -19,10 +22,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; import lombok.NoArgsConstructor; @Entity @@ -77,6 +76,9 @@ public class Book extends BaseEntity { private Double aladinStarRating; private Integer aladinReviewCount; + private String authors; + private String translators; + @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) private BookCategory bookCategory; @@ -164,4 +166,12 @@ public void updateWhenDeleteReview(Double originStarRating) { this.reviewCount--; this.starRating -= originStarRating; } + + public void updateAuthorWithComma(String authors) { + this.authors = authors; + } + + public void updateTranslatorWithComma(String translators) { + this.translators = translators; + } } diff --git a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedOfUserViewModel.java b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedOfUserViewModel.java index 23a2f28..2760d17 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedOfUserViewModel.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedOfUserViewModel.java @@ -16,7 +16,7 @@ public class RecommendationFeedOfUserViewModel { private String content; private List recommendationTargets; - private List bookAuthors; + private String bookAuthors; private Long recommendationFeedId; private Long myBookId; @@ -30,10 +30,6 @@ public void setRecommendationTargets(List recom this.recommendationTargets = recommendationTargetOfUserModels; } - public void setBookAuthors(List bookAuthors) { - this.bookAuthors = bookAuthors; - } - @Getter @Builder @NoArgsConstructor @@ -44,16 +40,4 @@ public static class RecommendationTargetOfUserModel { private Long targetId; private String targetName; } - - @Getter - @Builder - @NoArgsConstructor - @AllArgsConstructor - @EqualsAndHashCode - public static class RecommendationFeedOfUserBookAuthorModel { - - private Long authorId; - private Integer aid; - private String name; - } } diff --git a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedViewAllModel.java b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedViewAllModel.java index 84cd168..dd31201 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedViewAllModel.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/model/RecommendationFeedViewAllModel.java @@ -15,7 +15,7 @@ public class RecommendationFeedViewAllModel { private String content; private List recommendationTargets; - private List bookAuthors; + private String bookAuthors; private String userId; @@ -33,10 +33,6 @@ public void setRecommendationTargets(List recommendat this.recommendationTargets = recommendationTargetModels; } - public void setBookAuthors(List bookAuthorModels) { - this.bookAuthors = bookAuthorModels; - } - public void setInterested(boolean interested) { this.interested = interested; } @@ -51,16 +47,4 @@ public static class RecommendationTargetModel { private Long targetId; private String targetName; } - - @Getter - @Builder - @NoArgsConstructor - @AllArgsConstructor - @EqualsAndHashCode - public static class BookAuthorModel { - - private Long authorId; - private Integer aid; - private String name; - } } diff --git a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryCustomImpl.java b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryCustomImpl.java index 0a12cbc..464f4c7 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryCustomImpl.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryCustomImpl.java @@ -6,8 +6,6 @@ import static com.querydsl.core.types.dsl.Expressions.set; import static kr.mybrary.bookservice.book.persistence.QBook.book; import static kr.mybrary.bookservice.book.persistence.QBookInterest.bookInterest; -import static kr.mybrary.bookservice.book.persistence.bookInfo.QAuthor.author; -import static kr.mybrary.bookservice.book.persistence.bookInfo.QBookAuthor.bookAuthor; import static kr.mybrary.bookservice.mybook.persistence.QMyBook.myBook; import static kr.mybrary.bookservice.recommend.persistence.QRecommendationFeed.recommendationFeed; import static kr.mybrary.bookservice.recommend.persistence.QRecommendationTarget.recommendationTarget; @@ -22,10 +20,8 @@ import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfBookViewModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfBookViewModel.RecommendationTargetOfBookModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel; -import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel.RecommendationFeedOfUserBookAuthorModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel.RecommendationTargetOfUserModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel; -import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel.BookAuthorModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel.RecommendationTargetModel; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -48,7 +44,8 @@ public List getRecommendationFeedViewAll(Long re book.isbn13.as("isbn13"), book.thumbnailUrl.as("thumbnailUrl"), book.holderCount.as("holderCount"), - book.interestCount.as("interestCount") + book.interestCount.as("interestCount"), + book.authors.as("bookAuthors") )) .from(recommendationFeed) .where(ltRecommendationFeedId(recommendationFeedId)) @@ -62,10 +59,6 @@ public List getRecommendationFeedViewAll(Long re .map(RecommendationFeedViewAllModel::getRecommendationFeedId) .toList(); - List bookIds = models.stream() - .map(RecommendationFeedViewAllModel::getBookId) - .toList(); - Map> recommendationTargetModelMap = queryFactory .select( fields(RecommendationTargetModel.class, @@ -80,30 +73,12 @@ public List getRecommendationFeedViewAll(Long re recommendationTarget.targetName.as("targetName") )))); - Map> bookAuthorModelMap = queryFactory - .select( - fields(BookAuthorModel.class, - author.id.as("authorId"), - author.aid.as("aid"), - author.name.as("name") - ) - ).from(bookAuthor) - .join(bookAuthor.author, author).on(bookAuthor.author.id.eq(author.id)) - .where(bookAuthor.book.id.in(bookIds)) - .transform(groupBy(bookAuthor.book.id) - .as(list(fields(BookAuthorModel.class, - author.id.as("authorId"), - author.aid.as("aid"), - author.name.as("name") - )))); - Set interestedBookIdSet = queryFactory.select(book.id).from(bookInterest) .where(bookInterest.userId.eq(userId)) .transform(groupBy(book.id).as(set(book.id))).keySet(); models.forEach(model -> { model.setRecommendationTargets(recommendationTargetModelMap.getOrDefault(model.getRecommendationFeedId(), List.of())); - model.setBookAuthors(bookAuthorModelMap.getOrDefault(model.getBookId(), List.of())); model.setInterested(interestedBookIdSet.contains(model.getBookId())); }); @@ -137,7 +112,8 @@ public List getRecommendationFeedViewOfUserMo book.id.as("bookId"), book.title.as("title"), book.isbn13.as("isbn13"), - book.thumbnailUrl.as("thumbnailUrl") + book.thumbnailUrl.as("thumbnailUrl"), + book.authors.as("bookAuthors") )) .from(recommendationFeed) .where(recommendationFeed.userId.eq(userId)) @@ -150,10 +126,6 @@ public List getRecommendationFeedViewOfUserMo .map(RecommendationFeedOfUserViewModel::getRecommendationFeedId) .toList(); - List bookIds = models.stream() - .map(RecommendationFeedOfUserViewModel::getBookId) - .toList(); - Map> recommendationTargetModelMap = queryFactory .select( fields(RecommendationTargetOfUserModel.class, @@ -168,26 +140,8 @@ public List getRecommendationFeedViewOfUserMo recommendationTarget.targetName.as("targetName") )))); - Map> bookAuthorModelMap = queryFactory - .select( - fields(RecommendationFeedOfUserBookAuthorModel.class, - author.id.as("authorId"), - author.aid.as("aid"), - author.name.as("name") - ) - ).from(bookAuthor) - .join(bookAuthor.author, author).on(bookAuthor.author.id.eq(author.id)) - .where(bookAuthor.book.id.in(bookIds)) - .transform(groupBy(bookAuthor.book.id) - .as(list(fields(RecommendationFeedOfUserBookAuthorModel.class, - author.id.as("authorId"), - author.aid.as("aid"), - author.name.as("name") - )))); - models.forEach(model -> { model.setRecommendationTargets(recommendationTargetModelMap.getOrDefault(model.getRecommendationFeedId(), List.of())); - model.setBookAuthors(bookAuthorModelMap.getOrDefault(model.getBookId(), List.of())); }); return models; diff --git a/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedOfUserViewResponse.java b/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedOfUserViewResponse.java index 3e6e380..19b507c 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedOfUserViewResponse.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedOfUserViewResponse.java @@ -1,9 +1,9 @@ package kr.mybrary.bookservice.recommend.presentation.dto.response; +import java.util.Arrays; import java.util.List; import kr.mybrary.bookservice.global.util.DateUtils; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel; -import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel.RecommendationFeedOfUserBookAuthorModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedOfUserViewModel.RecommendationTargetOfUserModel; import lombok.Builder; import lombok.Getter; @@ -28,8 +28,7 @@ public static RecommendationFeedOfUserViewResponse of(List recommendationTargetNames; private List authors; } + + private static List getAuthorList(RecommendationFeedOfUserViewModel recommendationFeed) { + if (recommendationFeed.getBookAuthors() == null) { + return List.of(); + } + + return Arrays.stream(recommendationFeed.getBookAuthors().split(", ")) + .toList(); + } } diff --git a/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedViewAllResponse.java b/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedViewAllResponse.java index 4c89e00..b8b5d64 100644 --- a/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedViewAllResponse.java +++ b/book-service/src/main/java/kr/mybrary/bookservice/recommend/presentation/dto/response/RecommendationFeedViewAllResponse.java @@ -1,10 +1,10 @@ package kr.mybrary.bookservice.recommend.presentation.dto.response; +import java.util.Arrays; import java.util.List; import java.util.Map; import kr.mybrary.bookservice.client.user.dto.response.UserInfoServiceResponse.UserInfo; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel; -import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel.BookAuthorModel; import kr.mybrary.bookservice.recommend.persistence.model.RecommendationFeedViewAllModel.RecommendationTargetModel; import lombok.Builder; import lombok.Getter; @@ -59,9 +59,7 @@ public static RecommendationFeedViewAllResponse of(List getAuthorList(RecommendationFeedViewAllModel recommendationFeed) { + if (recommendationFeed.getBookAuthors() == null) { + return List.of(); + } + + return Arrays.stream(recommendationFeed.getBookAuthors().split(", ")) + .toList(); + } } diff --git a/book-service/src/test/java/kr/mybrary/bookservice/book/BookFixture.java b/book-service/src/test/java/kr/mybrary/bookservice/book/BookFixture.java index 67ed9e2..aa566e5 100644 --- a/book-service/src/test/java/kr/mybrary/bookservice/book/BookFixture.java +++ b/book-service/src/test/java/kr/mybrary/bookservice/book/BookFixture.java @@ -6,9 +6,9 @@ import kr.mybrary.bookservice.book.persistence.Book; import kr.mybrary.bookservice.book.persistence.Book.BookBuilder; import kr.mybrary.bookservice.book.persistence.BookInterest; -import kr.mybrary.bookservice.book.persistence.bookInfo.BookCategory; import kr.mybrary.bookservice.book.persistence.bookInfo.Author; import kr.mybrary.bookservice.book.persistence.bookInfo.BookAuthor; +import kr.mybrary.bookservice.book.persistence.bookInfo.BookCategory; import kr.mybrary.bookservice.book.persistence.bookInfo.BookTranslator; import kr.mybrary.bookservice.book.persistence.bookInfo.Translator; import lombok.AllArgsConstructor; @@ -16,11 +16,11 @@ @AllArgsConstructor public enum BookFixture { - COMMON_BOOK(1L, "title", "subTitle", "author","thumbnailUrl", "link", "isbn10", "isbn13", 100, "publisher", + COMMON_BOOK(1L, "title", "subTitle", "author", "author_1, author_2, author_3","thumbnailUrl", "link", "isbn10", "isbn13", 100, "publisher", LocalDateTime.now(), "description", "toc", 10, 11, 12, 13, 10000, 11000, 1, 1, 1, 1,4.5, 2, 3.5, 10, createBookCategory(), createBookAuthors(), createBookTranslators(), createBookInterest()), - COMMON_BOOK_WITHOUT_RELATION(null, "title", "author","subTitle", "thumbnailUrl", "link", "isbn10", "isbn13", 100, "publisher", + COMMON_BOOK_WITHOUT_RELATION(null, "title", "author","subTitle", "author_1, author_2, author_3","thumbnailUrl", "link", "isbn10", "isbn13", 100, "publisher", LocalDateTime.now(), "description", "toc", 10, 11, 12, 13, 10000, 11000, 1, 1, 1, 1, 4.5, 1, 3.5, 10, null, null, null, null); @@ -28,6 +28,7 @@ public enum BookFixture { private final String title; private final String subTitle; private final String author; + private final String authors; private final String thumbnailUrl; private final String link; private final String isbn10; @@ -57,7 +58,7 @@ public enum BookFixture { private final List bookInterests; public Book getBook() { - return Book.builder().id(id).title(title).subTitle(subTitle).author(author).thumbnailUrl(thumbnailUrl).link(link) + return Book.builder().id(id).title(title).subTitle(subTitle).author(author).authors(authors).thumbnailUrl(thumbnailUrl).link(link) .isbn10(isbn10).isbn13(isbn13).pages(pages).publisher(publisher).publicationDate(publicationDate) .description(description).toc(toc).weight(weight).sizeDepth(sizeDepth).sizeHeight(sizeHeight) .sizeWidth(sizeWidth).priceSales(priceSales).priceStandard(priceStandard).holderCount(holderCount) @@ -68,7 +69,7 @@ public Book getBook() { } public BookBuilder getBookBuilder() { - return Book.builder().id(id).title(title).subTitle(subTitle).author(author).thumbnailUrl(thumbnailUrl).link(link) + return Book.builder().id(id).title(title).subTitle(subTitle).author(author).authors(authors).thumbnailUrl(thumbnailUrl).link(link) .isbn10(isbn10).isbn13(isbn13).pages(pages).publisher(publisher).publicationDate(publicationDate) .description(description).toc(toc).weight(weight).sizeDepth(sizeDepth).sizeHeight(sizeHeight) .sizeWidth(sizeWidth).priceSales(priceSales).priceStandard(priceStandard).holderCount(holderCount) diff --git a/book-service/src/test/java/kr/mybrary/bookservice/recommend/RecommendationFeedDtoTestData.java b/book-service/src/test/java/kr/mybrary/bookservice/recommend/RecommendationFeedDtoTestData.java index e1b666a..1a4ae52 100644 --- a/book-service/src/test/java/kr/mybrary/bookservice/recommend/RecommendationFeedDtoTestData.java +++ b/book-service/src/test/java/kr/mybrary/bookservice/recommend/RecommendationFeedDtoTestData.java @@ -93,17 +93,7 @@ public static List createRecommendationFeedViewA RecommendationFeedViewAllModel.RecommendationTargetModel.builder() .targetId((long) i + 1) .targetName("TARGET_NAME_" + (i + 1)).build())) - .bookAuthors(List.of( - RecommendationFeedViewAllModel.BookAuthorModel.builder() - .authorId((long) i) - .aid(i) - .name("AUTHOR_NAME_" + i) - .build(), - RecommendationFeedViewAllModel.BookAuthorModel.builder() - .authorId((long) i + 1) - .aid(i + 1) - .name("AUTHOR_NAME_" + (i + 1)) - .build())) + .bookAuthors("AUTHOR_NAME_" + i + ", " + "AUTHOR_NAME_" + (i + 1)) .build()) .toList(); } @@ -179,17 +169,7 @@ public static List createRecommendationFeedOf .thumbnailUrl("THUMBNAIL_URL_" + i) .isbn13("ISBN13_" + i) .createdAt(LocalDateTime.now()) - .bookAuthors(List.of( - RecommendationFeedOfUserViewModel.RecommendationFeedOfUserBookAuthorModel.builder() - .authorId((long) i) - .aid(i) - .name("AUTHOR_NAME_" + i) - .build(), - RecommendationFeedOfUserViewModel.RecommendationFeedOfUserBookAuthorModel.builder() - .authorId((long) i + 1) - .aid(i + 1) - .name("AUTHOR_NAME_" + (i + 1)) - .build())) + .bookAuthors("AUTHOR_NAME_" + i + ", " + "AUTHOR_NAME_" + (i + 1)) .recommendationTargets(List.of( RecommendationFeedOfUserViewModel.RecommendationTargetOfUserModel.builder() .targetId((long) i) diff --git a/book-service/src/test/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryTest.java b/book-service/src/test/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryTest.java index 4b6d3a4..7ac8e08 100644 --- a/book-service/src/test/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryTest.java +++ b/book-service/src/test/java/kr/mybrary/bookservice/recommend/persistence/repository/RecommendationFeedRepositoryTest.java @@ -120,14 +120,7 @@ void checkExistByMyBookId() { void getRecentRecommendationFeedView() { // given - Author author_1 = entityManager.persist(Author.builder().aid(11).name("테스트 저자 1").build()); - Author author_2 = entityManager.persist(Author.builder().aid(12).name("테스트 저자 2").build()); - Author author_3 = entityManager.persist(Author.builder().aid(13).name("테스트 저자 3").build()); - Book book = entityManager.persist(BookFixture.COMMON_BOOK_WITHOUT_RELATION.getBook()); - entityManager.persist(BookAuthor.builder().book(book).author(author_1).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_2).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_3).build()); IntStream.range(1, 21) .forEach(i -> { @@ -162,14 +155,14 @@ void getRecentRecommendationFeedView() { assertThat(recommendationFeedViewAll.get(0).getContent()).isEqualTo("NEW_CONTENT_20"); assertThat(recommendationFeedViewAll.get(0).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_20"); - assertThat(recommendationFeedViewAll.get(0).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"); + assertThat(recommendationFeedViewAll.get(0).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"); assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).hasSize(1); assertThat(recommendationFeedViewAll.get(9).getContent()).isEqualTo("NEW_CONTENT_11"); assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_11"); - assertThat(recommendationFeedViewAll.get(9).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"); + assertThat(recommendationFeedViewAll.get(9).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"); } ); } @@ -179,14 +172,7 @@ void getRecentRecommendationFeedView() { void getRecommendationFeedViewOf10to20() { // given - Author author_1 = entityManager.persist(Author.builder().aid(11).name("테스트 저자 1").build()); - Author author_2 = entityManager.persist(Author.builder().aid(12).name("테스트 저자 2").build()); - Author author_3 = entityManager.persist(Author.builder().aid(13).name("테스트 저자 3").build()); - Book book = entityManager.persist(BookFixture.COMMON_BOOK_WITHOUT_RELATION.getBook()); - entityManager.persist(BookAuthor.builder().book(book).author(author_1).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_2).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_3).build()); IntStream.range(1, 21) .forEach(i -> { @@ -225,14 +211,14 @@ void getRecommendationFeedViewOf10to20() { () -> assertThat(recommendationFeedViewAll.get(0).getContent()).isEqualTo("NEW_CONTENT_10"), () -> assertThat(recommendationFeedViewAll.get(0).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_10"), - () -> assertThat(recommendationFeedViewAll.get(0).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"), + () -> assertThat(recommendationFeedViewAll.get(0).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"), () -> assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).hasSize(1), () -> assertThat(recommendationFeedViewAll.get(9).getContent()).isEqualTo("NEW_CONTENT_1"), () -> assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_1"), - () -> assertThat(recommendationFeedViewAll.get(9).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3") + () -> assertThat(recommendationFeedViewAll.get(9).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3") ); } @@ -421,14 +407,14 @@ void getRecentRecommendationFeedViewWithInterested() { () -> assertThat(recommendationFeedViewAll.get(0).getContent()).isEqualTo("NEW_CONTENT_20"), () -> assertThat(recommendationFeedViewAll.get(0).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_20"), - () -> assertThat(recommendationFeedViewAll.get(0).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"), + () -> assertThat(recommendationFeedViewAll.get(0).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"), () -> assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).hasSize(1), () -> assertThat(recommendationFeedViewAll.get(9).getContent()).isEqualTo("NEW_CONTENT_11"), () -> assertThat(recommendationFeedViewAll.get(9).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_11"), - () -> assertThat(recommendationFeedViewAll.get(9).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"), + () -> assertThat(recommendationFeedViewAll.get(9).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"), () -> assertThat(recommendationFeedViewAll.get(0).getInterested()).isTrue(), () -> assertThat(recommendationFeedViewAll.get(9).getInterested()).isTrue() ); @@ -439,14 +425,7 @@ void getRecentRecommendationFeedViewWithInterested() { void getRecommendationFeedViewOfUserModel() { // given - Author author_1 = entityManager.persist(Author.builder().aid(11).name("테스트 저자 1").build()); - Author author_2 = entityManager.persist(Author.builder().aid(12).name("테스트 저자 2").build()); - Author author_3 = entityManager.persist(Author.builder().aid(13).name("테스트 저자 3").build()); - Book book = entityManager.persist(BookFixture.COMMON_BOOK_WITHOUT_RELATION.getBook()); - entityManager.persist(BookAuthor.builder().book(book).author(author_1).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_2).build()); - entityManager.persist(BookAuthor.builder().book(book).author(author_3).build()); IntStream.range(1, 5) .forEach(i -> { @@ -499,10 +478,10 @@ void getRecommendationFeedViewOfUserModel() { .containsExactly("TARGET_NAME_4"); assertThat(recommendationFeedOfUserView.get(3).getRecommendationTargets()).extracting("targetName") .containsExactly("TARGET_NAME_1"); - assertThat(recommendationFeedOfUserView.get(0).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"); - assertThat(recommendationFeedOfUserView.get(3).getBookAuthors()).extracting("name") - .containsExactly("테스트 저자 1", "테스트 저자 2", "테스트 저자 3"); + assertThat(recommendationFeedOfUserView.get(0).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"); + assertThat(recommendationFeedOfUserView.get(3).getBookAuthors().split(", ")) + .containsExactly("author_1", "author_2", "author_3"); }, () -> assertThat(recommendationFeedOfUserView).extracting("content").containsExactlyInAnyOrder( "NEW_CONTENT_1", "NEW_CONTENT_2", "NEW_CONTENT_3", "NEW_CONTENT_4")