From f1e4a19e4836b02a9c1fa99fcce29bf23a543a07 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Tue, 19 Aug 2025 15:35:09 +0900 Subject: [PATCH 01/45] =?UTF-8?q?[refactor]=20alias,=20category,=20tag,=20?= =?UTF-8?q?feedTag=20jpa=20entity=20=EC=82=AD=EC=A0=9C=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/out/jpa/FeedTagJpaEntity.java | 26 ------------ .../feed/adapter/out/jpa/TagJpaEntity.java | 27 ------------ .../FeedTag/FeedTagJpaRepository.java | 24 ----------- .../repository/Tag/TagJpaRepository.java | 17 -------- .../adapter/out/jpa/CategoryJpaEntity.java | 32 --------------- .../category/CategoryJpaRepository.java | 19 --------- .../user/adapter/out/jpa/AliasJpaEntity.java | 29 ------------- .../repository/alias/AliasJpaRepository.java | 11 ----- .../alias/AliasQueryRepository.java | 8 ---- .../alias/AliasQueryRepositoryImpl.java | 41 ------------------- 10 files changed, 234 deletions(-) delete mode 100644 src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedTagJpaEntity.java delete mode 100644 src/main/java/konkuk/thip/feed/adapter/out/jpa/TagJpaEntity.java delete mode 100644 src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedTag/FeedTagJpaRepository.java delete mode 100644 src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/Tag/TagJpaRepository.java delete mode 100644 src/main/java/konkuk/thip/room/adapter/out/jpa/CategoryJpaEntity.java delete mode 100644 src/main/java/konkuk/thip/room/adapter/out/persistence/repository/category/CategoryJpaRepository.java delete mode 100644 src/main/java/konkuk/thip/user/adapter/out/jpa/AliasJpaEntity.java delete mode 100644 src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasJpaRepository.java delete mode 100644 src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepository.java delete mode 100644 src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepositoryImpl.java diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedTagJpaEntity.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedTagJpaEntity.java deleted file mode 100644 index 3f7f27d38..000000000 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedTagJpaEntity.java +++ /dev/null @@ -1,26 +0,0 @@ -package konkuk.thip.feed.adapter.out.jpa; - -import jakarta.persistence.*; -import konkuk.thip.common.entity.BaseJpaEntity; -import lombok.*; - -@Entity -@Table(name = "feed_tags") -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -public class FeedTagJpaEntity extends BaseJpaEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long feedTagId; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "post_id", nullable = false) - private FeedJpaEntity feedJpaEntity; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "tag_id", nullable = false) - private TagJpaEntity tagJpaEntity; -} diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/TagJpaEntity.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/TagJpaEntity.java deleted file mode 100644 index 23c4ed2a5..000000000 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/TagJpaEntity.java +++ /dev/null @@ -1,27 +0,0 @@ -package konkuk.thip.feed.adapter.out.jpa; - -import jakarta.persistence.*; -import konkuk.thip.common.entity.BaseJpaEntity; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; -import lombok.*; - -@Entity -@Table(name = "tags") -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -public class TagJpaEntity extends BaseJpaEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "tag_id") - private Long tagId; - - @Column(name = "tag_value",length = 50, nullable = false) - private String value; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "category_id", nullable = false) - private CategoryJpaEntity categoryJpaEntity; -} \ No newline at end of file diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedTag/FeedTagJpaRepository.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedTag/FeedTagJpaRepository.java deleted file mode 100644 index 84f860857..000000000 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedTag/FeedTagJpaRepository.java +++ /dev/null @@ -1,24 +0,0 @@ -package konkuk.thip.feed.adapter.out.persistence.repository.FeedTag; - -import konkuk.thip.feed.adapter.out.jpa.FeedTagJpaEntity; -import konkuk.thip.feed.application.port.out.dto.FeedIdAndTagProjection; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; - -public interface FeedTagJpaRepository extends JpaRepository{ - - @Query(""" - SELECT ft.feedJpaEntity.postId as feedId, ft.tagJpaEntity as tagJpaEntity - FROM FeedTagJpaEntity ft - WHERE ft.feedJpaEntity.postId IN :feedIds - """) - List findFeedIdAndTagsByFeedIds(@Param("feedIds") List feedIds); - - @Modifying(clearAutomatically = true, flushAutomatically = true) - @Query("DELETE FROM FeedTagJpaEntity ft WHERE ft.feedJpaEntity.postId = :feedId") - void deleteAllByFeedId(@Param("feedId") Long feedId); -} diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/Tag/TagJpaRepository.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/Tag/TagJpaRepository.java deleted file mode 100644 index 176244ecd..000000000 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/Tag/TagJpaRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package konkuk.thip.feed.adapter.out.persistence.repository.Tag; - -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.List; -import java.util.Optional; - -public interface TagJpaRepository extends JpaRepository{ - Optional findByValue(String value); - - @Query("SELECT ft.tagJpaEntity FROM FeedTagJpaEntity ft WHERE ft.feedJpaEntity.postId = :feedId") - List findAllByFeedId(@Param("feedId") Long feedId); - -} diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/CategoryJpaEntity.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/CategoryJpaEntity.java deleted file mode 100644 index f072818ce..000000000 --- a/src/main/java/konkuk/thip/room/adapter/out/jpa/CategoryJpaEntity.java +++ /dev/null @@ -1,32 +0,0 @@ -package konkuk.thip.room.adapter.out.jpa; - -import jakarta.persistence.*; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; -import konkuk.thip.common.entity.BaseJpaEntity; -import lombok.*; - - -@Entity -@Table(name = "categories") -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -public class CategoryJpaEntity extends BaseJpaEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "category_id") - private Long categoryId; - - @Column(name = "category_value",length = 50, nullable = false) - private String value; - - @Column(name = "image_url", columnDefinition = "TEXT", nullable = false) - private String imageUrl; - - @OneToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "category_alias_id", nullable = false) - private AliasJpaEntity aliasForCategoryJpaEntity; - -} diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/category/CategoryJpaRepository.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/category/CategoryJpaRepository.java deleted file mode 100644 index 5ca91f84e..000000000 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/category/CategoryJpaRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package konkuk.thip.room.adapter.out.persistence.repository.category; - -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - -import java.util.Optional; - -public interface CategoryJpaRepository extends JpaRepository { - - Optional findByValue(String value); - - // TODO : 리펙토링 대상 - @Query("select a.color " + - "from CategoryJpaEntity c join c.aliasForCategoryJpaEntity a " + - "where c.value = :categoryValue") - Optional findAliasColorByValue(@Param("categoryValue") String categoryValue); -} diff --git a/src/main/java/konkuk/thip/user/adapter/out/jpa/AliasJpaEntity.java b/src/main/java/konkuk/thip/user/adapter/out/jpa/AliasJpaEntity.java deleted file mode 100644 index a5e885417..000000000 --- a/src/main/java/konkuk/thip/user/adapter/out/jpa/AliasJpaEntity.java +++ /dev/null @@ -1,29 +0,0 @@ -package konkuk.thip.user.adapter.out.jpa; - -import jakarta.persistence.*; -import konkuk.thip.common.entity.BaseJpaEntity; -import lombok.*; - - -@Entity -@Table(name = "aliases") -@Getter -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Builder -public class AliasJpaEntity extends BaseJpaEntity { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "alias_id") - private Long aliasId; - - @Column(name = "alias_value", length = 50, nullable = false) - private String value; - - @Column(name = "image_url", columnDefinition = "TEXT", nullable = false) - private String imageUrl; - - @Column(name = "alias_color", length = 10, nullable = false) - private String color; -} diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasJpaRepository.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasJpaRepository.java deleted file mode 100644 index 96829e2f8..000000000 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasJpaRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package konkuk.thip.user.adapter.out.persistence.repository.alias; - -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; -import org.springframework.data.jpa.repository.JpaRepository; - -import java.util.Optional; - -public interface AliasJpaRepository extends JpaRepository, AliasQueryRepository { - - Optional findByValue(String value); -} \ No newline at end of file diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepository.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepository.java deleted file mode 100644 index d0518fa08..000000000 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package konkuk.thip.user.adapter.out.persistence.repository.alias; - -import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; - -public interface AliasQueryRepository { - - UserViewAliasChoiceResult getAllAliasesAndCategories(); -} diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepositoryImpl.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepositoryImpl.java deleted file mode 100644 index aa1629f75..000000000 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/alias/AliasQueryRepositoryImpl.java +++ /dev/null @@ -1,41 +0,0 @@ -package konkuk.thip.user.adapter.out.persistence.repository.alias; - -import com.querydsl.core.types.Projections; -import com.querydsl.jpa.impl.JPAQueryFactory; -import konkuk.thip.room.adapter.out.jpa.QCategoryJpaEntity; -import konkuk.thip.user.adapter.out.jpa.QAliasJpaEntity; -import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -@RequiredArgsConstructor -public class AliasQueryRepositoryImpl implements AliasQueryRepository { - - private final JPAQueryFactory jpaQueryFactory; - - @Override - public UserViewAliasChoiceResult getAllAliasesAndCategories() { - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; - QCategoryJpaEntity category = QCategoryJpaEntity.categoryJpaEntity; - - List aliasChoices = jpaQueryFactory - .select(Projections.constructor( - UserViewAliasChoiceResult.AliasChoice.class, - // TODO : DB에 String alias 만 저장하도록 바뀐다면 쿼리 수정해야함 - alias.value, - category.value, - alias.imageUrl, - alias.color - )) - .from(alias) - .leftJoin(category) - .on(category.aliasForCategoryJpaEntity.eq(alias)) - .orderBy(alias.aliasId.asc()) - .fetch(); - - return new UserViewAliasChoiceResult(aliasChoices); - } -} From 3197a545b824c1eabb95537031bc8891ab816d96 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Tue, 19 Aug 2025 15:36:46 +0900 Subject: [PATCH 02/45] =?UTF-8?q?[refactor]=20=EB=B0=94=EB=80=90=20jpa=20e?= =?UTF-8?q?ntity=20=EA=B5=AC=EC=A1=B0=EC=97=90=20=EB=A7=9E=EC=B6=B0=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=EB=8D=95=EC=85=98=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=A4=91=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommentQueryRepositoryImpl.java | 2 -- .../port/out/dto/CommentQueryDto.java | 27 ++++++++++++++----- .../feed/adapter/out/jpa/FeedJpaEntity.java | 12 ++++++--- .../feed/adapter/out/mapper/FeedMapper.java | 10 +++---- .../FeedCommandPersistenceAdapter.java | 9 +------ .../repository/FeedQueryRepositoryImpl.java | 4 +-- .../port/out/dto/FeedIdAndTagProjection.java | 2 -- .../java/konkuk/thip/feed/domain/Feed.java | 10 ++++--- .../room/adapter/out/jpa/RoomJpaEntity.java | 7 ++--- .../room/adapter/out/mapper/RoomMapper.java | 8 +++--- .../RoomCommandPersistenceAdapter.java | 9 +------ .../RoomQueryPersistenceAdapter.java | 10 +++---- .../repository/RoomQueryRepository.java | 5 ++-- .../repository/RoomQueryRepositoryImpl.java | 13 +++++---- .../AttendanceCheckQueryRepositoryImpl.java | 5 +--- .../port/out/dto/AttendanceCheckQueryDto.java | 17 +++++++++++- .../user/adapter/out/jpa/UserJpaEntity.java | 11 ++++---- .../user/adapter/out/mapper/UserMapper.java | 8 +++--- .../UserCommandPersistenceAdapter.java | 8 +----- .../UserQueryPersistenceAdapter.java | 2 -- 20 files changed, 90 insertions(+), 89 deletions(-) diff --git a/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java b/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java index e0029ec58..5b3c80bdb 100644 --- a/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java @@ -7,7 +7,6 @@ import konkuk.thip.comment.application.port.out.dto.CommentQueryDto; import konkuk.thip.comment.application.port.out.dto.QCommentQueryDto; import konkuk.thip.common.entity.StatusType; -import konkuk.thip.user.adapter.out.jpa.QAliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.QUserJpaEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -24,7 +23,6 @@ public class CommentQueryRepositoryImpl implements CommentQueryRepository { private final QCommentJpaEntity comment = QCommentJpaEntity.commentJpaEntity; private final QUserJpaEntity commentCreator = QUserJpaEntity.userJpaEntity; - private final QAliasJpaEntity aliasOfCommentCreator = QAliasJpaEntity.aliasJpaEntity; private final QCommentJpaEntity parentComment = new QCommentJpaEntity("parentComment"); private final QUserJpaEntity parentCommentCreator = new QUserJpaEntity("parentCommentCreator"); diff --git a/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java b/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java index 05475f02a..d8e2ab260 100644 --- a/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java +++ b/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java @@ -2,6 +2,7 @@ import com.querydsl.core.annotations.QueryProjection; import jakarta.annotation.Nullable; +import konkuk.thip.user.domain.Alias; import java.time.LocalDateTime; @@ -23,7 +24,22 @@ public record CommentQueryDto( * child comment */ @QueryProjection - public CommentQueryDto {} + public CommentQueryDto ( + Long commentId, + Long parentCommentId, + String parentCommentCreatorNickname, + Long creatorId, + Alias creatorAlias, + String creatorNickname, + LocalDateTime createdAt, // 댓글 작성 시각 + String content, + int likeCount, + Boolean isDeleted + ) { + this(commentId, parentCommentId, parentCommentCreatorNickname, creatorId, creatorAlias.getImageUrl(), + creatorNickname, creatorAlias.getValue(), creatorAlias.getColor(), + createdAt, content, likeCount, isDeleted); + } /** * root comment @@ -32,16 +48,15 @@ public record CommentQueryDto( public CommentQueryDto ( Long commentId, Long creatorId, - String creatorProfileImageUrl, + Alias creatorAlias, String creatorNickname, - String alias, - String aliasColor, LocalDateTime createdAt, // 댓글 작성 시각 String content, int likeCount, boolean isDeleted ) { - this(commentId, null, null, creatorId, creatorProfileImageUrl, creatorNickname, - alias, aliasColor, createdAt, content, likeCount, isDeleted); + this(commentId, null, null, creatorId, creatorAlias.getImageUrl(), + creatorNickname, creatorAlias.getValue(), creatorAlias.getColor(), + createdAt, content, likeCount, isDeleted); } } diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java index 95d223fe5..cbf7e1d64 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java @@ -4,7 +4,10 @@ import com.google.common.annotations.VisibleForTesting; import jakarta.persistence.*; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; +import konkuk.thip.feed.adapter.out.jpa.converter.TagListJsonConverter; import konkuk.thip.feed.domain.Feed; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.post.adapter.out.jpa.PostJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import lombok.AccessLevel; @@ -39,17 +42,18 @@ public class FeedJpaEntity extends PostJpaEntity { @OneToMany(mappedBy = "feedJpaEntity", cascade = CascadeType.REMOVE, orphanRemoval = true) private List savedFeeds = new ArrayList<>(); - // 삭제용 피드 태그 양방향 매핑 관계 - @OneToMany(mappedBy = "feedJpaEntity", cascade = CascadeType.REMOVE, orphanRemoval = true) - private List feedTags = new ArrayList<>(); + @Column(name = "tag_list", columnDefinition = "TEXT") + @Convert(converter = TagListJsonConverter.class) + private TagList tagList = TagList.of(List.of()); @Builder - public FeedJpaEntity(String content, Integer likeCount, Integer commentCount, UserJpaEntity userJpaEntity, Boolean isPublic, int reportCount, BookJpaEntity bookJpaEntity, List contentList) { + public FeedJpaEntity(String content, Integer likeCount, Integer commentCount, UserJpaEntity userJpaEntity, Boolean isPublic, int reportCount, BookJpaEntity bookJpaEntity, List contentList, TagList tagList) { super(content, likeCount, commentCount, userJpaEntity); this.isPublic = isPublic; this.reportCount = reportCount; this.bookJpaEntity = bookJpaEntity; this.contentList = contentList; + this.tagList = tagList != null ? tagList : TagList.of(List.of()); } public void updateFrom(Feed feed) { diff --git a/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java b/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java index 15581ae27..d6af2b701 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java @@ -2,9 +2,9 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; import konkuk.thip.feed.domain.Feed; import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -28,10 +28,11 @@ public FeedJpaEntity toJpaEntity(Feed feed, UserJpaEntity userJpaEntity, BookJpa .commentCount(feed.getCommentCount()) .bookJpaEntity(bookJpaEntity) .contentList(new ArrayList<>()) + .tagList(feed.getTagList()) .build(); } - public Feed toDomainEntity(FeedJpaEntity feedJpaEntity, List tagJpaEntityList) { + public Feed toDomainEntity(FeedJpaEntity feedJpaEntity) { return Feed.builder() .id(feedJpaEntity.getPostId()) .content(feedJpaEntity.getContent()) @@ -41,10 +42,7 @@ public Feed toDomainEntity(FeedJpaEntity feedJpaEntity, List tagJp .likeCount(feedJpaEntity.getLikeCount()) .commentCount(feedJpaEntity.getCommentCount()) .targetBookId(feedJpaEntity.getBookJpaEntity().getBookId()) - .tagList(tagJpaEntityList.stream() - .map(TagJpaEntity::getValue) - .map(Tag::from) - .toList()) + .tagList(feedJpaEntity.getTagList()) .contentList(feedJpaEntity.getContentList().stream() .map(contentMapper::toDomainEntity) .toList()) diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java index 4d328d2b8..c0c7c550e 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java @@ -8,9 +8,7 @@ import konkuk.thip.feed.adapter.out.mapper.FeedMapper; import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.domain.Feed; import konkuk.thip.feed.domain.Tag; @@ -32,8 +30,6 @@ public class FeedCommandPersistenceAdapter implements FeedCommandPort { private final FeedJpaRepository feedJpaRepository; private final UserJpaRepository userJpaRepository; private final BookJpaRepository bookJpaRepository; - private final TagJpaRepository tagJpaRepository; - private final FeedTagJpaRepository feedTagJpaRepository; private final ContentJpaRepository contentJpaRepository; private final SavedFeedJpaRepository savedFeedJpaRepository; @@ -44,10 +40,7 @@ public class FeedCommandPersistenceAdapter implements FeedCommandPort { @Override public Optional findById(Long id) { return feedJpaRepository.findByPostIdAndStatus(id,ACTIVE) - .map(feedJpaEntity -> { - List tagJpaEntityList = tagJpaRepository.findAllByFeedId(feedJpaEntity.getPostId()); - return feedMapper.toDomainEntity(feedJpaEntity, tagJpaEntityList); - }); + .map(feedMapper::toDomainEntity); } diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java index 74467d4d7..6645e31d9 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java @@ -269,8 +269,8 @@ private FeedQueryDto toDto(FeedJpaEntity e, Integer priority) { .feedId(e.getPostId()) .creatorId(e.getUserJpaEntity().getUserId()) .creatorNickname(e.getUserJpaEntity().getNickname()) - .creatorProfileImageUrl(e.getUserJpaEntity().getAliasForUserJpaEntity().getImageUrl()) // TODO : DB에 String alias 만 저장하면 수정해야함 - .alias(e.getUserJpaEntity().getAliasForUserJpaEntity().getValue()) + .creatorProfileImageUrl(e.getUserJpaEntity().getAlias().getImageUrl()) // TODO : DB에 String alias 만 저장하면 수정해야함 -> 오 이거 그냥 이렇게 하면 되네?? + .alias(e.getUserJpaEntity().getAlias().getValue()) .createdAt(e.getCreatedAt()) .isbn(e.getBookJpaEntity().getIsbn()) .bookTitle(e.getBookJpaEntity().getTitle()) diff --git a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java index b4de5ae3b..f4d1fc3a8 100644 --- a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java +++ b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java @@ -1,7 +1,5 @@ package konkuk.thip.feed.application.port.out.dto; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; - public interface FeedIdAndTagProjection { Long getFeedId(); TagJpaEntity getTagJpaEntity(); diff --git a/src/main/java/konkuk/thip/feed/domain/Feed.java b/src/main/java/konkuk/thip/feed/domain/Feed.java index 883c37c3b..9202cd559 100644 --- a/src/main/java/konkuk/thip/feed/domain/Feed.java +++ b/src/main/java/konkuk/thip/feed/domain/Feed.java @@ -40,7 +40,8 @@ public class Feed extends BaseDomainEntity implements CountUpdatable { private Long targetBookId; - private List tagList; + @Builder.Default + private TagList tagList = TagList.empty(); @Builder.Default private List contentList = new ArrayList<>(); @@ -64,6 +65,8 @@ public static Feed withoutId(String content, Long creatorId, Boolean isPublic, L validateTags(tagValues); validateImageCount(imageUrls != null ? imageUrls.size() : 0); + List tags = Tag.fromList(tagValues); + return Feed.builder() .id(null) .content(content) @@ -73,7 +76,7 @@ public static Feed withoutId(String content, Long creatorId, Boolean isPublic, L .likeCount(0) .commentCount(0) .targetBookId(targetBookId) - .tagList(Tag.fromList(tagValues)) + .tagList(TagList.of(tags)) .contentList(convertToContentList(imageUrls)) .build(); } @@ -150,7 +153,8 @@ public void updateVisibility(Long userId, Boolean isPublic) { public void updateTags(Long userId, List newTagValues) { validateCreator(userId); validateTags(newTagValues); - this.tagList = Tag.fromList(newTagValues); // Tag.from(...) 등으로 변환 + List tags = Tag.fromList(newTagValues); + this.tagList = TagList.of(tags); } public void updateImages(Long userId, List newImageUrls) { diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java index 224f10edd..800cfc56f 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java +++ b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java @@ -4,6 +4,7 @@ import jakarta.persistence.*; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.common.entity.BaseJpaEntity; +import konkuk.thip.room.domain.Category; import konkuk.thip.room.domain.Room; import lombok.*; @@ -53,9 +54,9 @@ public class RoomJpaEntity extends BaseJpaEntity { @JoinColumn(name = "book_id", nullable = false) private BookJpaEntity bookJpaEntity; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "category_id", nullable = false) - private CategoryJpaEntity categoryJpaEntity; + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Category category; public RoomJpaEntity updateFrom(Room room) { this.title = room.getTitle(); diff --git a/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java b/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java index 44bd9478d..125ff96b2 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java +++ b/src/main/java/konkuk/thip/room/adapter/out/mapper/RoomMapper.java @@ -1,16 +1,14 @@ package konkuk.thip.room.adapter.out.mapper; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; -import konkuk.thip.room.domain.Category; import konkuk.thip.room.domain.Room; import org.springframework.stereotype.Component; @Component public class RoomMapper { - public RoomJpaEntity toJpaEntity(Room room, BookJpaEntity bookJpaEntity, CategoryJpaEntity categoryJpaEntity) { + public RoomJpaEntity toJpaEntity(Room room, BookJpaEntity bookJpaEntity) { return RoomJpaEntity.builder() .title(room.getTitle()) .description(room.getDescription()) @@ -22,7 +20,7 @@ public RoomJpaEntity toJpaEntity(Room room, BookJpaEntity bookJpaEntity, Categor .recruitCount(room.getRecruitCount()) .memberCount(room.getMemberCount()) .bookJpaEntity(bookJpaEntity) - .categoryJpaEntity(categoryJpaEntity) + .category(room.getCategory()) .build(); } @@ -39,7 +37,7 @@ public Room toDomainEntity(RoomJpaEntity roomJpaEntity) { .recruitCount(roomJpaEntity.getRecruitCount()) .memberCount(roomJpaEntity.getMemberCount()) .bookId(roomJpaEntity.getBookJpaEntity().getBookId()) - .category(Category.from(roomJpaEntity.getCategoryJpaEntity().getValue())) + .category(roomJpaEntity.getCategory()) .createdAt(roomJpaEntity.getCreatedAt()) .modifiedAt(roomJpaEntity.getModifiedAt()) .status(roomJpaEntity.getStatus()) diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomCommandPersistenceAdapter.java index 704195ffb..a9c946643 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomCommandPersistenceAdapter.java @@ -3,11 +3,9 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.exception.EntityNotFoundException; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.mapper.RoomMapper; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.application.port.out.RoomCommandPort; import konkuk.thip.room.domain.Room; import lombok.RequiredArgsConstructor; @@ -23,7 +21,6 @@ public class RoomCommandPersistenceAdapter implements RoomCommandPort { private final RoomJpaRepository roomJpaRepository; private final BookJpaRepository bookJpaRepository; - private final CategoryJpaRepository categoryJpaRepository; private final RoomMapper roomMapper; @@ -47,11 +44,7 @@ public Long save(Room room) { () -> new EntityNotFoundException(BOOK_NOT_FOUND) ); - CategoryJpaEntity categoryJpaEntity = categoryJpaRepository.findByValue(room.getCategory().getValue()).orElseThrow( - () -> new EntityNotFoundException(CATEGORY_NOT_FOUND) - ); - - RoomJpaEntity roomJpaEntity = roomMapper.toJpaEntity(room, bookJpaEntity, categoryJpaEntity); + RoomJpaEntity roomJpaEntity = roomMapper.toJpaEntity(room, bookJpaEntity); return roomJpaRepository.save(roomJpaEntity).getRoomId(); } diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java index c295b7ed4..1a6408649 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java @@ -4,12 +4,12 @@ import konkuk.thip.common.exception.code.ErrorCode; import konkuk.thip.common.util.Cursor; import konkuk.thip.common.util.CursorBasedList; +import konkuk.thip.common.util.EnumMappings; import konkuk.thip.room.adapter.in.web.response.RoomGetHomeJoinedListResponse; import konkuk.thip.room.adapter.in.web.response.RoomRecruitingDetailViewResponse; import konkuk.thip.room.adapter.out.persistence.function.IntegerCursorRoomQueryFunction; import konkuk.thip.room.adapter.out.persistence.function.LocalDateCursorRoomQueryFunction; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.application.port.out.RoomQueryPort; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; import konkuk.thip.room.domain.Category; @@ -27,7 +27,6 @@ public class RoomQueryPersistenceAdapter implements RoomQueryPort { private final RoomJpaRepository roomJpaRepository; - private final CategoryJpaRepository categoryJpaRepository; @Override public int countRecruitingRoomsByBookAndStartDateAfter(String isbn, LocalDate currentDate) { @@ -44,7 +43,7 @@ public CursorBasedList searchRecruitingRoomsByDeadline(String keyw public CursorBasedList searchRecruitingRoomsWithCategoryByDeadline(String keyword, Category category, Cursor cursor) { return findRoomsByDeadlineCursor(cursor, (lastLocalDate, lastId, pageSize) -> roomJpaRepository.findRecruitingRoomsWithCategoryOrderByStartDateAsc( - keyword, category.getValue(), lastLocalDate, lastId, pageSize + keyword, category, lastLocalDate, lastId, pageSize ) ); } @@ -150,11 +149,8 @@ public List findRoomsByCategoryOrderByPopular(Category category, i return roomJpaRepository.findRoomsByCategoryOrderByMemberCount(category.getValue(), limit, userId); } - // TODO : 리펙토링 대상 @Override public String findAliasColorOfCategory(Category category) { - return categoryJpaRepository.findAliasColorByValue(category.getValue()).orElseThrow( - () -> new EntityNotFoundException(ErrorCode.CATEGORY_NOT_FOUND) - ); + return EnumMappings.aliasFrom(category).getColor(); } } diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java index ae5a1be97..b72425d7f 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java @@ -3,6 +3,7 @@ import konkuk.thip.room.adapter.in.web.response.RoomRecruitingDetailViewResponse; import konkuk.thip.room.adapter.in.web.response.RoomGetHomeJoinedListResponse; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; +import konkuk.thip.room.domain.Category; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -16,9 +17,9 @@ public interface RoomQueryRepository { * 방 검색 */ List findRecruitingRoomsOrderByStartDateAsc(String keyword, LocalDate lastStartDate, Long roomId, int pageSize); - List findRecruitingRoomsWithCategoryOrderByStartDateAsc(String keyword, String categoryVal, LocalDate lastStartDate, Long roomId, int pageSize); + List findRecruitingRoomsWithCategoryOrderByStartDateAsc(String keyword, Category category, LocalDate lastStartDate, Long roomId, int pageSize); List findRecruitingRoomsOrderByMemberCountDesc(String keyword, Integer lastMemberCount, Long roomId, int pageSize); - List findRecruitingRoomsWithCategoryOrderByMemberCountDesc(String keyword, String categoryVal, Integer lastMemberCount, Long roomId, int pageSize); + List findRecruitingRoomsWithCategoryOrderByMemberCountDesc(String keyword, Category category, Integer lastMemberCount, Long roomId, int pageSize); List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, String category, int count); diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java index 24cf4b3c7..5706778f5 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java @@ -14,11 +14,11 @@ import konkuk.thip.common.util.DateUtil; import konkuk.thip.room.adapter.in.web.response.RoomGetHomeJoinedListResponse; import konkuk.thip.room.adapter.in.web.response.RoomRecruitingDetailViewResponse; -import konkuk.thip.room.adapter.out.jpa.QCategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.QRoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.QRoomParticipantJpaEntity; import konkuk.thip.room.application.port.out.dto.QRoomQueryDto; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; +import konkuk.thip.room.domain.Category; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -37,7 +37,6 @@ public class RoomQueryRepositoryImpl implements RoomQueryRepository { private final QRoomJpaEntity room = QRoomJpaEntity.roomJpaEntity; private final QBookJpaEntity book = QBookJpaEntity.bookJpaEntity; private final QRoomParticipantJpaEntity participant = QRoomParticipantJpaEntity.roomParticipantJpaEntity; - private final QCategoryJpaEntity category = QCategoryJpaEntity.categoryJpaEntity; /** 모집중 + ACTIVE 공통 where */ private BooleanBuilder recruitingActiveWhere(LocalDate today) { @@ -48,9 +47,9 @@ private BooleanBuilder recruitingActiveWhere(LocalDate today) { } /** 카테고리 조건 추가 */ - private void applyCategory(BooleanBuilder where, String categoryVal) { - if (categoryVal != null && !categoryVal.isBlank()) { - where.and(room.categoryJpaEntity.value.eq(categoryVal)); + private void applyCategory(BooleanBuilder where, Category category) { + if (category != null) { + where.and(room.category.eq(category)); } } @@ -115,7 +114,7 @@ public List findRecruitingRoomsOrderByStartDateAsc(String keyword, } @Override - public List findRecruitingRoomsWithCategoryOrderByStartDateAsc(String keyword, String categoryVal, LocalDate lastStartDate, Long roomId, int pageSize) { + public List findRecruitingRoomsWithCategoryOrderByStartDateAsc(String keyword, Category category, LocalDate lastStartDate, Long roomId, int pageSize) { final LocalDate today = LocalDate.now(); DateExpression cursorExpr = room.startDate; @@ -154,7 +153,7 @@ public List findRecruitingRoomsOrderByMemberCountDesc(String keywo } @Override - public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc(String keyword, String categoryVal, Integer lastMemberCount, Long roomId, int pageSize) { + public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc(String keyword, Category category, Integer lastMemberCount, Long roomId, int pageSize) { final LocalDate today = LocalDate.now(); BooleanBuilder where = recruitingActiveWhere(today); diff --git a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/attendancecheck/AttendanceCheckQueryRepositoryImpl.java b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/attendancecheck/AttendanceCheckQueryRepositoryImpl.java index 393d3568c..d32a5dbc2 100644 --- a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/attendancecheck/AttendanceCheckQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/attendancecheck/AttendanceCheckQueryRepositoryImpl.java @@ -5,7 +5,6 @@ import konkuk.thip.roompost.adapter.out.jpa.QAttendanceCheckJpaEntity; import konkuk.thip.roompost.application.port.out.dto.AttendanceCheckQueryDto; import konkuk.thip.roompost.application.port.out.dto.QAttendanceCheckQueryDto; -import konkuk.thip.user.adapter.out.jpa.QAliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.QUserJpaEntity; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -23,7 +22,6 @@ public class AttendanceCheckQueryRepositoryImpl implements AttendanceCheckQueryR public List findAttendanceChecksByCreatedAtDesc(Long roomId, LocalDateTime lastCreatedAt, int size) { QAttendanceCheckJpaEntity attendanceCheck = QAttendanceCheckJpaEntity.attendanceCheckJpaEntity; QUserJpaEntity user = QUserJpaEntity.userJpaEntity; - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; BooleanExpression roomPredicate = attendanceCheck.roomJpaEntity.roomId.eq(roomId); BooleanExpression cursorPredicate = (lastCreatedAt == null) ? null : attendanceCheck.createdAt.lt(lastCreatedAt); @@ -33,13 +31,12 @@ public List findAttendanceChecksByCreatedAtDesc(Long ro attendanceCheck.attendanceCheckId, user.userId, user.nickname, - alias.imageUrl, + user.alias, attendanceCheck.todayComment, attendanceCheck.createdAt )) .from(attendanceCheck) .join(attendanceCheck.userJpaEntity, user) - .join(user.aliasForUserJpaEntity, alias) .where(roomPredicate, cursorPredicate) .orderBy( attendanceCheck.createdAt.desc() diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java index fe7176d44..cd76e642b 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java @@ -1,6 +1,7 @@ package konkuk.thip.roompost.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; +import konkuk.thip.user.domain.Alias; import java.time.LocalDateTime; @@ -13,5 +14,19 @@ public record AttendanceCheckQueryDto( LocalDateTime createdAt ) { @QueryProjection - public AttendanceCheckQueryDto {} + public AttendanceCheckQueryDto ( + Long attendanceCheckId, + Long creatorId, + String creatorNickname, + Alias alias, + String todayComment, + LocalDateTime createdAt + ) { + this.attendanceCheckId = attendanceCheckId; + this.creatorId = creatorId; + this.creatorNickname = creatorNickname; + this.creatorProfileImageUrl = alias.getImageUrl(); + this.todayComment = todayComment; + this.createdAt = createdAt; + } } diff --git a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java index 02e1c3621..f07dd726f 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java +++ b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java @@ -3,6 +3,7 @@ import jakarta.persistence.*; import konkuk.thip.common.entity.BaseJpaEntity; +import konkuk.thip.user.domain.Alias; import konkuk.thip.user.domain.User; import lombok.*; @@ -37,16 +38,16 @@ public class UserJpaEntity extends BaseJpaEntity { @Column(nullable = false) private UserRole role; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "user_alias_id", nullable = false) - private AliasJpaEntity aliasForUserJpaEntity; + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private Alias alias; - public void updateIncludeAliasFrom(User user, AliasJpaEntity aliasJpaEntity) { + public void updateIncludeAliasFrom(User user, Alias alias) { this.nickname = user.getNickname(); this.nicknameUpdatedAt = user.getNicknameUpdatedAt(); this.role = UserRole.from(user.getUserRole()); this.followerCount = user.getFollowerCount(); - this.aliasForUserJpaEntity = aliasJpaEntity; + this.alias = alias; } public void updateFrom(User user) { diff --git a/src/main/java/konkuk/thip/user/adapter/out/mapper/UserMapper.java b/src/main/java/konkuk/thip/user/adapter/out/mapper/UserMapper.java index e1df025e5..0eaeacf67 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/mapper/UserMapper.java +++ b/src/main/java/konkuk/thip/user/adapter/out/mapper/UserMapper.java @@ -1,23 +1,21 @@ package konkuk.thip.user.adapter.out.mapper; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; -import konkuk.thip.user.domain.Alias; import konkuk.thip.user.domain.User; import org.springframework.stereotype.Component; @Component public class UserMapper { - public UserJpaEntity toJpaEntity(User user, AliasJpaEntity aliasJpaEntity) { + public UserJpaEntity toJpaEntity(User user) { return UserJpaEntity.builder() .nickname(user.getNickname()) .nicknameUpdatedAt(user.getNicknameUpdatedAt()) .role(UserRole.from(user.getUserRole())) .oauth2Id(user.getOauth2Id()) .followerCount(user.getFollowerCount()) - .aliasForUserJpaEntity(aliasJpaEntity) + .alias(user.getAlias()) .build(); } @@ -29,7 +27,7 @@ public User toDomainEntity(UserJpaEntity userJpaEntity) { .userRole(userJpaEntity.getRole().getType()) .oauth2Id(userJpaEntity.getOauth2Id()) .followerCount(userJpaEntity.getFollowerCount()) - .alias(Alias.from(userJpaEntity.getAliasForUserJpaEntity().getValue())) + .alias(userJpaEntity.getAlias()) .createdAt(userJpaEntity.getCreatedAt()) .modifiedAt(userJpaEntity.getModifiedAt()) .status(userJpaEntity.getStatus()) diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java index dd73bf0dd..018e3ec16 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java @@ -1,10 +1,8 @@ package konkuk.thip.user.adapter.out.persistence; import konkuk.thip.common.exception.EntityNotFoundException; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.mapper.UserMapper; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.application.port.out.UserCommandPort; import konkuk.thip.user.domain.User; @@ -24,16 +22,12 @@ public class UserCommandPersistenceAdapter implements UserCommandPort { private final UserJpaRepository userJpaRepository; - private final AliasJpaRepository aliasJpaRepository; private final UserMapper userMapper; @Override public Long save(User user) { - AliasJpaEntity aliasJpaEntity = aliasJpaRepository.findByValue(user.getAlias().getValue()).orElseThrow( - () -> new EntityNotFoundException(ALIAS_NOT_FOUND)); - - UserJpaEntity userJpaEntity = userMapper.toJpaEntity(user, aliasJpaEntity); + UserJpaEntity userJpaEntity = userMapper.toJpaEntity(user); return userJpaRepository.save(userJpaEntity).getUserId(); } diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java index e463f3b04..ef7a38346 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java @@ -5,7 +5,6 @@ import konkuk.thip.user.adapter.out.persistence.function.ReactionQueryFunction; import konkuk.thip.user.application.port.out.dto.ReactionQueryDto; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; import konkuk.thip.user.application.port.out.UserQueryPort; import konkuk.thip.user.application.port.out.dto.UserQueryDto; @@ -21,7 +20,6 @@ public class UserQueryPersistenceAdapter implements UserQueryPort { private final UserJpaRepository userJpaRepository; - private final AliasJpaRepository aliasJpaRepository; @Override public boolean existsByNickname(String nickname) { From 7a7d0d96f7374ef5541758ffd0639112e35f53fb Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Tue, 19 Aug 2025 15:37:18 +0900 Subject: [PATCH 03/45] =?UTF-8?q?[refactor]=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=A4=91=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/BookChangeSavedApiTest.java | 1 - .../in/web/BookDetailSearchApiTest.java | 2 - .../in/web/BookGetSelectableListApiTest.java | 2 - .../in/web/BookMostSearchedBooksApiTest.java | 1 - .../in/web/BookRecruitingRoomApiTest.java | 2 - .../adapter/in/web/BookSearchApiTest.java | 1 - .../in/web/BookShowSavedListApiTest.java | 1 - .../web/CommentChangeLikeStatusApiTest.java | 2 - .../adapter/in/web/CommentCreateApiTest.java | 2 - .../in/web/CommentCreateControllerTest.java | 2 - .../adapter/in/web/CommentDeleteApiTest.java | 2 - .../adapter/in/web/CommentShowAllApiTest.java | 1 - .../thip/common/util/TestEntityFactory.java | 70 +++++-------------- .../in/web/BasicFeedShowAllApiTest.java | 1 - .../in/web/FeedChangeLikeStatusApiTest.java | 1 - .../in/web/FeedChangeSavedApiTest.java | 8 +-- .../adapter/in/web/FeedCreateApiTest.java | 8 +-- .../adapter/in/web/FeedDeleteApiTest.java | 7 +- .../in/web/FeedRelatedWithBookApiTest.java | 2 - .../adapter/in/web/FeedShowMineApiTest.java | 1 - .../in/web/FeedShowSavedListApiTest.java | 3 - .../adapter/in/web/FeedShowSingleApiTest.java | 15 ++-- .../in/web/FeedShowSpecificUserApiTest.java | 1 - .../in/web/FeedShowUserInfoApiTest.java | 1 - .../in/web/FeedShowWriteInfoApiTest.java | 14 ++-- .../adapter/in/web/FeedUpdateApiTest.java | 10 +-- .../in/web/FeedUpdateControllerTest.java | 8 +-- .../FollowingPriorityFeedShowAllApiTest.java | 1 - .../adapter/out/jpa/FeedJpaEntityTest.java | 1 - .../in/web/RecentSearchDeleteApiTest.java | 1 - .../in/web/RecentSearchGetApiTest.java | 1 - .../adapter/in/web/RoomCloseJoinApiTest.java | 32 ++++----- .../adapter/in/web/RoomCreateApiTest.java | 2 - .../in/web/RoomGetDeadlinePopularApiTest.java | 2 - .../in/web/RoomGetHomeJoinedRoomsApiTest.java | 1 - .../in/web/RoomGetMemberListApiTest.java | 2 - .../room/adapter/in/web/RoomJoinApiTest.java | 2 - .../in/web/RoomPlayingDetailViewApiTest.java | 2 - .../web/RoomPostChangeLikeStatusApiTest.java | 2 - ...oomPostChangeLikeStatusControllerTest.java | 2 - .../web/RoomRecruitingDetailViewApiTest.java | 1 - .../adapter/in/web/RoomSearchApiTest.java | 1 - .../adapter/in/web/RoomShowMineApiTest.java | 3 - .../in/web/RoomVerifyPasswordApiTest.java | 2 - .../adapter/out/jpa/RoomJpaEntityTest.java | 1 - .../in/web/AttendanceCheckCreateApiTest.java | 2 - .../in/web/AttendanceCheckShowApiTest.java | 2 - .../in/web/RecordCreateControllerTest.java | 2 - .../adapter/in/web/RecordDeleteApiTest.java | 2 - .../adapter/in/web/RecordPinApiTest.java | 2 - .../adapter/in/web/RoomPostSearchApiTest.java | 2 - .../roompost/adapter/in/web/VoteApiTest.java | 2 - .../adapter/in/web/VoteCreateApiTest.java | 2 - .../adapter/in/web/VoteDeleteApiTest.java | 2 - .../adapter/out/jpa/RecordJpaEntityTest.java | 2 - .../adapter/out/jpa/VoteJpaEntityTest.java | 2 - .../service/VoteCreateServiceTest.java | 2 - .../adapter/in/web/UserFollowApiTest.java | 1 - .../in/web/UserGetFollowersApiTest.java | 1 - .../in/web/UserGetFollowingApiTest.java | 1 - .../in/web/UserIsFollowingApiTest.java | 1 - .../adapter/in/web/UserReactionApiTest.java | 2 - .../adapter/in/web/UserSearchApiTest.java | 1 - .../UserShowFollowingsInFeedViewApiTest.java | 1 - .../in/web/UserSignupControllerTest.java | 1 - .../adapter/in/web/UserUpdateApiTest.java | 1 - .../web/UserVerifyNicknameControllerTest.java | 1 - .../UserViewAliasChoiceControllerTest.java | 2 - 68 files changed, 57 insertions(+), 208 deletions(-) diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java index c8db670b7..81510ee01 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java @@ -9,7 +9,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.book.adapter.out.jpa.SavedBookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java index 34ddce6e4..d641ab945 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java @@ -6,7 +6,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; @@ -15,7 +14,6 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.book.adapter.out.jpa.SavedBookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java index 5bdd6f766..97d328091 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java @@ -4,13 +4,11 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java index a09d7fbe7..f2c84fddb 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.book.application.port.in.dto.BookMostSearchResult; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java index 00154c844..863f9798f 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java @@ -5,11 +5,9 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java index a1b1f13ba..d30d1631b 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java @@ -6,7 +6,6 @@ import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchType; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java index d19521bbf..e67760a15 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java index 6b3944001..5aa519e4b 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java @@ -12,11 +12,9 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java index 49d1dcd48..9d9eb4186 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java @@ -7,7 +7,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; @@ -17,7 +16,6 @@ import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java index 2288bb545..e2414ca91 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java @@ -9,13 +9,11 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java index bf6950c50..401362bdd 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java @@ -10,13 +10,11 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java index c2a8e42e2..e6d930e85 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java @@ -10,7 +10,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java index 973a19faf..d57b0afcd 100644 --- a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java +++ b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java @@ -7,15 +7,12 @@ import konkuk.thip.post.domain.PostType; import konkuk.thip.feed.adapter.out.jpa.ContentJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.FeedTagJpaEntity; import konkuk.thip.post.adapter.out.jpa.PostJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.*; import konkuk.thip.room.adapter.out.jpa.*; import konkuk.thip.room.domain.Category; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; @@ -32,54 +29,38 @@ public class TestEntityFactory { * 유효한 Jpa entity를 만들어주는 Factory */ - public static AliasJpaEntity createLiteratureAlias() { - return AliasJpaEntity.builder() // 실제 존재하는 값으로 - .value(Alias.WRITER.getValue()) - .imageUrl(Alias.WRITER.getImageUrl()) - .color(Alias.WRITER.getColor()) - .build(); + public static Alias createLiteratureAlias() { + return Alias.WRITER; } - public static CategoryJpaEntity createLiteratureCategory(AliasJpaEntity alias) { - return CategoryJpaEntity.builder() // 실제 존재하는 값으로 - .value(Category.LITERATURE.getValue()) - .imageUrl(Category.LITERATURE.getImageUrl()) - .aliasForCategoryJpaEntity(alias) - .build(); + public static Category createLiteratureCategory() { + return Category.LITERATURE; } - public static AliasJpaEntity createScienceAlias() { - return AliasJpaEntity.builder() // 실제 존재하는 값으로 - .value(Alias.SCIENTIST.getValue()) - .imageUrl(Alias.SCIENTIST.getImageUrl()) - .color(Alias.SCIENTIST.getColor()) - .build(); + public static Alias createScienceAlias() { + return Alias.SCIENTIST; } - public static CategoryJpaEntity createScienceCategory(AliasJpaEntity alias) { - return CategoryJpaEntity.builder() // 실제 존재하는 값으로 - .value(Category.SCIENCE_IT.getValue()) - .imageUrl(Category.SCIENCE_IT.getImageUrl()) - .aliasForCategoryJpaEntity(alias) - .build(); + public static Category createScienceCategory() { + return Category.SCIENCE_IT; } - public static UserJpaEntity createUser(AliasJpaEntity alias) { + public static UserJpaEntity createUser(Alias alias) { return UserJpaEntity.builder() .nickname("테스터") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .build(); } - public static UserJpaEntity createUser(AliasJpaEntity alias, String nickname) { + public static UserJpaEntity createUser(Alias alias, String nickname) { return UserJpaEntity.builder() .nickname(nickname) .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .build(); } @@ -139,7 +120,7 @@ public static BookJpaEntity createBookWithISBN(String isbn) { .build(); } - public static RoomJpaEntity createRoom(BookJpaEntity book, CategoryJpaEntity category) { + public static RoomJpaEntity createRoom(BookJpaEntity book, Category category) { return RoomJpaEntity.builder() .title("방이름") .description("설명") @@ -148,11 +129,11 @@ public static RoomJpaEntity createRoom(BookJpaEntity book, CategoryJpaEntity cat .endDate(LocalDate.now().plusDays(5)) .recruitCount(3) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build(); } - public static RoomJpaEntity createCustomRoom(BookJpaEntity book, CategoryJpaEntity category, LocalDate startDate, LocalDate endDate) { + public static RoomJpaEntity createCustomRoom(BookJpaEntity book, Category category, LocalDate startDate, LocalDate endDate) { return RoomJpaEntity.builder() .title("방이름") .description("설명") @@ -161,11 +142,11 @@ public static RoomJpaEntity createCustomRoom(BookJpaEntity book, CategoryJpaEnti .endDate(endDate) .recruitCount(3) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build(); } - public static RoomJpaEntity createCustomRoom(BookJpaEntity book, CategoryJpaEntity category, String roomName, LocalDate startDate, LocalDate endDate) { + public static RoomJpaEntity createCustomRoom(BookJpaEntity book, Category category, String roomName, LocalDate startDate, LocalDate endDate) { return RoomJpaEntity.builder() .title(roomName) .description("설명") @@ -174,7 +155,7 @@ public static RoomJpaEntity createCustomRoom(BookJpaEntity book, CategoryJpaEnti .endDate(endDate) .recruitCount(20) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build(); } @@ -286,13 +267,6 @@ public static FollowingJpaEntity createFollowing(UserJpaEntity followerUser, Use .build(); } - public static TagJpaEntity createTag(CategoryJpaEntity category,String value) { - return TagJpaEntity.builder() - .categoryJpaEntity(category) - .value(value) - .build(); - } - /** * 공개/비공개 여부만을 설정하는 기본 피드 생성을 위한 팩토리 메서드 */ @@ -310,14 +284,6 @@ public static FeedJpaEntity createFeed(UserJpaEntity user, BookJpaEntity book, b .build(); } - public static FeedTagJpaEntity createFeedTagMapping(FeedJpaEntity feed, TagJpaEntity tag) { - return FeedTagJpaEntity.builder() - .feedJpaEntity(feed) - .tagJpaEntity(tag) - .build(); - } - - public static FeedJpaEntity createFeedWithContents(UserJpaEntity user, BookJpaEntity book, List imageUrls, boolean isPublic) { FeedJpaEntity feed = FeedJpaEntity.builder() diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java index 06a32f674..8fca8ca62 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java @@ -10,7 +10,6 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java index c692e29e0..ae6b93346 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java @@ -8,7 +8,6 @@ import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java index 5c7e263c4..257b7a87e 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java @@ -9,11 +9,9 @@ import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -65,9 +63,9 @@ void setUp() { user = userJpaRepository.save(TestEntityFactory.createUser(alias)); CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); - tagJpaRepository.save(TestEntityFactory.createTag(category, "소설추천")); - tagJpaRepository.save(TestEntityFactory.createTag(category, "책추천")); - tagJpaRepository.save(TestEntityFactory.createTag(category, "오늘의책")); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "소설추천")); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "책추천")); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "오늘의책")); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java index e77cf13c6..3e39ff3cf 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java @@ -10,9 +10,7 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; @@ -86,9 +84,9 @@ void setUp() { alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); - tagJpaRepository.save(TestEntityFactory.createTag(category,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(category,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(category,CLASSIC_LITERATURE.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,CLASSIC_LITERATURE.getValue())); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java index c472aa9f2..d25539de3 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java @@ -7,16 +7,13 @@ import konkuk.thip.comment.adapter.out.persistence.repository.CommentLikeJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -80,8 +77,8 @@ void setUp() { user = userJpaRepository.save(TestEntityFactory.createUser(alias)); category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); - tag1 = tagJpaRepository.save(TestEntityFactory.createTag(category, KOREAN_NOVEL.getValue())); - tag2 = tagJpaRepository.save(TestEntityFactory.createTag(category, FOREIGN_NOVEL.getValue())); + tag1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, KOREAN_NOVEL.getValue())); + tag2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, FOREIGN_NOVEL.getValue())); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user, book, true,1,1,List.of("url1", "url2", "url3"))); feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(feed, tag1)); feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(feed, tag2)); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java index e831645d4..2b00b2489 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java @@ -10,9 +10,7 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java index d3c039f14..3a2cc0ff7 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java @@ -8,7 +8,6 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java index 6eea07861..ae092029f 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java @@ -9,7 +9,6 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -25,9 +24,7 @@ import java.sql.Timestamp; import java.time.LocalDateTime; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.*; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java index 7f3a27f2a..2cc41e0f3 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java @@ -4,18 +4,15 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; import konkuk.thip.feed.domain.Tag; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -84,8 +81,8 @@ void feed_show_single_test() throws Exception { // 피드 및 피드 태그 생성 CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.GENERAL_SCIENCE.getValue())); + TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); + TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); FeedJpaEntity f1 = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, true, 50, 10, List.of("content1", "content2"))); // feedCreator가 작성한 공개 피드 feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(f1, t1)); feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(f1, t2)); @@ -123,8 +120,8 @@ void feed_can_not_show_private_one() throws Exception { // 피드 및 피드 태그 생성 CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.GENERAL_SCIENCE.getValue())); + TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); + TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, false, 50, 10, List.of("content1", "content2"))); // feedCreator가 작성한 비공개 피드 feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t1)); feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t2)); @@ -147,8 +144,8 @@ void feed_can_show_private_one_by_feed_owner() throws Exception { // 피드 및 피드 태그 생성 CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createTag(c1, Tag.GENERAL_SCIENCE.getValue())); + TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); + TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(me, book, false, 50, 10, List.of("content1", "content2"))); // me가 작성한 비공개 피드 feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t1)); feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t2)); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java index 9568412a3..5e3931a1b 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java @@ -10,7 +10,6 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java index 5a0e14a68..bacccb7b3 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java index 28c19cc37..d610e8747 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java @@ -4,9 +4,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -61,12 +59,12 @@ void showFeedWriteInfo_returnsCategoryAndTags() throws Exception { // given literatureCategory = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(literatureAlias)); scienceCategory = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(scienceAlias)); - tagJpaRepository.save(TestEntityFactory.createTag(literatureCategory,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(literatureCategory,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(literatureCategory,CLASSIC_LITERATURE.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(scienceCategory,GENERAL_SCIENCE.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(scienceCategory,PHYSICS.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag( scienceCategory,CHEMISTRY.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,KOREAN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,FOREIGN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,CLASSIC_LITERATURE.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(scienceCategory,GENERAL_SCIENCE.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(scienceCategory,PHYSICS.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag( scienceCategory,CHEMISTRY.getValue())); // when // then mockMvc.perform(get("/feeds/write-info") diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java index 0cd4b7f5b..1d57efb31 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java @@ -7,15 +7,11 @@ import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.jpa.ContentJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.FeedTagJpaEntity; -import konkuk.thip.feed.adapter.out.jpa.TagJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -77,9 +73,9 @@ void setUp() { user = userJpaRepository.save(TestEntityFactory.createUser(alias)); CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); - tag1 = tagJpaRepository.save(TestEntityFactory.createTag(category,KOREAN_NOVEL.getValue())); - tag2 = tagJpaRepository.save(TestEntityFactory.createTag(category,FOREIGN_NOVEL.getValue())); - tag3 = tagJpaRepository.save(TestEntityFactory.createTag(category, CLASSIC_LITERATURE.getValue())); + tag1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); + tag2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); + tag3 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, CLASSIC_LITERATURE.getValue())); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java index c91b54175..34dde7c70 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java @@ -6,9 +6,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -63,9 +61,9 @@ void setUp() { UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias)); CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); - tagJpaRepository.save(TestEntityFactory.createTag(category,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(category,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createTag(category,CLASSIC_LITERATURE.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); + tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,CLASSIC_LITERATURE.getValue())); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); savedFeedId = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)).getPostId(); creatorUserId = user.getUserId(); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java index 03b730420..79a6640da 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java @@ -10,7 +10,6 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java index c774975b9..a1dd6ca20 100644 --- a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java @@ -5,7 +5,6 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java index 54dc00a47..8ce64d164 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java @@ -5,7 +5,6 @@ import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchType; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java index 6abea1462..29a452934 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java @@ -5,7 +5,6 @@ import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchType; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java index aeaab3100..b7bbea85b 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java @@ -4,17 +4,15 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -46,9 +44,7 @@ class RoomCloseJoinApiTest { @Autowired RoomJpaRepository roomJpaRepository; @Autowired RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired BookJpaRepository bookJpaRepository; - @Autowired CategoryJpaRepository categoryJpaRepository; @Autowired UserJpaRepository userJpaRepository; - @Autowired AliasJpaRepository aliasJpaRepository; private RoomJpaEntity room; private UserJpaEntity host; @@ -57,32 +53,32 @@ class RoomCloseJoinApiTest { @BeforeEach void setup() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); host = userJpaRepository.save(UserJpaEntity.builder() .nickname("호스트") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .build()); member = userJpaRepository.save(UserJpaEntity.builder() .nickname("방 참여자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .build()); outsider = userJpaRepository.save(UserJpaEntity.builder() .nickname("방 미참여자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .build()); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); room = roomJpaRepository.save(RoomJpaEntity.builder() .title("방 제목") @@ -93,7 +89,7 @@ void setup() { .recruitCount(5) .memberCount(2) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 0.0)); @@ -102,12 +98,10 @@ void setup() { @AfterEach void tearDown() { - roomParticipantJpaRepository.deleteAll(); - roomJpaRepository.deleteAll(); - bookJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); + roomParticipantJpaRepository.deleteAllInBatch(); + roomJpaRepository.deleteAllInBatch(); + bookJpaRepository.deleteAllInBatch(); + userJpaRepository.deleteAllInBatch(); } @Test @@ -154,4 +148,4 @@ void closeRoomRecruit_fail_already_started() throws Exception { .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isBadRequest()); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java index 0934530a0..4ac5fd437 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java @@ -5,13 +5,11 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java index 3b35c2889..ca531fe22 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java @@ -4,13 +4,11 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.DateUtil; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java index cf5f2ff6f..6063df1e2 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java @@ -3,7 +3,6 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java index 2d6df62db..64cc94013 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java @@ -3,13 +3,11 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java index 458743a4b..7f5fbfd2e 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java @@ -4,14 +4,12 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java index ccdf09139..27edcfcb3 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.DateUtil; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; @@ -12,7 +11,6 @@ import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.room.domain.Category; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java index 957d0deb1..19328968a 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java @@ -10,13 +10,11 @@ import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.in.web.request.RoomPostIsLikeRequest; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java index 592c7c4ec..08f53e63a 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java @@ -6,13 +6,11 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java index d06a93334..90b3a85f6 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.DateUtil; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java index 5a8525004..2cc81e8e1 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java @@ -6,7 +6,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java index 97de3c849..7727f0695 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java @@ -3,14 +3,12 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; @@ -26,7 +24,6 @@ import java.time.LocalDate; -import static konkuk.thip.common.exception.code.ErrorCode.INVALID_MY_ROOM_CURSOR; import static konkuk.thip.common.exception.code.ErrorCode.INVALID_MY_ROOM_TYPE; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java index 8f8de79b2..ce13e812a 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java @@ -5,9 +5,7 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.in.web.request.RoomVerifyPasswordRequest; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java index 7d5194580..5a7116399 100644 --- a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java +++ b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java @@ -6,7 +6,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java index 269dc8eb4..492cd18e6 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java @@ -6,13 +6,11 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java index b2e096a7b..b1497cf87 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; @@ -12,7 +11,6 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.AttendanceCheckJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.attendancecheck.AttendanceCheckJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java index 954089e89..296005de3 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java @@ -8,14 +8,12 @@ import konkuk.thip.roompost.adapter.in.web.request.RecordCreateRequest; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java index 9a62a8e1e..8524c9127 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java @@ -9,13 +9,11 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java index 7eb355b64..ce27176e7 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java @@ -5,13 +5,11 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java index e61e978d4..6cadcaf82 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java @@ -7,14 +7,12 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java index ae38d0ffe..53232f717 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java @@ -4,13 +4,11 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java index e4208b295..cc6eb1ada 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java @@ -5,13 +5,11 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java index bb39dfed9..99b66f46d 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java @@ -7,13 +7,11 @@ import konkuk.thip.comment.adapter.out.persistence.repository.CommentLikeJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java index 16c5e8688..e033c16cf 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java @@ -4,12 +4,10 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java index 8c708e9ff..0beb7f440 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java @@ -4,11 +4,9 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java index 31eb39c3f..12efd8ef4 100644 --- a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java +++ b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java @@ -3,7 +3,6 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; @@ -13,7 +12,6 @@ import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.application.port.in.dto.vote.VoteCreateCommand; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java index e542d5ca0..8435973ac 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java @@ -1,7 +1,6 @@ package konkuk.thip.user.adapter.in.web; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java index 8a59ec1f8..0b6ae2276 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java index 76bbdd475..3288dec1a 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java index 5519fe07e..c514dd7b6 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java @@ -1,7 +1,6 @@ package konkuk.thip.user.adapter.in.web; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java index ff07c4ef0..365f40ca0 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java @@ -10,7 +10,6 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; @@ -20,7 +19,6 @@ import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java index fc563c0c0..aea4eece9 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java @@ -4,7 +4,6 @@ import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchType; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java index 2d97842d0..fbe886ed8 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java @@ -5,7 +5,6 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java index 0c22ec6f8..deb9adcf0 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java @@ -5,7 +5,6 @@ import konkuk.thip.common.security.util.JwtUtil; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.in.web.request.UserSignupRequest; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java index 1c76c0321..8ad6d1219 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java @@ -3,7 +3,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.in.web.request.UserUpdateRequest; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java index c26e0d41b..c009c5ade 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.in.web.request.UserVerifyNicknameRequest; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java index 8891a3fe2..ed96fd22d 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java @@ -3,10 +3,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.user.adapter.in.web.response.UserViewAliasChoiceResponse; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; From c63ae6f0e9d1bcd56aef4d38b0ea2eb8404bd65f Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Tue, 19 Aug 2025 15:37:44 +0900 Subject: [PATCH 04/45] =?UTF-8?q?[feat]=20Tag=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=9D=BC=EA=B8=89=20=EC=BB=AC=EB=A0=89=EC=85=98=20=EB=B0=8F=20?= =?UTF-8?q?Converter=20=EC=B6=94=EA=B0=80=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jpa/converter/TagListJsonConverter.java | 45 ++++++++ .../java/konkuk/thip/feed/domain/TagList.java | 103 ++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java create mode 100644 src/main/java/konkuk/thip/feed/domain/TagList.java diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java new file mode 100644 index 000000000..9a1e0c989 --- /dev/null +++ b/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java @@ -0,0 +1,45 @@ +package konkuk.thip.feed.adapter.out.jpa.converter; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.persistence.AttributeConverter; +import jakarta.persistence.Converter; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; + +import java.io.IOException; +import java.util.List; + +@Converter(autoApply = true) +public class TagListJsonConverter implements AttributeConverter { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public String convertToDatabaseColumn(TagList attribute) { + try { + List tagNames = attribute == null ? List.of() : + attribute.toUnmodifiableList().stream() + .map(Tag::name) // Enum 이름 사용 + .toList(); + return objectMapper.writeValueAsString(tagNames); + } catch (JsonProcessingException e) { + throw new IllegalStateException("TagList 직렬화 실패", e); + } + } + + @Override + public TagList convertToEntityAttribute(String dbData) { + if (dbData == null || dbData.isBlank()) return TagList.of(List.of()); + try { + List names = objectMapper.readValue( + dbData, + objectMapper.getTypeFactory().constructCollectionType(List.class, String.class) + ); + List tags = names.stream().map(Tag::valueOf).toList(); + return TagList.of(tags); + } catch (IOException e) { + throw new IllegalStateException("TagList 역직렬화 실패", e); + } + } +} \ No newline at end of file diff --git a/src/main/java/konkuk/thip/feed/domain/TagList.java b/src/main/java/konkuk/thip/feed/domain/TagList.java new file mode 100644 index 000000000..1a87cffc1 --- /dev/null +++ b/src/main/java/konkuk/thip/feed/domain/TagList.java @@ -0,0 +1,103 @@ +package konkuk.thip.feed.domain; + +import konkuk.thip.common.exception.InvalidStateException; +import konkuk.thip.feed.domain.Tag; + +import java.io.Serial; +import java.io.Serializable; +import java.util.*; + +import static konkuk.thip.common.exception.code.ErrorCode.INVALID_FEED_COMMAND; + +public final class TagList extends AbstractList implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private static final int MAX_SIZE = 5; + + private final List tags; + + private TagList(List tags) { + this.tags = new ArrayList<>(tags == null ? List.of() : tags); + validate(); + } + + public static TagList of(List tags) { + return new TagList(tags); + } + + public static TagList empty() { + return new TagList(List.of()); + } + + private void validate() { + if (tags.size() > MAX_SIZE) { + throw new InvalidStateException(INVALID_FEED_COMMAND, + new IllegalArgumentException("태그는 최대 " + MAX_SIZE + "개까지 입력할 수 있습니다.")); + } + + long distinctCount = tags.stream().distinct().count(); + if (distinctCount != tags.size()) { + throw new InvalidStateException(INVALID_FEED_COMMAND, + new IllegalArgumentException("태그는 중복될 수 없습니다.")); + } + } + + public List toUnmodifiableList() { + return List.copyOf(tags); + } + + // AbstractList 구현 + @Override + public Tag get(int index) { + return tags.get(index); + } + + @Override + public int size() { + return tags.size(); + } + + @Override + public boolean add(Tag tag) { + boolean res = tags.add(tag); + validate(); + return res; + } + + @Override + public boolean addAll(Collection c) { + boolean res = tags.addAll(c); + validate(); + return res; + } + + @Override + public Tag set(int index, Tag element) { + Tag prev = tags.set(index, element); + validate(); + return prev; + } + + @Override + public void add(int index, Tag element) { + tags.add(index, element); + validate(); + } + + @Override + public Tag remove(int index) { + return tags.remove(index); + } + + @Override + public void clear() { + tags.clear(); + } + + @Override + public Iterator iterator() { + return tags.iterator(); + } +} \ No newline at end of file From 74a4c89e7676fb458bce8ca105dbf90703cefc5f Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Tue, 19 Aug 2025 15:38:01 +0900 Subject: [PATCH 05/45] =?UTF-8?q?[feat]=20EnumMappings=20final=20class=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../konkuk/thip/common/util/EnumMappings.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/konkuk/thip/common/util/EnumMappings.java diff --git a/src/main/java/konkuk/thip/common/util/EnumMappings.java b/src/main/java/konkuk/thip/common/util/EnumMappings.java new file mode 100644 index 000000000..ff8bb09e2 --- /dev/null +++ b/src/main/java/konkuk/thip/common/util/EnumMappings.java @@ -0,0 +1,109 @@ +package konkuk.thip.common.util; + +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.room.domain.Category; +import konkuk.thip.user.domain.Alias; + +import java.util.Collections; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; + +public final class EnumMappings { + + private EnumMappings() {} + + private static final Map aliasToCategory; + private static final Map> categoryToTags; + + // 역방향 인덱스 + private static final Map categoryToAlias; + private static final Map tagToCategory; + + static { + // Alias -> Category + EnumMap a2c = new EnumMap<>(Alias.class); + a2c.put(Alias.WRITER, Category.LITERATURE); // 문학가 + a2c.put(Alias.SCIENTIST, Category.SCIENCE_IT); // 과학자 + a2c.put(Alias.SOCIOLOGIST, Category.SOCIAL_SCIENCE); // 사회학 + a2c.put(Alias.ARTIST, Category.ART); // 예술가 + a2c.put(Alias.PHILOSOPHER, Category.HUMANITY); // 철학자 + aliasToCategory = Collections.unmodifiableMap(a2c); + + // Category -> Tags + EnumMap> c2t = new EnumMap<>(Category.class); + c2t.put(Category.LITERATURE, List.of( // 문학 + Tag.KOREAN_NOVEL, Tag.FOREIGN_NOVEL, Tag.CLASSIC_LITERATURE, Tag.ESSAY, Tag.POETRY, + Tag.PLAY, Tag.DETECTIVE_NOVEL, Tag.FANTASY_NOVEL, Tag.ROMANCE_NOVEL, Tag.LITERARY_THEORY + )); + c2t.put(Category.SCIENCE_IT, List.of( // 과학·IT + Tag.GENERAL_SCIENCE, Tag.PHYSICS, Tag.CHEMISTRY, Tag.BIOLOGY, Tag.ASTRONOMY, + Tag.EARTH_SCIENCE, Tag.MATHEMATICS, Tag.GENERAL_ENGINEERING, + Tag.COMPUTER_ENGINEERING, Tag.PROGRAMMING, Tag.IT_GENERAL + )); + c2t.put(Category.SOCIAL_SCIENCE, List.of( // 사회과학 + Tag.SOCIOLOGY, Tag.LAW, Tag.GENERAL_POLITICS, Tag.POLITICAL_SCIENCE, + Tag.ECONOMICS, Tag.BUSINESS_ADMIN, Tag.JURISPRUDENCE, Tag.EDUCATION, + Tag.PSYCHOLOGY, Tag.MEDIA, Tag.INTERNATIONAL_RELATIONS, Tag.SOCIAL_ISSUES, + Tag.MARKETING, Tag.INVESTMENT, Tag.STARTUP, Tag.GENERAL_ECONOMY + )); + c2t.put(Category.HUMANITY, List.of( // 인문학 + Tag.PHILOSOPHY, Tag.HISTORY, Tag.RELIGION, Tag.CLASSICS, Tag.LINGUISTICS, + Tag.CULTURAL_ANTHROPOLOGY, Tag.HUMANISTIC_ESSAY, Tag.EASTERN_PHILOSOPHY, + Tag.WESTERN_PHILOSOPHY, Tag.WORLD_HISTORY, Tag.KOREAN_HISTORY, + Tag.HISTORICAL_ESSAY, Tag.ANCIENT_HISTORY, Tag.MODERN_HISTORY + )); + c2t.put(Category.ART, List.of( + Tag.ART, Tag.MUSIC, Tag.MOVIE, Tag.PHOTO, Tag.DANCE, + Tag.THEATER, Tag.DESIGN, Tag.ARCHITECTURE, Tag.GENERAL_ART + )); + categoryToTags = Collections.unmodifiableMap(c2t); + + // ------------역방향 인덱스------------ + // Category -> Alias + EnumMap c2a = new EnumMap<>(Category.class); + aliasToCategory.forEach((alias, category) -> { + Alias prev = c2a.put(category, alias); + if (prev != null && prev != alias) { + throw new IllegalStateException("Category에 두 개 이상의 Alias 매핑: " + category); + } + }); + categoryToAlias = Collections.unmodifiableMap(c2a); + + // Tag -> Category (각 Tag는 정확히 하나의 Category) + EnumMap t2c = new EnumMap<>(Tag.class); + categoryToTags.forEach((category, tags) -> { + for (Tag tag : tags) { + Category prev = t2c.put(tag, category); + if (prev != null && prev != category) { + throw new IllegalStateException( + "Tag가 둘 이상의 Category에 매핑됨: " + tag + " (" + prev + " vs " + category + ")" + ); + } + } + }); + tagToCategory = Collections.unmodifiableMap(t2c); + } + + // ----------- Public API ----------- + + /** Alias -> Category */ + public static Category categoryFrom(Alias alias) { + return aliasToCategory.get(alias); + } + + /** Category -> Tags */ + public static List tagsFrom(Category category) { + return categoryToTags.getOrDefault(category, List.of()); + } + + /** Category -> Alias */ + public static Alias aliasFrom(Category category) { + return categoryToAlias.get(category); + } + + /** Tag -> Category */ + public static Category categoryFrom(Tag tag) { + return tagToCategory.get(tag); + } +} From 9c1f5fab12db64c14bcfcd1d9eb2dd72d3e24abd Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 02:52:28 +0900 Subject: [PATCH 06/45] =?UTF-8?q?[refactor]=20queryDto=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 바뀐 jpa 구조에서 Query Projection을 위해 프로젝션 생성자 코드 수정 --- .../port/out/dto/FeedQueryDto.java | 8 ++--- .../port/out/dto/AttendanceCheckQueryDto.java | 14 ++++---- .../port/out/dto/RoomPostQueryDto.java | 32 ++++++++++++++++++- .../port/out/dto/FollowingQueryDto.java | 17 +++++++++- .../port/out/dto/UserQueryDto.java | 32 +++++++++++++------ 5 files changed, 82 insertions(+), 21 deletions(-) diff --git a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java index 2fab299f6..b98a4d78d 100644 --- a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java +++ b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java @@ -3,6 +3,7 @@ import com.querydsl.core.annotations.QueryProjection; import jakarta.annotation.Nullable; import konkuk.thip.feed.domain.value.ContentList; +import konkuk.thip.user.domain.Alias; import lombok.Builder; import java.time.LocalDateTime; @@ -31,8 +32,7 @@ public FeedQueryDto( Long feedId, Long creatorId, String creatorNickname, - String creatorProfileImageUrl, - String alias, + Alias alias, LocalDateTime createdAt, String isbn, String bookTitle, @@ -49,8 +49,8 @@ public FeedQueryDto( feedId, creatorId, creatorNickname, - creatorProfileImageUrl, - alias, + alias.getImageUrl(), + alias.getValue(), createdAt, isbn, bookTitle, diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java index cd76e642b..9cf2a8f30 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java @@ -22,11 +22,13 @@ public AttendanceCheckQueryDto ( String todayComment, LocalDateTime createdAt ) { - this.attendanceCheckId = attendanceCheckId; - this.creatorId = creatorId; - this.creatorNickname = creatorNickname; - this.creatorProfileImageUrl = alias.getImageUrl(); - this.todayComment = todayComment; - this.createdAt = createdAt; + this( + attendanceCheckId, + creatorId, + creatorNickname, + alias.getImageUrl(), + todayComment, + createdAt + ); } } diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java b/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java index 4a57911a9..8eda68552 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java @@ -1,6 +1,7 @@ package konkuk.thip.roompost.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; +import konkuk.thip.user.domain.Alias; import org.springframework.util.Assert; import java.time.LocalDateTime; @@ -18,7 +19,7 @@ public record RoomPostQueryDto( Integer commentCount, Boolean isOverview ) { - @QueryProjection + // 정식 생성자(컴팩트)에서 모든 필드 검증 public RoomPostQueryDto { Assert.notNull(postId, "postId must not be null"); Assert.notNull(postType, "postType must not be null"); @@ -32,4 +33,33 @@ public record RoomPostQueryDto( Assert.notNull(commentCount, "commentCount must not be null"); Assert.notNull(isOverview, "isOverview must not be null"); } + + @QueryProjection + public RoomPostQueryDto ( + Long postId, + String postType, + LocalDateTime postDate, + Integer page, + Long userId, + String nickName, + Alias alias, + String content, + Integer likeCount, + Integer commentCount, + Boolean isOverview + ){ + this( + postId, + postType, + postDate, + page, + userId, + nickName, + alias.getImageUrl(), + content, + likeCount, + commentCount, + isOverview + ); + } } diff --git a/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java b/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java index d406e6ad9..fa15dc386 100644 --- a/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java +++ b/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java @@ -1,6 +1,7 @@ package konkuk.thip.user.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; +import konkuk.thip.user.domain.Alias; import java.time.LocalDateTime; @@ -12,5 +13,19 @@ public record FollowingQueryDto( LocalDateTime followedAt ) { @QueryProjection - public FollowingQueryDto {} + public FollowingQueryDto ( + Long userId, + Long followingTargetUserId, + String followingUserNickname, + Alias followingUserAlias, + LocalDateTime followedAt + ){ + this( + userId, + followingTargetUserId, + followingUserNickname, + followingUserAlias.getImageUrl(), + followedAt + ); + } } diff --git a/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java b/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java index 71dda165b..ec1f6c6f7 100644 --- a/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java +++ b/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java @@ -1,7 +1,7 @@ package konkuk.thip.user.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; -import org.springframework.util.Assert; +import konkuk.thip.user.domain.Alias; import java.time.LocalDateTime; @@ -14,13 +14,27 @@ public record UserQueryDto(Long userId, LocalDateTime createdAt) { @QueryProjection - public UserQueryDto { - Assert.notNull(userId, "userId must not be null"); - Assert.notNull(nickname, "nickname must not be null"); - Assert.notNull(profileImageUrl, "profileImageUrl must not be null"); - Assert.notNull(aliasName, "aliasName must not be null"); - Assert.notNull(aliasColor, "aliasColor must not be null"); -// Assert.notNull(followerCount, "followerCount must not be null"); // 내 팔로잉 목록 조회에서는 필요 x - Assert.notNull(createdAt, "createdAt must not be null"); + public UserQueryDto ( + Long userId, + String nickname, + Alias userAlias, + Integer followerCount, + LocalDateTime createdAt + ){ +// Assert.notNull(userId, "userId must not be null"); +// Assert.notNull(nickname, "nickname must not be null"); +// Assert.notNull(userAlias, "userAlias must not be null"); +//// Assert.notNull(followerCount, "followerCount must not be null"); // 내 팔로잉 목록 조회에서는 필요 x +// Assert.notNull(createdAt, "createdAt must not be null"); + + this( + userId, + nickname, + userAlias.getImageUrl(), + userAlias.getValue(), + userAlias.getColor(), + followerCount, + createdAt + ); } } From 6f6fcde88fc0b38305bbed68c438c166190e328c Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 03:00:02 +0900 Subject: [PATCH 07/45] =?UTF-8?q?[refactor]=20=EC=98=81=EC=86=8D=EC=84=B1?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CommentQueryRepositoryImpl.java | 25 ++++--------------- .../FeedCommandPersistenceAdapter.java | 8 +----- .../FeedQueryPersistenceAdapter.java | 8 ------ .../repository/FeedQueryRepository.java | 2 -- .../repository/FeedQueryRepositoryImpl.java | 20 ++------------- .../application/port/out/FeedQueryPort.java | 5 ---- .../port/out/dto/FeedIdAndTagProjection.java | 6 ----- .../service/FeedShowWriteInfoService.java | 13 ++++++---- .../RoomQueryPersistenceAdapter.java | 10 +++----- .../repository/RoomQueryRepository.java | 6 ++--- .../repository/RoomQueryRepositoryImpl.java | 24 ++++++++---------- .../record/RecordQueryRepositoryImpl.java | 5 ++-- .../user/adapter/out/jpa/UserJpaEntity.java | 4 +-- .../FollowingCommandPersistenceAdapter.java | 2 -- .../FollowingQueryPersistenceAdapter.java | 7 +++++- .../UserCommandPersistenceAdapter.java | 8 +----- .../UserQueryPersistenceAdapter.java | 6 ----- .../repository/UserQueryRepositoryImpl.java | 9 +------ .../following/FollowingQueryRepository.java | 3 ++- .../FollowingQueryRepositoryImpl.java | 18 ++++--------- .../application/port/out/UserQueryPort.java | 2 -- 21 files changed, 52 insertions(+), 139 deletions(-) delete mode 100644 src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java diff --git a/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java b/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java index 5b3c80bdb..89ea08f02 100644 --- a/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/comment/adapter/out/persistence/repository/CommentQueryRepositoryImpl.java @@ -32,10 +32,8 @@ public List findRootCommentsWithDeletedByCreatedAtDesc(Long pos QCommentQueryDto proj = new QCommentQueryDto( comment.commentId, commentCreator.userId, - aliasOfCommentCreator.imageUrl, + commentCreator.alias, commentCreator.nickname, - aliasOfCommentCreator.value, - aliasOfCommentCreator.color, comment.createdAt, comment.content, comment.likeCount, @@ -56,7 +54,6 @@ public List findRootCommentsWithDeletedByCreatedAtDesc(Long pos .select(proj) .from(comment) .leftJoin(comment.userJpaEntity, commentCreator) - .leftJoin(commentCreator.aliasForUserJpaEntity, aliasOfCommentCreator) .where(whereClause) .orderBy(comment.createdAt.desc()) .limit(size + 1) // size + 1 개 조회 @@ -77,10 +74,8 @@ public List findAllActiveChildCommentsByCreatedAtAsc(Long rootC comment.parent.commentId, parentCommentCreator.nickname, commentCreator.userId, - aliasOfCommentCreator.imageUrl, + commentCreator.alias, commentCreator.nickname, - aliasOfCommentCreator.value, - aliasOfCommentCreator.color, comment.createdAt, comment.content, comment.likeCount, @@ -95,7 +90,6 @@ public List findAllActiveChildCommentsByCreatedAtAsc(Long rootC .leftJoin(comment.parent, parentComment) .leftJoin(parentComment.userJpaEntity, parentCommentCreator) .leftJoin(comment.userJpaEntity, commentCreator) - .leftJoin(commentCreator.aliasForUserJpaEntity, aliasOfCommentCreator) .where( comment.parent.commentId.in(parentIds), // parentIds 하위의 모든 자식 댓글 조회 comment.status.eq(StatusType.ACTIVE) // 자식 댓글은 ACTIVE인 것만 조회 @@ -139,10 +133,8 @@ public Map> findAllActiveChildCommentsByCreatedAtAsc comment.parent.commentId, parentCommentCreator.nickname, commentCreator.userId, - aliasOfCommentCreator.imageUrl, + commentCreator.alias, commentCreator.nickname, - aliasOfCommentCreator.value, - aliasOfCommentCreator.color, comment.createdAt, comment.content, comment.likeCount, @@ -157,7 +149,6 @@ public Map> findAllActiveChildCommentsByCreatedAtAsc .leftJoin(comment.parent, parentComment) .leftJoin(parentComment.userJpaEntity, parentCommentCreator) .leftJoin(comment.userJpaEntity, commentCreator) - .leftJoin(commentCreator.aliasForUserJpaEntity, aliasOfCommentCreator) .where( comment.parent.commentId.in(parentIds), // parentIds 하위의 모든 자식 댓글 조회 comment.status.eq(StatusType.ACTIVE) // 자식 댓글은 ACTIVE인 것만 조회 @@ -191,10 +182,8 @@ public CommentQueryDto findRootCommentId(Long rootCommentId) { QCommentQueryDto proj = new QCommentQueryDto( comment.commentId, commentCreator.userId, - aliasOfCommentCreator.imageUrl, + commentCreator.alias, commentCreator.nickname, - aliasOfCommentCreator.value, - aliasOfCommentCreator.color, comment.createdAt, comment.content, comment.likeCount, @@ -205,7 +194,6 @@ public CommentQueryDto findRootCommentId(Long rootCommentId) { .select(proj) .from(comment) .join(comment.userJpaEntity, commentCreator) - .join(commentCreator.aliasForUserJpaEntity, aliasOfCommentCreator) .where( comment.commentId.eq(rootCommentId), comment.status.eq(StatusType.ACTIVE) @@ -221,10 +209,8 @@ public CommentQueryDto findChildCommentId(Long rootCommentId, Long replyCommentI comment.parent.commentId, parentCommentCreator.nickname, commentCreator.userId, - aliasOfCommentCreator.imageUrl, + commentCreator.alias, commentCreator.nickname, - aliasOfCommentCreator.value, - aliasOfCommentCreator.color, comment.createdAt, comment.content, comment.likeCount, @@ -237,7 +223,6 @@ public CommentQueryDto findChildCommentId(Long rootCommentId, Long replyCommentI .join(comment.parent, parentComment) .join(parentComment.userJpaEntity, parentCommentCreator) .join(comment.userJpaEntity, commentCreator) - .join(commentCreator.aliasForUserJpaEntity, aliasOfCommentCreator) .where( comment.parent.commentId.eq(rootCommentId), parentComment.status.eq(StatusType.ACTIVE), diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java index fe06d53de..6033de608 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java @@ -4,13 +4,9 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.exception.EntityNotFoundException; import konkuk.thip.feed.adapter.out.jpa.*; -import konkuk.thip.feed.adapter.out.mapper.ContentMapper; import konkuk.thip.feed.adapter.out.mapper.FeedMapper; -import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.domain.Feed; import konkuk.thip.feed.domain.Tag; @@ -19,7 +15,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; -import java.util.List; import java.util.Optional; import static konkuk.thip.common.entity.StatusType.ACTIVE; @@ -60,7 +55,7 @@ public Long save(Feed feed) { // // Content가 존재하면 ContentJpaEntity 생성 및 Feed 연관관계 설정 // applyFeedContents(feed, savedFeed); // 태그가 존재하면 태그 피드 매핑 생성 및 저장 - applyFeedTags(feed, savedFeed); +// applyFeedTags(feed, savedFeed); return savedFeed.getPostId(); } @@ -103,7 +98,6 @@ public void delete(Feed feed) { FeedJpaEntity feedJpaEntity = feedJpaRepository.findByPostIdAndStatus(feed.getId(),ACTIVE) .orElseThrow(() -> new EntityNotFoundException(FEED_NOT_FOUND)); - feedTagJpaRepository.deleteAllByFeedId(feedJpaEntity.getPostId()); savedFeedJpaRepository.deleteAllByFeedId(feedJpaEntity.getPostId()); feedJpaEntity.softDelete(); diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedQueryPersistenceAdapter.java index 54de7ad26..560170d35 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedQueryPersistenceAdapter.java @@ -5,10 +5,8 @@ import konkuk.thip.common.util.CursorBasedList; import konkuk.thip.feed.adapter.out.mapper.FeedMapper; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.feed.application.port.out.FeedQueryPort; -import konkuk.thip.feed.application.port.out.dto.TagCategoryQueryDto; import konkuk.thip.feed.application.port.out.dto.FeedQueryDto; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import lombok.RequiredArgsConstructor; @@ -23,7 +21,6 @@ public class FeedQueryPersistenceAdapter implements FeedQueryPort { private final FeedJpaRepository feedJpaRepository; - private final FeedTagJpaRepository feedTagJpaRepository; private final UserJpaRepository userJpaRepository; private final SavedFeedJpaRepository savedFeedJpaRepository; private final FeedMapper feedMapper; @@ -122,11 +119,6 @@ public CursorBasedList findSavedFeedsByCreatedAt(Long userId, Curs }); } - @Override - public List findAllTags() { - return feedJpaRepository.findAllTags(); - } - @Override public CursorBasedList findFeedsByBookIsbnOrderByLike(String isbn, Long userId, Cursor cursor) { LocalDateTime lastCreatedAt = cursor.isFirstRequest() ? null : cursor.getLocalDateTime(0); diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepository.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepository.java index c2588f32c..e6321fb01 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepository.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepository.java @@ -18,8 +18,6 @@ public interface FeedQueryRepository { List findSpecificUserFeedsByCreatedAt(Long feedOwnerId, LocalDateTime lastCreatedAt, int size); - List findAllTags(); - List findFeedsByBookIsbnOrderByLikeCount(String isbn, Long userId, LocalDateTime lastCreatedAt, Integer lastLikeCount, int size); List findFeedsByBookIsbnOrderByCreatedAt(String isbn, Long userId, LocalDateTime lastCreatedAt, int size); diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java index 2e1cd135d..f918de494 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/repository/FeedQueryRepositoryImpl.java @@ -14,8 +14,6 @@ import konkuk.thip.feed.adapter.out.jpa.QSavedFeedJpaEntity; import konkuk.thip.feed.application.port.out.dto.FeedQueryDto; import konkuk.thip.feed.application.port.out.dto.QFeedQueryDto; -import konkuk.thip.feed.application.port.out.dto.QTagCategoryQueryDto; -import konkuk.thip.feed.application.port.out.dto.TagCategoryQueryDto; import konkuk.thip.user.adapter.out.jpa.QFollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.QUserJpaEntity; import lombok.RequiredArgsConstructor; @@ -214,18 +212,6 @@ public List findSpecificUserFeedsByCreatedAt(Long feedOwnerId, Loc .toList(); } - @Override - public List findAllTags() { - QCategoryJpaEntity c = QCategoryJpaEntity.categoryJpaEntity; - QTagJpaEntity t = QTagJpaEntity.tagJpaEntity; - - return jpaQueryFactory - .select(new QTagCategoryQueryDto(c.value, t.value)) - .from(c) - .join(t).on(t.categoryJpaEntity.eq(c)) - .orderBy(c.categoryId.asc(), t.tagId.asc()) //Id 순 정렬 - .fetch(); - } private List fetchMyFeedIdsByCreatedAt(Long userId, LocalDateTime lastCreatedAt, int size) { return jpaQueryFactory .select(feed.postId) @@ -345,8 +331,7 @@ private QFeedQueryDto toQueryDto() { feed.postId, feed.userJpaEntity.userId, user.nickname, - user.aliasForUserJpaEntity.imageUrl, - user.aliasForUserJpaEntity.value, + user.alias, feed.createdAt, book.isbn, book.title, @@ -419,8 +404,7 @@ private QFeedQueryDto toSavedFeedQueryDto() { feed.postId, feed.userJpaEntity.userId, user.nickname, - user.aliasForUserJpaEntity.imageUrl, - user.aliasForUserJpaEntity.value, + user.alias, feed.createdAt, book.isbn, book.title, diff --git a/src/main/java/konkuk/thip/feed/application/port/out/FeedQueryPort.java b/src/main/java/konkuk/thip/feed/application/port/out/FeedQueryPort.java index d0e92d3e8..6afdf4699 100644 --- a/src/main/java/konkuk/thip/feed/application/port/out/FeedQueryPort.java +++ b/src/main/java/konkuk/thip/feed/application/port/out/FeedQueryPort.java @@ -48,9 +48,4 @@ public interface FeedQueryPort { CursorBasedList findFeedsByBookIsbnOrderByLatest(String isbn, Long userId, Cursor cursor); List findLatestPublicFeedCreatorsIn(Set userIds, int size); - - /** - * 모든 태그 조회 - */ - List findAllTags(); } diff --git a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java deleted file mode 100644 index f4d1fc3a8..000000000 --- a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedIdAndTagProjection.java +++ /dev/null @@ -1,6 +0,0 @@ -package konkuk.thip.feed.application.port.out.dto; - -public interface FeedIdAndTagProjection { - Long getFeedId(); - TagJpaEntity getTagJpaEntity(); -} \ No newline at end of file diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java b/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java index a2556932f..ed3c40e2b 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java @@ -1,16 +1,18 @@ package konkuk.thip.feed.application.service; +import konkuk.thip.common.util.EnumMappings; import konkuk.thip.feed.adapter.in.web.response.FeedShowWriteInfoResponse; import konkuk.thip.feed.application.mapper.FeedQueryMapper; import konkuk.thip.feed.application.port.in.FeedShowWriteInfoUseCase; import konkuk.thip.feed.application.port.out.FeedQueryPort; -import konkuk.thip.feed.application.port.out.dto.TagCategoryQueryDto; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.room.domain.Category; import lombok.RequiredArgsConstructor; -import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; @Service @RequiredArgsConstructor @@ -20,11 +22,12 @@ public class FeedShowWriteInfoService implements FeedShowWriteInfoUseCase { private final FeedQueryMapper feedQueryMapper; @Override - @Cacheable("allTags") @Transactional(readOnly = true) public FeedShowWriteInfoResponse showFeedWriteInfo() { - List rows = feedQueryPort.findAllTags(); - return FeedShowWriteInfoResponse.of(feedQueryMapper.toTagsWithCategoryResult(rows)); + // 1. 태그와 카테고리 조회 + Map> categoryToTags = EnumMappings.getCategoryToTags(); + + return FeedShowWriteInfoResponse.of(feedQueryMapper.toTagsWithCategoryResult(categoryToTags)); } } diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java index 1a6408649..460251aa2 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java @@ -1,7 +1,5 @@ package konkuk.thip.room.adapter.out.persistence; -import konkuk.thip.common.exception.EntityNotFoundException; -import konkuk.thip.common.exception.code.ErrorCode; import konkuk.thip.common.util.Cursor; import konkuk.thip.common.util.CursorBasedList; import konkuk.thip.common.util.EnumMappings; @@ -61,7 +59,7 @@ public CursorBasedList searchRecruitingRoomsByMemberCount(String k public CursorBasedList searchRecruitingRoomsWithCategoryByMemberCount(String keyword, Category category, Cursor cursor) { return findRoomsByMemberCountCursor(cursor, (lastMemberCount, lastId, pageSize) -> roomJpaRepository.findRecruitingRoomsWithCategoryOrderByMemberCountDesc( - keyword, category.getValue(), lastMemberCount, lastId, pageSize + keyword, category, lastMemberCount, lastId, pageSize ) ); } @@ -69,7 +67,7 @@ public CursorBasedList searchRecruitingRoomsWithCategoryByMemberCo @Override public List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Room currentRoom, int count) { return roomJpaRepository.findOtherRecruitingRoomsByCategoryOrderByStartDateAsc( - currentRoom.getId(), currentRoom.getCategory().getValue(), count); + currentRoom.getId(), currentRoom.getCategory(), count); } @Override @@ -141,12 +139,12 @@ private CursorBasedList findRoomsByMemberCountCursor(Cursor cursor @Override public List findRoomsByCategoryOrderByDeadline(Category category, int limit, Long userId) { - return roomJpaRepository.findRoomsByCategoryOrderByStartDateAsc(category.getValue(), limit, userId); + return roomJpaRepository.findRoomsByCategoryOrderByStartDateAsc(category, limit, userId); } @Override public List findRoomsByCategoryOrderByPopular(Category category, int limit, Long userId) { - return roomJpaRepository.findRoomsByCategoryOrderByMemberCount(category.getValue(), limit, userId); + return roomJpaRepository.findRoomsByCategoryOrderByMemberCount(category, limit, userId); } @Override diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java index b72425d7f..df51d071d 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java @@ -21,7 +21,7 @@ public interface RoomQueryRepository { List findRecruitingRoomsOrderByMemberCountDesc(String keyword, Integer lastMemberCount, Long roomId, int pageSize); List findRecruitingRoomsWithCategoryOrderByMemberCountDesc(String keyword, Category category, Integer lastMemberCount, Long roomId, int pageSize); - List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, String category, int count); + List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, Category category, int count); Page searchHomeJoinedRooms(Long userId, LocalDate today, Pageable pageable); @@ -33,9 +33,9 @@ public interface RoomQueryRepository { List findExpiredRoomsUserParticipated(Long userId, LocalDate dateCursor, Long roomIdCursor, int pageSize); - List findRoomsByCategoryOrderByStartDateAsc(String category, int limit, Long userId); + List findRoomsByCategoryOrderByStartDateAsc(Category category, int limit, Long userId); - List findRoomsByCategoryOrderByMemberCount(String category, int limit, Long userId); + List findRoomsByCategoryOrderByMemberCount(Category category, int limit, Long userId); List findRoomsByIsbnOrderByStartDateAsc(String isbn, LocalDate dateCursor, Long roomIdCursor, int pageSize); } diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java index d78896a17..655768236 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java @@ -119,7 +119,7 @@ public List findRecruitingRoomsWithCategoryOrderByStartDateAsc(Str DateExpression cursorExpr = room.startDate; BooleanBuilder where = recruitingActiveWhere(today); - applyCategory(where, categoryVal); + applyCategory(where, category); applyKeyword(where, keyword); applyCursorStartDateAsc(where, cursorExpr, lastStartDate, roomId); @@ -127,7 +127,6 @@ public List findRecruitingRoomsWithCategoryOrderByStartDateAsc(Str .select(projectionForRecruitingRoomSearch()) .from(room) .join(room.bookJpaEntity, book) - .join(room.categoryJpaEntity, category) .where(where) .orderBy(cursorExpr.asc(), room.roomId.asc()) .limit(pageSize + 1) @@ -157,7 +156,7 @@ public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc( final LocalDate today = LocalDate.now(); BooleanBuilder where = recruitingActiveWhere(today); - applyCategory(where, categoryVal); + applyCategory(where, category); applyKeyword(where, keyword); applyCursorMemberCountDesc(where, lastMemberCount, roomId); @@ -165,7 +164,6 @@ public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc( .select(projectionForRecruitingRoomSearch()) .from(room) .join(room.bookJpaEntity, book) - .join(room.categoryJpaEntity, category) .where(where) .orderBy(room.memberCount.desc(), room.roomId.asc()) .limit(pageSize + 1) @@ -174,14 +172,14 @@ public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc( // ----------------------------------------------------------------------------------------------------------------------- @Override - public List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, String category, int count) { + public List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, Category category, int count) { NumberExpression memberCountExpr = participant.roomParticipantId.count(); List tuples = queryFactory .select(room.roomId, room.title, memberCountExpr, room.recruitCount, room.startDate) .from(room) .leftJoin(participant).on(participant.roomJpaEntity.eq(room)) .where( - room.categoryJpaEntity.value.eq(category) + room.category.eq(category) .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 .and(room.roomId.ne(roomId))// 현재 방 제외 .and(room.isPublic.isTrue()) // 공개방 만 @@ -355,7 +353,7 @@ public List findExpiredRoomsUserParticipated( } @Override - public List findRoomsByCategoryOrderByStartDateAsc(String categoryVal, int limit, Long userId) { + public List findRoomsByCategoryOrderByStartDateAsc(Category category, int limit, Long userId) { return queryFactory .select(new QRoomQueryDto( room.roomId, @@ -367,15 +365,14 @@ public List findRoomsByCategoryOrderByStartDateAsc(String category )) .from(room) .join(room.bookJpaEntity, book) - .join(room.categoryJpaEntity, category) - .where(findDeadlinePopularRoomCondition(categoryVal, userId)) + .where(findDeadlinePopularRoomCondition(category, userId)) .orderBy(room.startDate.asc(), room.memberCount.desc(), room.roomId.asc()) .limit(limit) .fetch(); } @Override - public List findRoomsByCategoryOrderByMemberCount(String categoryVal, int limit, Long userId) { + public List findRoomsByCategoryOrderByMemberCount(Category category, int limit, Long userId) { return queryFactory .select(new QRoomQueryDto( room.roomId, @@ -387,8 +384,7 @@ public List findRoomsByCategoryOrderByMemberCount(String categoryV )) .from(room) .join(room.bookJpaEntity, book) - .join(room.categoryJpaEntity, category) - .where(findDeadlinePopularRoomCondition(categoryVal, userId)) + .where(findDeadlinePopularRoomCondition(category, userId)) .orderBy(room.memberCount.desc(), room.startDate.asc(), room.roomId.asc()) .limit(limit) .fetch(); @@ -424,8 +420,8 @@ public List findRoomsByIsbnOrderByStartDateAsc(String isbn, LocalD .fetch(); } - private BooleanExpression findDeadlinePopularRoomCondition(String categoryVal, Long userId) { - return room.categoryJpaEntity.value.eq(categoryVal) + private BooleanExpression findDeadlinePopularRoomCondition(Category category, Long userId) { + return room.category.eq(category) .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 .and(room.isPublic.isTrue()) // 공개 방만 조회 .and(userJoinedRoom(userId).not()) // 유저가 참여하지 않은 방만 조회 diff --git a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/record/RecordQueryRepositoryImpl.java b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/record/RecordQueryRepositoryImpl.java index 98bb895f8..66e899449 100644 --- a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/record/RecordQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/repository/record/RecordQueryRepositoryImpl.java @@ -23,7 +23,6 @@ import static konkuk.thip.post.domain.PostType.RECORD; import static konkuk.thip.post.domain.PostType.VOTE; - @Repository @RequiredArgsConstructor public class RecordQueryRepositoryImpl implements RecordQueryRepository { @@ -193,11 +192,11 @@ private QRoomPostQueryDto selectPostQueryDto() { pageExpr(), user.userId, user.nickname, - user.aliasForUserJpaEntity.imageUrl, + user.alias, post.content, post.likeCount, post.commentCount, isOverviewExpr().eq(1) ); } -} \ No newline at end of file +} diff --git a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java index f07dd726f..6864dcb79 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java +++ b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java @@ -42,12 +42,12 @@ public class UserJpaEntity extends BaseJpaEntity { @Column(nullable = false) private Alias alias; - public void updateIncludeAliasFrom(User user, Alias alias) { + public void updateIncludeAliasFrom(User user) { this.nickname = user.getNickname(); this.nicknameUpdatedAt = user.getNicknameUpdatedAt(); this.role = UserRole.from(user.getUserRole()); this.followerCount = user.getFollowerCount(); - this.alias = alias; + this.alias = user.getAlias(); } public void updateFrom(User user) { diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingCommandPersistenceAdapter.java index c56ad147c..762af4f1f 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingCommandPersistenceAdapter.java @@ -6,7 +6,6 @@ import konkuk.thip.user.adapter.out.mapper.FollowingMapper; import konkuk.thip.user.adapter.out.mapper.UserMapper; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; import konkuk.thip.user.application.port.out.FollowingCommandPort; import konkuk.thip.user.domain.Following; @@ -25,7 +24,6 @@ public class FollowingCommandPersistenceAdapter implements FollowingCommandPort private final FollowingJpaRepository followingJpaRepository; private final UserJpaRepository userJpaRepository; - private final AliasJpaRepository aliasJpaRepository; private final FollowingMapper followingMapper; private final UserMapper userMapper; diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java index 16bb53ec9..81ba898d5 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java @@ -2,10 +2,12 @@ import konkuk.thip.common.util.CursorBasedList; import konkuk.thip.common.util.DateUtil; +import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.application.port.out.dto.FollowingQueryDto; import konkuk.thip.user.application.port.out.dto.UserQueryDto; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; import konkuk.thip.user.application.port.out.FollowingQueryPort; +import konkuk.thip.user.domain.Alias; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -44,7 +46,10 @@ public CursorBasedList getFollowingByUserId(Long userId, String cu @Override public List getLatestFollowerImageUrls(Long userId, int size) { - return followingJpaRepository.findLatestFollowerImageUrls(userId, size); + return followingJpaRepository.findLatestFollowers(userId, size).stream() + .map(UserJpaEntity::getAlias) + .map(Alias::getImageUrl) + .toList(); } @Override diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java index 018e3ec16..ee76028d1 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserCommandPersistenceAdapter.java @@ -53,13 +53,7 @@ public void update(User user) { () -> new EntityNotFoundException(USER_NOT_FOUND) ); - aliasJpaRepository.findByValue(user.getAlias().getValue()).ifPresentOrElse( - aliasJpaEntity -> userJpaEntity.updateIncludeAliasFrom(user, aliasJpaEntity), - () -> { - throw new EntityNotFoundException(ALIAS_NOT_FOUND); - } - ); - + userJpaEntity.updateIncludeAliasFrom(user); userJpaRepository.save(userJpaEntity); } } diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java index ef7a38346..d95bce510 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/UserQueryPersistenceAdapter.java @@ -5,7 +5,6 @@ import konkuk.thip.user.adapter.out.persistence.function.ReactionQueryFunction; import konkuk.thip.user.application.port.out.dto.ReactionQueryDto; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; import konkuk.thip.user.application.port.out.UserQueryPort; import konkuk.thip.user.application.port.out.dto.UserQueryDto; import lombok.RequiredArgsConstructor; @@ -41,11 +40,6 @@ public Set findUserIdsParticipatedInRoomsByBookId(Long bookId) { return userJpaRepository.findUserIdsByBookId(bookId); } - @Override - public UserViewAliasChoiceResult getAllAliasesAndCategories() { - return aliasJpaRepository.getAllAliasesAndCategories(); - } - @Override public List findUsersByNicknameOrderByAccuracy(String keyword, Long userId, Integer size) { return userJpaRepository.findUsersByNicknameOrderByAccuracy(keyword, userId, size); diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/UserQueryRepositoryImpl.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/UserQueryRepositoryImpl.java index 11bb0f6ba..d796d52df 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/UserQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/UserQueryRepositoryImpl.java @@ -7,13 +7,10 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import konkuk.thip.comment.adapter.out.jpa.QCommentJpaEntity; import konkuk.thip.common.entity.StatusType; -import konkuk.thip.feed.adapter.out.jpa.QFeedJpaEntity; import konkuk.thip.post.adapter.out.jpa.QPostJpaEntity; import konkuk.thip.post.adapter.out.jpa.QPostLikeJpaEntity; import konkuk.thip.room.adapter.out.jpa.QRoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.QRoomParticipantJpaEntity; -import konkuk.thip.user.adapter.out.jpa.QAliasJpaEntity; -import konkuk.thip.user.adapter.out.jpa.QFollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.QUserJpaEntity; import konkuk.thip.user.application.port.out.dto.QReactionQueryDto; import konkuk.thip.user.application.port.out.dto.QUserQueryDto; @@ -54,7 +51,6 @@ public Set findUserIdsByBookId(Long bookId) { @Override public List findUsersByNicknameOrderByAccuracy(String keyword, Long userId, Integer size) { QUserJpaEntity user = QUserJpaEntity.userJpaEntity; - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; String pattern = "%" + keyword + "%"; @@ -68,14 +64,11 @@ public List findUsersByNicknameOrderByAccuracy(String keyword, Lon .select(new QUserQueryDto( user.userId, user.nickname, - alias.imageUrl, - alias.value, - alias.color, + user.alias, user.followerCount, user.createdAt )) .from(user) - .leftJoin(user.aliasForUserJpaEntity, alias) .where(user.nickname.like(pattern) .and(user.userId.ne(userId)) .and(user.status.eq(StatusType.ACTIVE))) diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepository.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepository.java index c4bd3cf52..a2d8cd7fa 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepository.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepository.java @@ -1,6 +1,7 @@ package konkuk.thip.user.adapter.out.persistence.repository.following; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; +import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.application.port.out.dto.FollowingQueryDto; import konkuk.thip.user.application.port.out.dto.UserQueryDto; @@ -14,7 +15,7 @@ public interface FollowingQueryRepository { List findFollowerDtosByUserIdBeforeCreatedAt(Long userId, LocalDateTime cursor, int size); List findFollowingDtosByUserIdBeforeCreatedAt(Long userId, LocalDateTime cursor, int size); - List findLatestFollowerImageUrls(Long userId, int size); + List findLatestFollowers(Long userId, int size); List findAllFollowingUsersOrderByFollowedAtDesc(Long userId); } diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepositoryImpl.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepositoryImpl.java index 3eb5650c3..28638b0fe 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/repository/following/FollowingQueryRepositoryImpl.java @@ -4,9 +4,9 @@ import com.querydsl.jpa.impl.JPAQueryFactory; import konkuk.thip.common.entity.StatusType; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; -import konkuk.thip.user.adapter.out.jpa.QAliasJpaEntity; import konkuk.thip.user.adapter.out.jpa.QFollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.QUserJpaEntity; +import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.application.port.out.dto.FollowingQueryDto; import konkuk.thip.user.application.port.out.dto.QFollowingQueryDto; import konkuk.thip.user.application.port.out.dto.QUserQueryDto; @@ -61,7 +61,6 @@ public List findFollowingDtosByUserIdBeforeCreatedAt(Long userId, private List findFollowDtos(Long userId, LocalDateTime cursor, int size, boolean isFollowerQuery) { QFollowingJpaEntity following = QFollowingJpaEntity.followingJpaEntity; QUserJpaEntity user = QUserJpaEntity.userJpaEntity; - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; BooleanBuilder condition = new BooleanBuilder() .and((isFollowerQuery ? following.followingUserJpaEntity.userId.eq(userId) : following.userJpaEntity.userId.eq(userId))) @@ -77,15 +76,12 @@ private List findFollowDtos(Long userId, LocalDateTime cursor, int .select(new QUserQueryDto( targetUser.userId, targetUser.nickname, - alias.imageUrl, - alias.value, - alias.color, + targetUser.alias, targetUser.followerCount, following.createdAt )) .from(following) .leftJoin(targetUser, user) - .leftJoin(user.aliasForUserJpaEntity, alias) .where(condition) .orderBy(following.createdAt.desc()) .limit(size + 1) @@ -93,16 +89,14 @@ private List findFollowDtos(Long userId, LocalDateTime cursor, int } @Override - public List findLatestFollowerImageUrls(Long userId, int size) { + public List findLatestFollowers(Long userId, int size) { QFollowingJpaEntity following = QFollowingJpaEntity.followingJpaEntity; QUserJpaEntity follower = QUserJpaEntity.userJpaEntity; // userId 를 팔로우하는 사람들(= follower) - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; return jpaQueryFactory - .select(alias.imageUrl) + .select(follower) .from(following) .join(following.userJpaEntity, follower) - .join(follower.aliasForUserJpaEntity, alias) .where(following.followingUserJpaEntity.userId.eq(userId) .and(following.status.eq(StatusType.ACTIVE))) .orderBy(following.createdAt.desc()) @@ -114,18 +108,16 @@ public List findLatestFollowerImageUrls(Long userId, int size) { public List findAllFollowingUsersOrderByFollowedAtDesc(Long userId) { QFollowingJpaEntity following = QFollowingJpaEntity.followingJpaEntity; QUserJpaEntity followingTargetUser = QUserJpaEntity.userJpaEntity; - QAliasJpaEntity alias = QAliasJpaEntity.aliasJpaEntity; return jpaQueryFactory.select(new QFollowingQueryDto( following.userJpaEntity.userId, followingTargetUser.userId, followingTargetUser.nickname, - alias.imageUrl, + followingTargetUser.alias, following.createdAt )) .from(following) .join(following.followingUserJpaEntity, followingTargetUser) - .join(followingTargetUser.aliasForUserJpaEntity, alias) .where( following.userJpaEntity.userId.eq(userId) .and(following.userJpaEntity.status.eq(StatusType.ACTIVE)) diff --git a/src/main/java/konkuk/thip/user/application/port/out/UserQueryPort.java b/src/main/java/konkuk/thip/user/application/port/out/UserQueryPort.java index e83d76c3c..29be62336 100644 --- a/src/main/java/konkuk/thip/user/application/port/out/UserQueryPort.java +++ b/src/main/java/konkuk/thip/user/application/port/out/UserQueryPort.java @@ -18,8 +18,6 @@ public interface UserQueryPort { Set findUserIdsParticipatedInRoomsByBookId(Long bookId); - UserViewAliasChoiceResult getAllAliasesAndCategories(); - List findUsersByNicknameOrderByAccuracy(String keyword, Long userId, Integer size); CursorBasedList findLikeReactionsByUserId(Long userId, Cursor cursor, String label); From 5ad40d81fcea7af7908d60111ad25bd761aab362 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 03:01:46 +0900 Subject: [PATCH 08/45] [refactor] EnumMappings, TagList (#257) --- .../java/konkuk/thip/common/util/EnumMappings.java | 8 ++++++++ src/main/java/konkuk/thip/feed/domain/TagList.java | 14 +++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/konkuk/thip/common/util/EnumMappings.java b/src/main/java/konkuk/thip/common/util/EnumMappings.java index ff8bb09e2..b2490fe6e 100644 --- a/src/main/java/konkuk/thip/common/util/EnumMappings.java +++ b/src/main/java/konkuk/thip/common/util/EnumMappings.java @@ -106,4 +106,12 @@ public static Alias aliasFrom(Category category) { public static Category categoryFrom(Tag tag) { return tagToCategory.get(tag); } + + public static Map> getCategoryToTags() { + return Collections.unmodifiableMap(categoryToTags); + } + + public static Map getAliasToCategory() { + return Collections.unmodifiableMap(aliasToCategory); + } } diff --git a/src/main/java/konkuk/thip/feed/domain/TagList.java b/src/main/java/konkuk/thip/feed/domain/TagList.java index 1a87cffc1..bed1551a1 100644 --- a/src/main/java/konkuk/thip/feed/domain/TagList.java +++ b/src/main/java/konkuk/thip/feed/domain/TagList.java @@ -1,13 +1,13 @@ package konkuk.thip.feed.domain; import konkuk.thip.common.exception.InvalidStateException; -import konkuk.thip.feed.domain.Tag; import java.io.Serial; import java.io.Serializable; import java.util.*; import static konkuk.thip.common.exception.code.ErrorCode.INVALID_FEED_COMMAND; +import static konkuk.thip.common.exception.code.ErrorCode.TAG_SHOULD_BE_UNIQUE; public final class TagList extends AbstractList implements Serializable { @@ -31,19 +31,23 @@ public static TagList empty() { return new TagList(List.of()); } - private void validate() { + // todo presignedURL 도입 전 임시 유효성 검증 메서드 + public static void validateTags(List tags) { if (tags.size() > MAX_SIZE) { throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("태그는 최대 " + MAX_SIZE + "개까지 입력할 수 있습니다.")); } - long distinctCount = tags.stream().distinct().count(); if (distinctCount != tags.size()) { throw new InvalidStateException(INVALID_FEED_COMMAND, - new IllegalArgumentException("태그는 중복될 수 없습니다.")); + new IllegalArgumentException(TAG_SHOULD_BE_UNIQUE.getMessage())); } } + private void validate() { + validateTags(tags); + } + public List toUnmodifiableList() { return List.copyOf(tags); } @@ -100,4 +104,4 @@ public void clear() { public Iterator iterator() { return tags.iterator(); } -} \ No newline at end of file +} From 071a2f27017fdfdc895dfa01a9f78bb7e729f54c Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 03:03:06 +0900 Subject: [PATCH 09/45] =?UTF-8?q?[refactor]=20service,=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=EA=B3=84=EC=B8=B5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/mapper/FeedQueryMapper.java | 17 +++---- .../service/FeedCreateService.java | 5 +- .../service/FeedUpdateService.java | 4 +- .../java/konkuk/thip/feed/domain/Feed.java | 47 ++++++++++--------- .../in/dto/UserViewAliasChoiceResult.java | 2 +- .../service/UserViewAliasChoiceService.java | 20 ++++++-- 6 files changed, 59 insertions(+), 36 deletions(-) diff --git a/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java b/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java index d13b9dbcc..2989f913c 100644 --- a/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java +++ b/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java @@ -5,10 +5,11 @@ import konkuk.thip.feed.adapter.in.web.response.*; import konkuk.thip.feed.application.port.in.dto.TagsWithCategoryResult; import konkuk.thip.feed.application.port.out.dto.FeedQueryDto; -import konkuk.thip.feed.application.port.out.dto.TagCategoryQueryDto; import konkuk.thip.feed.domain.Feed; import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.feed.domain.value.ContentList; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.domain.Alias; import konkuk.thip.user.domain.User; import org.mapstruct.*; @@ -111,18 +112,18 @@ default String[] mapContentList(ContentList contentList) { } @Named("mapTagList") - default String[] mapTagList(List tagList) { + default String[] mapTagList(TagList tagList) { if (tagList == null) return new String[0]; return tagList.stream().map(Tag::getValue).toArray(String[]::new); } - default List toTagsWithCategoryResult(List rows) { - Map> grouped = rows.stream() + default List toTagsWithCategoryResult(Map> categoryToTags) { + Map> grouped = categoryToTags.entrySet().stream() .collect(Collectors.groupingBy( - TagCategoryQueryDto::categoryValue, - Collectors.mapping( - TagCategoryQueryDto::tagValue, - Collectors.toCollection(LinkedHashSet::new) + e -> e.getKey().getValue(), + Collectors.flatMapping( + e -> e.getValue().stream().map(Tag::getValue), + Collectors.toSet() ) )); diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java b/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java index 9818a5311..7af86cb11 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java @@ -9,6 +9,8 @@ import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.application.port.out.S3CommandPort; import konkuk.thip.feed.domain.Feed; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.feed.domain.value.ContentList; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -32,7 +34,8 @@ public class FeedCreateService implements FeedCreateUseCase { public Long createFeed(FeedCreateCommand command, List images) { // 1. 피드 생성 비지니스 정책 검증 - Feed.validateTags(command.tagList()); + TagList.validateTags(Tag.fromList(command.tagList())); + // todo 나중에 presignedURL로 바꾸면 ContentList.of로 변경 ContentList.validateImageCount(images != null ? images.size() : 0); // 2. Book 검증 및 조회 diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java b/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java index 0bfd0ce75..6d1bb4601 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java @@ -5,6 +5,8 @@ import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.application.port.out.S3CommandPort; import konkuk.thip.feed.domain.Feed; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.feed.domain.value.ContentList; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -24,7 +26,7 @@ public class FeedUpdateService implements FeedUpdateUseCase { public Long updateFeed(FeedUpdateCommand command) { //1. 유효성 검증 - Feed.validateTags(command.tagList()); + TagList.validateTags(Tag.fromList(command.tagList())); ContentList.validateImageCount(command.remainImageUrls() != null ? command.remainImageUrls().size() : 0); // 2. 피드 조회 diff --git a/src/main/java/konkuk/thip/feed/domain/Feed.java b/src/main/java/konkuk/thip/feed/domain/Feed.java index 4a9f88faf..7be6cb29c 100644 --- a/src/main/java/konkuk/thip/feed/domain/Feed.java +++ b/src/main/java/konkuk/thip/feed/domain/Feed.java @@ -62,11 +62,9 @@ public int hashCode() { public static Feed withoutId(String content, Long creatorId, Boolean isPublic, Long targetBookId, List tagValues, List imageUrls) { - validateTags(tagValues); +// validateTags(tagValues); // validateImageCount(imageUrls != null ? imageUrls.size() : 0); - List tags = Tag.fromList(tagValues); - return Feed.builder() .id(null) .content(content) @@ -76,32 +74,40 @@ public static Feed withoutId(String content, Long creatorId, Boolean isPublic, L .likeCount(0) .commentCount(0) .targetBookId(targetBookId) - .tagList(TagList.of(tags)) + .tagList(convertToTagList(tagValues)) .contentList(convertToContentList(imageUrls)) .build(); } + private static TagList convertToTagList(List tagValues) { + if (tagValues == null || tagValues.isEmpty()) { + return TagList.empty(); + } + List tags = Tag.fromList(tagValues); + return TagList.of(tags); + } + private static ContentList convertToContentList(List imageUrls) { if (imageUrls == null) return ContentList.empty(); return ContentList.of(imageUrls); } - public static void validateTags(List tagList) { - boolean tagListEmpty = (tagList == null || tagList.isEmpty()); - - // 태그가 있는 경우, 개수 최대 5개 제한 - if (!tagListEmpty && tagList.size() > 5) { - throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("태그는 최대 5개까지 입력할 수 있습니다.")); - } - - // 태그 중복 체크 - if (!tagListEmpty) { - long distinctCount = tagList.stream().distinct().count(); - if (distinctCount != tagList.size()) { - throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("태그는 중복 될 수 없습니다.")); - } - } - } +// public static void validateTags(List tagList) { +// boolean tagListEmpty = (tagList == null || tagList.isEmpty()); +// +// // 태그가 있는 경우, 개수 최대 5개 제한 +// if (!tagListEmpty && tagList.size() > 5) { +// throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("태그는 최대 5개까지 입력할 수 있습니다.")); +// } +// +// // 태그 중복 체크 +// if (!tagListEmpty) { +// long distinctCount = tagList.stream().distinct().count(); +// if (distinctCount != tagList.size()) { +// throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("태그는 중복 될 수 없습니다.")); +// } +// } +// } // // public static void validateImageCount(int imageSize) { // if (imageSize > 3) { @@ -149,7 +155,6 @@ public void updateVisibility(Long userId, Boolean isPublic) { public void updateTags(Long userId, List newTagValues) { validateCreator(userId); - validateTags(newTagValues); List tags = Tag.fromList(newTagValues); this.tagList = TagList.of(tags); } diff --git a/src/main/java/konkuk/thip/user/application/port/in/dto/UserViewAliasChoiceResult.java b/src/main/java/konkuk/thip/user/application/port/in/dto/UserViewAliasChoiceResult.java index ea93e4495..dce23f985 100644 --- a/src/main/java/konkuk/thip/user/application/port/in/dto/UserViewAliasChoiceResult.java +++ b/src/main/java/konkuk/thip/user/application/port/in/dto/UserViewAliasChoiceResult.java @@ -7,7 +7,7 @@ public record UserViewAliasChoiceResult(List aliasChoices) { public record AliasChoice( String aliasName, String categoryName, - String imageUrl, + String imageUrl, // 칭호 이미지 url String aliasColor ) {} } diff --git a/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java b/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java index 50c64cd2f..50c96c984 100644 --- a/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java +++ b/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java @@ -1,19 +1,31 @@ package konkuk.thip.user.application.service; +import konkuk.thip.common.util.EnumMappings; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.application.port.in.UserViewAliasChoiceUseCase; import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; -import konkuk.thip.user.application.port.out.UserQueryPort; +import konkuk.thip.user.domain.Alias; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Map; + @Service @RequiredArgsConstructor public class UserViewAliasChoiceService implements UserViewAliasChoiceUseCase { - private final UserQueryPort userQueryPort; - @Override public UserViewAliasChoiceResult getAllAliasesAndCategories() { - return userQueryPort.getAllAliasesAndCategories(); + Map aliasToCategory = EnumMappings.getAliasToCategory(); + + return new UserViewAliasChoiceResult( + aliasToCategory.entrySet().stream() + .map(entry -> new UserViewAliasChoiceResult.AliasChoice( + entry.getKey().getValue(), + entry.getValue().getValue(), + entry.getKey().getImageUrl(), + entry.getKey().getColor() + )).toList() + ); } } From ed9b29212b9c7ebab70a5d889b652da71228c148 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 03:03:30 +0900 Subject: [PATCH 10/45] =?UTF-8?q?[feat]=20error=20code=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/konkuk/thip/common/exception/code/ErrorCode.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java index d57378a74..6eb0a5e3c 100644 --- a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java +++ b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java @@ -159,6 +159,7 @@ public enum ErrorCode implements ResponseCode { FEED_ALREADY_SAVED(HttpStatus.BAD_REQUEST, 160006, "사용자가 이미 저장한 피드입니다."), FEED_NOT_SAVED_CANNOT_DELETE(HttpStatus.BAD_REQUEST, 160007, "사용자가 저장하지 않은 피드는 저장삭제 할 수 없습니다."), FEED_CAN_NOT_SHOW_PRIVATE_ONE(HttpStatus.BAD_REQUEST, 160008, "비공개 피드는 피드 작성자 이외에는 조회할 수 없습니다."), + TAG_SHOULD_BE_UNIQUE(HttpStatus.BAD_REQUEST, 160009, "피드에 등록된 태그는 중복될 수 없습니다."), /** * 165000: ContentList error From e71d7418d5ae37da959ce08b02aa06b3f280197b Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 03:04:12 +0900 Subject: [PATCH 11/45] =?UTF-8?q?[refactor]=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/BookChangeSavedApiTest.java | 10 +- .../in/web/BookDetailSearchApiTest.java | 20 ++-- .../in/web/BookGetSelectableListApiTest.java | 12 +- .../in/web/BookMostSearchedBooksApiTest.java | 12 +- .../in/web/BookRecruitingRoomApiTest.java | 26 ++--- .../adapter/in/web/BookSearchApiTest.java | 10 +- .../in/web/BookShowSavedListApiTest.java | 8 +- .../web/CommentChangeLikeStatusApiTest.java | 14 +-- .../adapter/in/web/CommentCreateApiTest.java | 16 +-- .../in/web/CommentCreateControllerTest.java | 16 +-- .../adapter/in/web/CommentDeleteApiTest.java | 16 +-- .../adapter/in/web/CommentShowAllApiTest.java | 12 +- .../thip/common/util/TestEntityFactory.java | 78 +++++++++---- .../in/web/BasicFeedShowAllApiTest.java | 14 +-- .../in/web/FeedChangeLikeStatusApiTest.java | 7 +- .../in/web/FeedChangeSavedApiTest.java | 15 +-- .../adapter/in/web/FeedCreateApiTest.java | 60 ++-------- .../in/web/FeedCreateControllerTest.java | 13 +-- .../adapter/in/web/FeedDeleteApiTest.java | 6 +- .../in/web/FeedRelatedWithBookApiTest.java | 35 +++--- .../adapter/in/web/FeedShowMineApiTest.java | 14 +-- .../in/web/FeedShowSavedListApiTest.java | 9 +- .../adapter/in/web/FeedShowSingleApiTest.java | 39 +++---- .../in/web/FeedShowSpecificUserApiTest.java | 14 +-- .../in/web/FeedShowUserInfoApiTest.java | 24 ++-- .../in/web/FeedShowWriteInfoApiTest.java | 108 ++++++++++------- .../adapter/in/web/FeedUpdateApiTest.java | 43 +++---- .../in/web/FeedUpdateControllerTest.java | 25 ++-- .../FollowingPriorityFeedShowAllApiTest.java | 14 +-- .../adapter/out/jpa/FeedJpaEntityTest.java | 9 +- .../konkuk/thip/feed/domain/FeedTest.java | 50 ++++---- .../in/web/RecentSearchDeleteApiTest.java | 7 +- .../in/web/RecentSearchGetApiTest.java | 7 +- .../adapter/in/web/RoomCreateApiTest.java | 67 ++++------- .../in/web/RoomGetDeadlinePopularApiTest.java | 38 ++---- .../in/web/RoomGetHomeJoinedRoomsApiTest.java | 52 +++------ .../RoomGetHomeJoinedRoomsControllerTest.java | 1 - .../in/web/RoomGetMemberListApiTest.java | 53 +++------ .../web/RoomGetMemberListControllerTest.java | 7 +- .../room/adapter/in/web/RoomJoinApiTest.java | 28 ++--- .../in/web/RoomPlayingDetailViewApiTest.java | 48 +++----- .../web/RoomPostChangeLikeStatusApiTest.java | 14 +-- ...oomPostChangeLikeStatusControllerTest.java | 15 +-- .../web/RoomRecruitingDetailViewApiTest.java | 47 +++----- .../adapter/in/web/RoomSearchApiTest.java | 15 +-- .../adapter/in/web/RoomShowMineApiTest.java | 51 +++----- .../in/web/RoomVerifyPasswordApiTest.java | 45 +++----- .../adapter/out/jpa/RoomJpaEntityTest.java | 26 ++--- .../service/RoomJoinServiceTest.java | 3 +- .../thip/room/domain/RoomParticipantTest.java | 2 +- .../konkuk/thip/room/domain/RoomTest.java | 1 - .../in/web/AttendanceCheckCreateApiTest.java | 24 ++-- .../in/web/AttendanceCheckShowApiTest.java | 20 ++-- .../in/web/RecordCreateControllerTest.java | 14 +-- .../adapter/in/web/RecordDeleteApiTest.java | 14 +-- .../adapter/in/web/RecordPinApiTest.java | 14 +-- .../adapter/in/web/RoomPostSearchApiTest.java | 22 ++-- .../roompost/adapter/in/web/VoteApiTest.java | 14 +-- .../adapter/in/web/VoteCreateApiTest.java | 16 +-- .../adapter/in/web/VoteDeleteApiTest.java | 14 +-- .../adapter/out/jpa/RecordJpaEntityTest.java | 14 +-- .../adapter/out/jpa/VoteJpaEntityTest.java | 14 +-- .../service/VoteCreateServiceTest.java | 16 +-- .../adapter/in/web/UserFollowApiTest.java | 14 +-- .../in/web/UserGetFollowersApiTest.java | 9 +- .../in/web/UserGetFollowingApiTest.java | 9 +- .../in/web/UserIsFollowingApiTest.java | 12 +- .../adapter/in/web/UserReactionApiTest.java | 20 ++-- .../adapter/in/web/UserSearchApiTest.java | 7 +- .../UserShowFollowingsInFeedViewApiTest.java | 12 +- .../in/web/UserSignupControllerTest.java | 20 +--- .../adapter/in/web/UserUpdateApiTest.java | 18 +-- .../web/UserVerifyNicknameControllerTest.java | 10 +- .../UserViewAliasChoiceControllerTest.java | 109 ++++++++++-------- .../adapter/out/jpa/UserJpaEntityTest.java | 11 +- 75 files changed, 664 insertions(+), 1059 deletions(-) diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java index 81510ee01..bec38c34f 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -45,9 +45,6 @@ class BookChangeSavedApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -67,14 +64,14 @@ class BookChangeSavedApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("User1") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); // 테스트책 미리 저장 @@ -98,7 +95,6 @@ void tearDown() { savedBookJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java index d641ab945..cf985a8bd 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java @@ -10,14 +10,14 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.book.adapter.out.jpa.SavedBookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -52,21 +52,17 @@ class BookDetailSearchApiTest { private FeedJpaRepository feedJpaRepository; @Autowired private SavedBookJpaRepository savedBookJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; @BeforeEach void setup() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("User1") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() @@ -80,7 +76,7 @@ void setup() { .description("한강의 소설") .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomJpaRepository.save(RoomJpaEntity.builder() .title("한강 독서모임") @@ -91,7 +87,7 @@ void setup() { .endDate(LocalDate.now().plusDays(30)) .recruitCount(10) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); roomParticipantJpaRepository.save(RoomParticipantJpaEntity.builder() @@ -124,8 +120,6 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -164,7 +158,7 @@ void searchDetailBooks_NoRecruitingRooms_ReturnsZero() { .endDate(LocalDate.now().minusDays(5)) .recruitCount(10) .bookJpaEntity(book) - .categoryJpaEntity(categoryJpaRepository.findAll().get(0)) + .category(Category.LITERATURE) .build(); roomJpaRepository.save(pastRoom); diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java index 97d328091..997fd5b79 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -36,10 +36,8 @@ class BookGetSelectableListApiTest { @Autowired private MockMvc mockMvc; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private SavedBookJpaRepository savedBookJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @@ -49,7 +47,7 @@ class BookGetSelectableListApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); savedBook = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("1111111111111")); joiningBook = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("2222222222222")); @@ -58,7 +56,7 @@ void setUp() { savedBookJpaRepository.save(TestEntityFactory.createSavedBook(user, savedBook)); // JOINING 책용 방 생성 - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(joiningBook, category)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, user, RoomParticipantRole.HOST, 0.0)); } @@ -86,4 +84,4 @@ void getSelectableBooks_joining_success() throws Exception { .andExpect(jsonPath("$.data.bookList.length()").value(1)) .andExpect(jsonPath("$.data.bookList[0].isbn").value(joiningBook.getIsbn())); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java index f2c84fddb..7d0aa10fd 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java @@ -6,8 +6,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -43,9 +43,6 @@ class BookMostSearchedBooksApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private RedisTemplate redisTemplate; @@ -63,7 +60,7 @@ class BookMostSearchedBooksApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") @@ -71,14 +68,13 @@ void setUp() { .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .nicknameUpdatedAt(LocalDate.now().minusMonths(1)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); } @AfterEach void tearDown() { userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -163,6 +159,4 @@ void getMostSearchedBooks_returnsEmptyList_whenNoData() throws Exception { assertThat(bookList).isNotNull(); assertThat(bookList.size()).isEqualTo(0); } - - } diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java index 863f9798f..733a03949 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -48,15 +48,9 @@ class BookRecruitingRoomApiTest { @Autowired private RoomJpaRepository roomJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Test @DisplayName("모집 중인 방 목록 조회 성공") void getRecruitingRoomsByIsbn_success() throws Exception { @@ -72,17 +66,17 @@ void getRecruitingRoomsByIsbn_success() throws Exception { .bestSeller(false) .build()); - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_999") .nickname("유저") .nicknameUpdatedAt(LocalDate.now().minusMonths(6)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity recruitingRoom = roomJpaRepository.save(RoomJpaEntity.builder() .title("모집 중 방") @@ -93,7 +87,7 @@ void getRecruitingRoomsByIsbn_success() throws Exception { .endDate(LocalDate.now().plusDays(30)) .recruitCount(5) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); RoomJpaEntity nonRecruitingRoom = roomJpaRepository.save(RoomJpaEntity.builder() @@ -105,7 +99,7 @@ void getRecruitingRoomsByIsbn_success() throws Exception { .endDate(LocalDate.now().minusDays(1)) .recruitCount(5) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); // when & then @@ -137,8 +131,8 @@ void getRecruitingRoomsWithCursor_success() throws Exception { // given String isbn = "1234567890123"; BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN(isbn)); - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Alias alias = TestEntityFactory.createLiteratureAlias(); + Category category = TestEntityFactory.createLiteratureCategory(); for (int i = 0; i < 15; i++) { roomJpaRepository.save(TestEntityFactory.createCustomRoom( @@ -172,4 +166,4 @@ void getRecruitingRoomsWithCursor_success() throws Exception { .andExpect(jsonPath("$.data.nextCursor").doesNotExist()) .andExpect(jsonPath("$.data.isLast").value(true)); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java index d30d1631b..d3d44dc43 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java @@ -9,7 +9,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -41,9 +41,6 @@ class BookSearchApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private RecentSearchJpaRepository recentSearchJpaRepository; @@ -54,14 +51,14 @@ class BookSearchApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("User1") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); RecentSearchJpaEntity recentSearch = recentSearchJpaRepository.save(RecentSearchJpaEntity.builder() @@ -77,7 +74,6 @@ void setUp() { void tearDown() { recentSearchJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java index e67760a15..d36d6d921 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -31,7 +31,6 @@ class BookShowSavedListApiTest { @Autowired private MockMvc mockMvc; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private SavedBookJpaRepository savedBookJpaRepository; @@ -40,7 +39,7 @@ class BookShowSavedListApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); savedBook = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("1111111111111")); savedBookJpaRepository.save(TestEntityFactory.createSavedBook(user, savedBook)); @@ -56,5 +55,4 @@ void getSavedBooks_success() throws Exception { .andExpect(jsonPath("$.data.bookList.length()").value(1)) .andExpect(jsonPath("$.data.bookList[0].isbn").value(savedBook.getIsbn())); } - -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java index 5aa519e4b..9169d09b0 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java @@ -14,10 +14,10 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -48,9 +48,7 @@ class CommentChangeLikeStatusApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private CommentJpaRepository commentJpaRepository; @@ -58,9 +56,9 @@ class CommentChangeLikeStatusApiTest { @Autowired private RoomJpaRepository roomJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private FeedJpaEntity feed; private BookJpaEntity book; private RoomJpaEntity room; @@ -68,9 +66,9 @@ class CommentChangeLikeStatusApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java index 9d9eb4186..4074db595 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java @@ -10,15 +10,15 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -51,9 +51,7 @@ class CommentCreateApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private VoteJpaRepository voteJpaRepository; @@ -62,11 +60,9 @@ class CommentCreateApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; - - - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private FeedJpaEntity feed; private BookJpaEntity book; private RecordJpaEntity record; @@ -75,9 +71,9 @@ class CommentCreateApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java index e2414ca91..2286e02ff 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java @@ -7,18 +7,18 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -53,9 +53,7 @@ class CommentCreateControllerTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private VoteJpaRepository voteJpaRepository; @@ -64,10 +62,9 @@ class CommentCreateControllerTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; - - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private FeedJpaEntity feed; private BookJpaEntity book; private RecordJpaEntity record; @@ -76,9 +73,9 @@ class CommentCreateControllerTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); @@ -87,7 +84,6 @@ record = recordJpaRepository.save(TestEntityFactory.createRecord(user,room)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, user, RoomParticipantRole.HOST, 0.0)); } - private Map buildValidRequest() { Map req = new HashMap<>(); req.put("content", "정상 댓글"); diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java index 401362bdd..fa0c81265 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java @@ -8,18 +8,18 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -45,9 +45,7 @@ class CommentDeleteApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private VoteJpaRepository voteJpaRepository; @@ -57,9 +55,9 @@ class CommentDeleteApiTest { @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private CommentLikeJpaRepository commentLikeJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private FeedJpaEntity feed; private BookJpaEntity book; private RecordJpaEntity record; @@ -68,9 +66,9 @@ class CommentDeleteApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); @@ -90,8 +88,6 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java index e6d930e85..3abc00d96 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -40,7 +40,6 @@ class CommentShowAllApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @@ -56,7 +55,6 @@ void tearDown() { commentJpaRepository.deleteAllInBatch(); feedJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -64,7 +62,7 @@ void tearDown() { @DisplayName("댓글 조회 요청에 대하여, 특정 게시글(= 피드, 기록, 투표)의 루트 댓글, 루트 댓글의 모든 자식 댓글의 데이터를 구분하여 반환한다.") void comment_show_all_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -120,7 +118,7 @@ void comment_show_all_test() throws Exception { @DisplayName("루트 댓글은 최신순, 루트 댓글의 모든 자식 댓글은 작성 시각순으로 정렬하여 반환한다.") void comment_show_all_ordering_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -192,7 +190,7 @@ void comment_show_all_ordering_test() throws Exception { @DisplayName("삭제된 루트 댓글의 경우, 자식 댓글이 있으면 반환하고, 없으면 반환하지 않는다.") void comment_show_all_deleted_root_comment_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -254,7 +252,7 @@ void comment_show_all_deleted_root_comment_test() throws Exception { @DisplayName("게시글에 달린 댓글이 많을 경우, 루트 댓글을 기준으로 페이징 처리 한다.") void comment_show_all_page_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); diff --git a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java index 60c4b5d8d..5900cf372 100644 --- a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java +++ b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java @@ -6,6 +6,8 @@ import konkuk.thip.comment.adapter.out.jpa.CommentLikeJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.TagList; import konkuk.thip.feed.domain.value.ContentList; import konkuk.thip.post.adapter.out.jpa.PostJpaEntity; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; @@ -15,13 +17,13 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.*; -import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.domain.Alias; import java.time.LocalDate; +import java.util.Collections; import java.util.List; import java.util.UUID; @@ -47,6 +49,10 @@ public static Category createScienceCategory() { return Category.SCIENCE_IT; } + public static List createTagsFromCategory(Category category) { + return EnumMappings.tagsFrom(category); + } + public static UserJpaEntity createUser(Alias alias) { return UserJpaEntity.builder() .nickname("테스터") @@ -274,32 +280,53 @@ public static FollowingJpaEntity createFollowing(UserJpaEntity followerUser, Use */ public static FeedJpaEntity createFeed(UserJpaEntity user, BookJpaEntity book, boolean isPublic) { - return FeedJpaEntity.builder() - .content("기본 피드 본문입니다.") - .isPublic(isPublic) - .likeCount(0) - .commentCount(0) - .reportCount(0) - .userJpaEntity(user) - .bookJpaEntity(book) - .contentList(ContentList.empty()) - .build(); +// return FeedJpaEntity.builder() +// .content("기본 피드 본문입니다.") +// .isPublic(isPublic) +// .likeCount(0) +// .commentCount(0) +// .reportCount(0) +// .userJpaEntity(user) +// .bookJpaEntity(book) +// .contentList(ContentList.empty()) +// .build(); + return createFeed(user, book, isPublic, 0, 0, Collections.emptyList(), Collections.emptyList()); } - public static FeedJpaEntity createFeedWithContents(UserJpaEntity user, BookJpaEntity book, List imageUrls, boolean isPublic) { + public static FeedJpaEntity createFeed(UserJpaEntity user, BookJpaEntity book, boolean isPublic, int likeCount, int commentCount, List imageUrls) { + +// FeedJpaEntity feed = FeedJpaEntity.builder() +// .content("이미지 포함 피드") +// .isPublic(isPublic) +// .likeCount(0) +// .commentCount(0) +// .reportCount(0) +// .userJpaEntity(user) +// .bookJpaEntity(book) +// .contentList(ContentList.of(imageUrls)) +// .build(); +// + return createFeed(user, book, isPublic, likeCount, commentCount, imageUrls, Collections.emptyList()); + } - FeedJpaEntity feed = FeedJpaEntity.builder() - .content("이미지 포함 피드") - .isPublic(isPublic) - .likeCount(0) - .commentCount(0) - .reportCount(0) - .userJpaEntity(user) - .bookJpaEntity(book) - .contentList(ContentList.of(imageUrls)) - .build(); + public static FeedJpaEntity createFeed(UserJpaEntity user, BookJpaEntity book, List imageUrls, boolean isPublic) { + +// FeedJpaEntity feed = FeedJpaEntity.builder() +// .content("이미지 포함 피드") +// .isPublic(isPublic) +// .likeCount(0) +// .commentCount(0) +// .reportCount(0) +// .userJpaEntity(user) +// .bookJpaEntity(book) +// .contentList(ContentList.of(imageUrls)) +// .build(); +// + return createFeed(user, book, isPublic, 0, 0, imageUrls, Collections.emptyList()); + } - return feed; + public static FeedJpaEntity createFeed(UserJpaEntity user, BookJpaEntity book, boolean isPublic, List tags) { + return createFeed(user, book, isPublic, 0, 0, Collections.emptyList(), tags); } /** @@ -310,7 +337,9 @@ public static FeedJpaEntity createFeed(UserJpaEntity user, boolean isPublic, int likeCount, int commentCount, - List imageUrls) { + List imageUrls, + List tags + ) { // 1) 기본 Feed 엔티티 빌드 (content, reportCount 등은 테스트용 기본값) FeedJpaEntity feed = FeedJpaEntity.builder() .content("기본 피드 본문입니다.") @@ -321,6 +350,7 @@ public static FeedJpaEntity createFeed(UserJpaEntity user, .userJpaEntity(user) .bookJpaEntity(book) .contentList(ContentList.of(imageUrls)) + .tagList(TagList.of(tags)) .build(); return feed; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java index fbf802412..4a66b221e 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java @@ -11,8 +11,8 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,9 +43,6 @@ class BasicFeedShowAllApiTest { @Autowired private MockMvc mockMvc; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -74,7 +71,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -82,7 +78,7 @@ void tearDown() { @DisplayName("피드 조회를 요청할 경우, [feedId, 작성자 닉네임, ,,] 의 피드 정보를 최신순으로 정렬해서 반환한다.") void feed_show_all_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -147,7 +143,7 @@ void feed_show_all_test() throws Exception { @DisplayName("피드는 [유저 본인이 작성한 글, 다른 모든 유저가 작성한 공개 글을 최신순] 으로 반환한다.") void feed_show_with_priority_and_order() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -209,7 +205,7 @@ void feed_show_with_priority_and_order() throws Exception { @DisplayName("request parameter의 cursor 값이 null일 경우, 첫번째 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_first_page() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -302,7 +298,7 @@ void feed_show_first_page() throws Exception { @DisplayName("request parameter의 cursor 값이 존재할 경우, 해당 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_with_cursor() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java index ae6b93346..00e8e80a0 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java @@ -10,7 +10,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -29,8 +29,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -42,7 +40,6 @@ class FeedChangeLikeStatusApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @@ -56,7 +53,7 @@ class FeedChangeLikeStatusApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java index 257b7a87e..622e392f1 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java @@ -8,13 +8,12 @@ import konkuk.thip.feed.adapter.in.web.request.FeedIsSavedRequest; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -45,11 +44,8 @@ class FeedChangeSavedApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private TagJpaRepository tagJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private SavedFeedJpaRepository savedFeedJpaRepository; @@ -59,13 +55,10 @@ class FeedChangeSavedApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "소설추천")); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "책추천")); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, "오늘의책")); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java index 304274b8c..aa6c0ec52 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java @@ -8,12 +8,10 @@ import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.FeedTag.FeedTagJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -39,7 +37,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -54,54 +51,31 @@ class FeedCreateApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; - @Autowired - private TagJpaRepository tagJpaRepository; - @Autowired private FeedJpaRepository feedJpaRepository; - @Autowired - private FeedTagJpaRepository feedTagJpaRepository; - - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,CLASSIC_LITERATURE.getValue())); - } @AfterEach void tearDown() { - feedTagJpaRepository.deleteAll(); feedJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); - tagJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } - @Test @DisplayName("isbn 에 해당하는 책이 DB에 존재할 때, 해당 책과 연관된 피드를 생성할 수 있다.") void createFeedWithBookExistsInDB() throws Exception { @@ -113,7 +87,6 @@ void createFeedWithBookExistsInDB() throws Exception { request.put("isbn", "9788954682152"); // 책 ISBN request.put("contentBody", "이 책 정말 좋아요."); request.put("isPublic", true); - request.put("category", "문학"); //실제 카테고리 값 request.put("tagList", List.of(KOREAN_NOVEL.getValue(), FOREIGN_NOVEL.getValue(), CLASSIC_LITERATURE.getValue())); //실제 태그 값 MockMultipartFile requestPart = new MockMultipartFile( @@ -157,7 +130,6 @@ void createFeedWithBookNotExists_usesExternalAPI() throws Exception { request.put("isbn", isbn); request.put("contentBody", "외부 API를 통해 등록된 책 피드입니다."); request.put("isPublic", true); - request.put("category", "문학"); //실제 카테고리 값 request.put("tagList", List.of(KOREAN_NOVEL.getValue(), FOREIGN_NOVEL.getValue(), CLASSIC_LITERATURE.getValue())); //실제 태그 값 MockMultipartFile requestPart = new MockMultipartFile( @@ -210,7 +182,6 @@ void createFeedWithImages_createsContentEntities() throws Exception { request.put("isbn", "9788954682152"); // 책 ISBN request.put("contentBody", "이미지 테스트 피드"); request.put("isPublic", true); - request.put("category", "문학"); //실제 카테고리 값 request.put("tagList", List.of(KOREAN_NOVEL.getValue())); //실제 태그 값 MockMultipartFile requestPart = new MockMultipartFile( @@ -269,7 +240,6 @@ void createFeedWithoutImages_shouldHaveEmptyContentList() throws Exception { request.put("isbn", "9788954682152"); request.put("contentBody", "이미지 없는 피드"); request.put("isPublic", true); - request.put("category", "문학"); request.put("tagList", List.of(KOREAN_NOVEL.getValue())); //실제 태그 값 MockMultipartFile requestPart = new MockMultipartFile( @@ -299,7 +269,7 @@ void createFeedWithoutImages_shouldHaveEmptyContentList() throws Exception { @Test - @DisplayName("피드 생성시, 태그가 들어오면 feed_tags 매핑 테이블에 정상적으로 3개의 태그가 저장된된 후 관련 피드를 생성할 수 있다.") + @DisplayName("피드 생성시 태그가 들어오면, 태그를 포함한 피드가 DB에 저장된다.") void createFeedWithTags_createsFeedTagMappings() throws Exception { // given @@ -309,7 +279,6 @@ void createFeedWithTags_createsFeedTagMappings() throws Exception { request.put("isbn", "9788954682152"); request.put("contentBody", "태그 매핑 테스트 중입니다."); request.put("isPublic", true); - request.put("category", "문학"); request.put("tagList", List.of(KOREAN_NOVEL.getValue(), FOREIGN_NOVEL.getValue(), CLASSIC_LITERATURE.getValue())); //실제 태그 값 MockMultipartFile requestPart = new MockMultipartFile( @@ -341,15 +310,12 @@ void createFeedWithTags_createsFeedTagMappings() throws Exception { assertThat(feedJpaEntity.getIsPublic()).isTrue(); assertThat(feedJpaEntity.getPostId()).isEqualTo(postId); - // DB에 feed_tags 저장되었는지 확인 - long mappingCount = feedTagJpaRepository.findAll().stream() - .filter(f -> f.getFeedJpaEntity().getPostId().equals(postId)) - .count(); - assertThat(mappingCount).isEqualTo(3); + // 저장된 피드가 3개의 태그를 가지는지 확인 + assertThat(feedJpaEntity.getTagList().toUnmodifiableList().size()).isEqualTo(3); } @Test - @DisplayName("카테고리와 태그가 없는 피드는 feed_tags 매핑이 없어야 한다.") + @DisplayName("태그가 없는 피드는 태그가 없는 채로 DB에 저장된다.") void createFeedWithoutTags_shouldNotHaveFeedTags() throws Exception { // given bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); @@ -358,7 +324,6 @@ void createFeedWithoutTags_shouldNotHaveFeedTags() throws Exception { request.put("isbn", "9788954682152"); request.put("contentBody", "태그 없는 피드"); request.put("isPublic", true); - request.put("category", ""); // 카테고리 없이 request.put("tagList", List.of()); // 태그 없음 MockMultipartFile requestPart = new MockMultipartFile( @@ -382,12 +347,7 @@ void createFeedWithoutTags_shouldNotHaveFeedTags() throws Exception { JsonNode root = objectMapper.readTree(json); Long postId = root.path("data").path("feedId").asLong(); - long feedTagCount = feedTagJpaRepository.findAll().stream() - .filter(f -> f.getFeedJpaEntity().getPostId().equals(postId)) - .count(); - - assertThat(feedTagCount).isEqualTo(0); // feed_tags 매핑 없음 + FeedJpaEntity feedJpaEntity = feedJpaRepository.findById(postId).orElse(null); + assertThat(feedJpaEntity.getTagList().toUnmodifiableList().size()).isEqualTo(0); } - - } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java index 42c718ea9..7a67a291a 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java @@ -1,6 +1,7 @@ package konkuk.thip.feed.adapter.in.web; import com.fasterxml.jackson.databind.ObjectMapper; +import konkuk.thip.feed.domain.Tag; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -35,14 +36,13 @@ class FeedCreateControllerTest { @Autowired private ObjectMapper objectMapper; - private Map buildValidRequest() { Map request = new HashMap<>(); request.put("isbn", "9788954682152"); request.put("contentBody", "테스트 콘텐츠"); request.put("isPublic", true); request.put("category", "문학"); - request.put("tagList", List.of("책추천", "소설추천")); + request.put("tagList", List.of(Tag.PHYSICS.getValue(), Tag.CHEMISTRY.getValue())); return request; } @@ -108,7 +108,8 @@ class TagValidation { @DisplayName("태그가 6개 이상이면 400 반환") void tooManyTags() throws Exception { Map req = buildValidRequest(); - req.put("tagList", List.of("1", "2", "3", "4", "5", "6")); + req.put("tagList", List.of(Tag.PHYSICS.getValue(), Tag.CHEMISTRY.getValue(), Tag.BIOLOGY.getValue(), + Tag.ARCHITECTURE.getValue(), Tag.ARCHITECTURE.getValue(), Tag.DANCE.getValue())); assertBadRequest_InvalidFeedCreate(req, "태그는 최대 5개까지 입력할 수 있습니다."); } @@ -116,8 +117,8 @@ void tooManyTags() throws Exception { @DisplayName("태그가 중복되면 400 반환") void duplicatedTags() throws Exception { Map req = buildValidRequest(); - req.put("tagList", List.of("중복", "중복")); - assertBadRequest_InvalidFeedCreate(req, "태그는 중복 될 수 없습니다."); + req.put("tagList", List.of(Tag.PHYSICS.getValue(), Tag.PHYSICS.getValue())); + assertBadRequest_InvalidFeedCreate(req, TAG_SHOULD_BE_UNIQUE.getMessage()); } } @@ -142,7 +143,6 @@ void tooManyImages() throws Exception { new MockMultipartFile("images", "img4.jpg", MediaType.IMAGE_JPEG_VALUE, "4".getBytes()) ); - ResultActions result = mockMvc.perform(multipart("/feeds") .file(requestPart) .file(images.get(0)) @@ -159,5 +159,4 @@ void tooManyImages() throws Exception { } } - } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java index abab0c753..e707b9039 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java @@ -12,6 +12,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -59,7 +60,7 @@ class FeedDeleteApiTest { @BeforeEach void setUp() { - user = userJpaRepository.save(TestEntityFactory.createUser(alias)); + user = userJpaRepository.save(TestEntityFactory.createUser(Alias.ARTIST)); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user, book, true,1,1,List.of("url1", "url2", "url3"))); postLikeJpaRepository.save(TestEntityFactory.createPostLike(user,feed)); @@ -84,9 +85,6 @@ void deleteFeed_success() throws Exception { // then: 1) 피드 soft delete (status=INACTIVE) assertThat(feedJpaRepository.findByPostIdAndStatus(feed.getPostId(), INACTIVE)).isPresent(); - // 2) 피드 태그 관계 삭제 - assertTrue(feedTagJpaRepository.findAll().isEmpty()); - // 4) 댓글 삭제 soft delete assertThat(commentJpaRepository.findById(comment.getCommentId())).isPresent(); assertThat(commentJpaRepository.findById(comment.getCommentId()).get().getStatus()).isEqualTo(INACTIVE); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java index 2b00b2489..587a0f6c3 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java @@ -10,11 +10,11 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -47,15 +47,9 @@ class FeedRelatedWithBookApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -264,17 +258,17 @@ void getFeedsByBook_cursor_paging_success() throws Exception { @DisplayName("비공개 피드 제외 및 자기 자신 피드 제외 검증") void getFeedsByBook_visibility_and_self_filter() throws Exception { // given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity requester = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_req") .nickname("요청자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN(VALID_ISBN)); @@ -308,15 +302,15 @@ void getFeedsByBook_visibility_and_self_filter() throws Exception { } private TestData prepareDataForFeeds() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Alias alias = TestEntityFactory.createLiteratureAlias(); + Category category = TestEntityFactory.createLiteratureCategory(); UserJpaEntity requester = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_req") .nickname("요청자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); UserJpaEntity author = userJpaRepository.save(TestEntityFactory.createUser(alias, "작성자")); @@ -324,7 +318,7 @@ private TestData prepareDataForFeeds() { BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN(VALID_ISBN)); // 공개 피드 두 개 비공개 하나 생성 - FeedJpaEntity publicFeed1 = TestEntityFactory.createFeedWithContents( + FeedJpaEntity publicFeed1 = TestEntityFactory.createFeed( author, book, List.of("http://img/1.jpg", "http://img/2.jpg"), @@ -332,7 +326,7 @@ private TestData prepareDataForFeeds() { ); publicFeed1.updateLikeCount(7); // 좋아요 정렬을 위해 수치 조정 - FeedJpaEntity publicFeed2 = TestEntityFactory.createFeedWithContents( + FeedJpaEntity publicFeed2 = TestEntityFactory.createFeed( author, book, List.of("http://img/3.jpg"), @@ -348,15 +342,14 @@ private TestData prepareDataForFeeds() { } private TestData prepareDataManyFeeds(int count) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity requester = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_req_many") .nickname("요청자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); UserJpaEntity author = userJpaRepository.save(TestEntityFactory.createUser(alias, "작성자")); @@ -364,7 +357,7 @@ private TestData prepareDataManyFeeds(int count) { BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN(VALID_ISBN)); for (int i = 0; i < count; i++) { - FeedJpaEntity f = TestEntityFactory.createFeedWithContents( + FeedJpaEntity f = TestEntityFactory.createFeed( author, book, List.of("http://img/" + i + ".jpg"), @@ -384,4 +377,4 @@ private record TestData( FeedJpaEntity publicFeed1, FeedJpaEntity publicFeed2 ) {} -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java index ccb88be2a..f877e2bce 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java @@ -9,8 +9,8 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -40,9 +40,6 @@ class FeedShowMineApiTest { @Autowired private MockMvc mockMvc; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -71,7 +68,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -79,7 +75,7 @@ void tearDown() { @DisplayName("내 피드 조회를 요청할 경우, [feedId, 작성일, 책정보, ,,] 의 피드 정보를 최신순으로 정렬해서 반환한다.") void feed_show_mine_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); @@ -129,7 +125,7 @@ void feed_show_mine_test() throws Exception { @DisplayName("내 피드는 [유저 본인이 작성한 글을 최신순] 으로 반환한다.") void feed_show_mine_order_latest() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); @@ -193,7 +189,7 @@ void feed_show_mine_order_latest() throws Exception { @DisplayName("request parameter의 cursor 값이 null일 경우, 첫번째 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_mine_first_page() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); // 공통 Book @@ -280,7 +276,7 @@ void feed_show_mine_first_page() throws Exception { @DisplayName("request parameter의 cursor 값이 존재할 경우, 해당 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_mine_with_cursor() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); // 공통 Book diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java index ae092029f..844fe6a57 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java @@ -11,7 +11,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -41,7 +41,6 @@ class FeedShowSavedListApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @@ -55,7 +54,7 @@ class FeedShowSavedListApiTest { @DisplayName("저장된 피드 조회 시 피드 정보를 피드를 저장한 최신순으로 정렬해서 반환한다.") void saved_feed_show_test_success() throws Exception { // given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(alias, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(alias, "user1")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); @@ -122,7 +121,7 @@ void saved_feed_show_test_success() throws Exception { void saved_feed_show_with_first_page() throws Exception { // given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); @@ -178,7 +177,7 @@ void saved_feed_show_with_first_page() throws Exception { @DisplayName("request parameter의 cursor 값이 존재할 경우, 해당 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void saved_feed_show_with_cursor() throws Exception { // given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java index df639da31..6e4418df4 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java @@ -9,11 +9,11 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.feed.domain.Tag; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; -import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -47,6 +47,8 @@ class FeedShowSingleApiTest { @Autowired private SavedFeedJpaRepository savedFeedJpaRepository; @Autowired private PostLikeJpaRepository postLikeJpaRepository; + private List tags; + @AfterEach void tearDown() { postLikeJpaRepository.deleteAllInBatch(); @@ -61,19 +63,16 @@ void tearDown() { @DisplayName("단일 피드 조회를 요청할 경우, [피드 정보, 피드 작성자 정보, 피드와 연관된 태그들] 등의 정보를 반환한다.") void feed_show_single_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity feedCreator = userJpaRepository.save(TestEntityFactory.createUser(a0, "feedCreator")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); // 공통 Book // 피드 및 피드 태그 생성 - CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); - FeedJpaEntity f1 = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, true, 50, 10, List.of("content1", "content2"))); // feedCreator가 작성한 공개 피드 - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(f1, t1)); - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(f1, t2)); + Category c1 = TestEntityFactory.createScienceCategory(); + tags = List.of(Tag.PHYSICS, Tag.GENERAL_SCIENCE); + FeedJpaEntity f1 = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, true, 50, 10, List.of("content1", "content2"), tags)); // feedCreator가 작성한 공개 피드 savedFeedJpaRepository.save( SavedFeedJpaEntity.builder() @@ -92,7 +91,7 @@ void feed_show_single_test() throws Exception { .andExpect(jsonPath("$.data.contentUrls", is(List.of("content1", "content2")))) // f1의 첨부파일 이미지 2개 .andExpect(jsonPath("$.data.isSaved", is(true))) // me가 f1을 저장했음 .andExpect(jsonPath("$.data.isLiked", is(false))) // me가 f1을 좋아하지 않음 - .andExpect(jsonPath("$.data.tagList", is(List.of(t1.getValue(), t2.getValue())))); // f1의 태그 value 2개 + .andExpect(jsonPath("$.data.tagList", is(List.of(Tag.PHYSICS.getValue(), Tag.GENERAL_SCIENCE.getValue())))); // f1의 태그 value 2개 } @@ -100,19 +99,15 @@ void feed_show_single_test() throws Exception { @DisplayName("피드 작성자가 아닌 다른 유저가 비공개 피드 단일 조회 요청을 할 경우, 400 error을 반환한다.") void feed_can_not_show_private_one() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity feedCreator = userJpaRepository.save(TestEntityFactory.createUser(a0, "feedCreator")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); // 공통 Book // 피드 및 피드 태그 생성 - CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); - FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, false, 50, 10, List.of("content1", "content2"))); // feedCreator가 작성한 비공개 피드 - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t1)); - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t2)); + Category c1 = TestEntityFactory.createScienceCategory(); + FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(feedCreator, book, false, 50, 10, List.of("content1", "content2"), List.of(Tag.PHYSICS, Tag.GENERAL_SCIENCE))); // feedCreator가 작성한 비공개 피드 //when //then mockMvc.perform(get("/feeds/{feedId}", privateFeed.getPostId()) @@ -125,18 +120,14 @@ void feed_can_not_show_private_one() throws Exception { @DisplayName("피드 작성자는 비공개 피드를 단일 조회할 수 있다.") void feed_can_show_private_one_by_feed_owner() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); // 공통 Book // 피드 및 피드 태그 생성 - CategoryJpaEntity c1 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); - TagJpaEntity t1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.PHYSICS.getValue())); - TagJpaEntity t2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(c1, Tag.GENERAL_SCIENCE.getValue())); - FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(me, book, false, 50, 10, List.of("content1", "content2"))); // me가 작성한 비공개 피드 - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t1)); - feedTagJpaRepository.save(TestEntityFactory.createFeedTagMapping(privateFeed, t2)); + Category c1 = TestEntityFactory.createScienceCategory(); + FeedJpaEntity privateFeed = feedJpaRepository.save(TestEntityFactory.createFeed(me, book, false, 50, 10, List.of("content1", "content2"), List.of(Tag.PHYSICS, Tag.GENERAL_SCIENCE))); // me가 작성한 비공개 피드 //when //then mockMvc.perform(get("/feeds/{feedId}", privateFeed.getPostId()) diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java index 29160e473..6be8d6316 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java @@ -11,8 +11,8 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -42,9 +42,6 @@ class FeedShowSpecificUserApiTest { @Autowired private MockMvc mockMvc; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -73,7 +70,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -81,7 +77,7 @@ void tearDown() { @DisplayName("특정 유저의 피드 조회를 요청할 경우, [feedId, 작성일, 책정보, ,,] 의 피드 정보를 최신순으로 정렬해서 반환한다.") void feed_show_all_of_user_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); @@ -154,7 +150,7 @@ void feed_show_all_of_user_test() throws Exception { @DisplayName("특정 유저의 피드는 [해당 유저가 작성한 공개 피드를 최신순] 으로 반환한다.") void feed_show_mine_order_latest() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); @@ -217,7 +213,7 @@ void feed_show_mine_order_latest() throws Exception { @DisplayName("request parameter의 cursor 값이 null일 경우, 첫번째 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_mine_first_page() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); @@ -305,7 +301,7 @@ void feed_show_mine_first_page() throws Exception { @DisplayName("request parameter의 cursor 값이 존재할 경우, 해당 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_mine_with_cursor() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity otherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "otherUser")); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java index bacccb7b3..dc9fe0202 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java @@ -7,8 +7,8 @@ import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -35,7 +35,6 @@ class FeedShowUserInfoApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private FollowingJpaRepository followingJpaRepository; @@ -47,7 +46,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -55,8 +53,8 @@ void tearDown() { @DisplayName("내 피드에서의 유저 정보를 조회할 경우, 내 개인 정보, 나의 팔로워 정보, 내가 작성한 모든 피드 개수 를 반환한다.") void feed_show_mine_info_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity a1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); + Alias a1 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity follower1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "follower1")); UserJpaEntity follower2 = userJpaRepository.save(TestEntityFactory.createUser(a1, "follower2")); @@ -100,8 +98,8 @@ void feed_show_mine_info_test() throws Exception { @DisplayName("나를 팔로우하는 사람이 많을 경우, 팔로우 맺은 일자 기준 최신순으로 최대 5명의 팔로워 프로필 이미지만을 반환한다.") void feed_show_mine_info_follower_many_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity a1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); + Alias a1 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity follower1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "follower1")); UserJpaEntity follower2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "follower2")); @@ -164,8 +162,8 @@ void feed_show_mine_info_follower_many_test() throws Exception { @DisplayName("특정 유저 피드에서의 유저 정보를 조회할 경우, 유저 개인 정보, 유저의 팔로워 정보, 유저가 작성한 모든 '공개' 피드 개수 를 반환한다.") void feed_show_user_info_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity a1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); + Alias a1 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity anotherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "anotherUser")); UserJpaEntity follower1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "follower1")); @@ -213,8 +211,8 @@ void feed_show_user_info_test() throws Exception { @DisplayName("accessToken의 유저가 특정 유저를 팔로잉하는 경우, isFollowing은 true이다.") void feed_show_user_info_isFollowing_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity a1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); + Alias a1 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity anotherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "anotherUser")); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a1, "me")); followingJpaRepository.save(TestEntityFactory.createFollowing(me, anotherUser));// me 가 anotherUser를 follow 하는 상황 @@ -239,8 +237,8 @@ void feed_show_user_info_isFollowing_test() throws Exception { @DisplayName("특정 유저를 팔로우하는 사람이 많을 경우, 팔로우 맺은 일자 기준 최신순으로 최대 5명의 팔로워 프로필 이미지만을 반환한다.") void feed_show_user_info_follower_many_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity a1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); + Alias a1 = TestEntityFactory.createLiteratureAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity anotherUser = userJpaRepository.save(TestEntityFactory.createUser(a0, "anotherUser")); UserJpaEntity follower1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "follower1")); diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java index d610e8747..b2139a875 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java @@ -1,11 +1,12 @@ package konkuk.thip.feed.adapter.in.web; - +import com.jayway.jsonpath.JsonPath; +import konkuk.thip.common.util.EnumMappings; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.config.TestS3MockConfig; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.room.domain.Category; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -18,14 +19,16 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.transaction.annotation.Transactional; +import java.util.*; +import java.util.stream.Collectors; + import static konkuk.thip.feed.domain.Tag.*; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -37,48 +40,75 @@ class FeedShowWriteInfoApiTest { @Autowired private MockMvc mockMvc; - @Autowired private CategoryJpaRepository categoryJpaRepository; - @Autowired private TagJpaRepository tagJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; - - private AliasJpaEntity literatureAlias; - private AliasJpaEntity scienceAlias; - private CategoryJpaEntity literatureCategory; - private CategoryJpaEntity scienceCategory; + private Alias literatureAlias; + private Alias scienceAlias; + private Category literatureCategory; + private Category scienceCategory; @BeforeEach void setUp() { - literatureAlias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); - scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + literatureAlias = TestEntityFactory.createLiteratureAlias(); + scienceAlias = TestEntityFactory.createScienceAlias(); } @Test - @DisplayName("피드 작성을 위한 화면을 조회하면, DB의 카테고리별 하위 태그 리스트가 전체 반환된다.") + @DisplayName("피드 작성을 위한 화면을 조회하면, enum으로 정의된 Category/Tag 매핑이 형식과 내용 모두 정확히 반환된다.") void showFeedWriteInfo_returnsCategoryAndTags() throws Exception { + // given: SSOT인 EnumMappings에서 기대 맵을 구성 + Map> categoryToTags = EnumMappings.getCategoryToTags(); + int expectedCategoryCount = categoryToTags.size(); - // given - literatureCategory = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(literatureAlias)); - scienceCategory = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(scienceAlias)); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(literatureCategory,CLASSIC_LITERATURE.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(scienceCategory,GENERAL_SCIENCE.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(scienceCategory,PHYSICS.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag( scienceCategory,CHEMISTRY.getValue())); - - // when // then - mockMvc.perform(get("/feeds/write-info") + // when + var mvcResult = mockMvc.perform(get("/feeds/write-info") .contentType(MediaType.APPLICATION_JSON)) + // 1차: 상태 코드 및 카테고리 개수 검증(하드코딩 지양) .andExpect(status().isOk()) - .andExpect(jsonPath("$.data.categoryList", hasSize(2))) - .andExpect(jsonPath("$.data.categoryList[0].category", is(literatureCategory.getValue()))) - .andExpect(jsonPath("$.data.categoryList[0].tagList[0]", is(KOREAN_NOVEL.getValue()))) - .andExpect(jsonPath("$.data.categoryList[0].tagList[1]", is(FOREIGN_NOVEL.getValue()))) - .andExpect(jsonPath("$.data.categoryList[0].tagList[2]", is(CLASSIC_LITERATURE.getValue()))) - .andExpect(jsonPath("$.data.categoryList[1].category", is(scienceCategory.getValue()))) - .andExpect(jsonPath("$.data.categoryList[1].tagList[0]", is(GENERAL_SCIENCE.getValue()))) - .andExpect(jsonPath("$.data.categoryList[1].tagList[1]", is(PHYSICS.getValue()))) - .andExpect(jsonPath("$.data.categoryList[1].tagList[2]", is(CHEMISTRY.getValue()))); + .andExpect(jsonPath("$.data.categoryList", hasSize(expectedCategoryCount))) + .andReturn(); + + // then: 응답을 파싱하여 형식과 내용 동일성 검증 + String body = mvcResult.getResponse().getContentAsString(); + + // 스키마 형태 검증: 각 요소에 category(String), tagList(Array) 존재 + JsonPath.read(body, "$.data.categoryList[*].category"); + JsonPath.read(body, "$.data.categoryList[*].tagList"); + + // 실제 응답: category(String) -> tag(Set) + java.util.List> actualList = + JsonPath.read(body, "$.data.categoryList"); + + Map> actualMap = new HashMap<>(); + for (Map item : actualList) { + String categoryName = (String) item.get("category"); + @SuppressWarnings("unchecked") + List tags = (List) item.get("tagList"); + actualMap.put(categoryName, new HashSet<>(tags)); + } + + // 기대값: Category.getValue() -> Set + Map> expectedMap = new HashMap<>(); + for (var entry : categoryToTags.entrySet()) { + String categoryName = entry.getKey().getValue(); + Set tagValues = entry.getValue().stream() + .map(konkuk.thip.feed.domain.Tag::getValue) + .collect(Collectors.toSet()); + expectedMap.put(categoryName, tagValues); + } + + // 키(카테고리) 동일성 + assertThat( + "카테고리 키가 EnumMappings과 일치하지 않습니다.", + actualMap.keySet(), org.hamcrest.Matchers.equalTo(expectedMap.keySet()) + ); + + // 각 카테고리의 태그 집합 동등성 + for (String key : expectedMap.keySet()) { + assertThat( + "태그 목록이 일치하지 않습니다. category=" + key, + actualMap.get(key), + org.hamcrest.Matchers.equalTo(expectedMap.get(key)) + ); + } } } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java index a0ebc1536..bd8bf801d 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java @@ -7,9 +7,11 @@ import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Content.ContentJpaRepository; +import konkuk.thip.feed.domain.Tag; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -33,7 +35,6 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -53,18 +54,18 @@ class FeedUpdateApiTest { private UserJpaEntity user; private BookJpaEntity book; private FeedJpaEntity feed; + private List tags; @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); - tag1 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); - tag2 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); - tag3 = tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category, CLASSIC_LITERATURE.getValue())); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); - feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); + + tags = List.of(KOREAN_NOVEL, FOREIGN_NOVEL, CLASSIC_LITERATURE); + feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true, tags)); } @Test @@ -74,14 +75,6 @@ void updateTaggedFeed_shouldUpdateTagsCorrectly() throws Exception { // given Long feedId = feed.getPostId(); - // 기존 태그 3개 연관 - List existingTags = List.of(tag1, tag2, tag3); - List mappings = existingTags.stream() - .map(tag -> TestEntityFactory.createFeedTagMapping(feed, tag)) - .toList(); - - feedTagJpaRepository.saveAll(mappings); - // 수정 요청 Map request = new HashMap<>(); request.put("contentBody", "태그 갱신 테스트"); @@ -96,9 +89,7 @@ void updateTaggedFeed_shouldUpdateTagsCorrectly() throws Exception { // then result.andExpect(status().isOk()); - long tagCount = feedTagJpaRepository.findAll().stream() - .filter(ft -> ft.getFeedJpaEntity().getPostId().equals(feedId)) - .count(); + long tagCount = feedJpaRepository.findById(feedId).orElseThrow().getTagList().size(); assertThat(tagCount).isEqualTo(2); } @@ -113,7 +104,7 @@ void updateImageFeed_shouldRetainSomeImagesOnly() throws Exception { "https://s3-mock/image-3.jpg" ); - FeedJpaEntity feed = feedJpaRepository.save(TestEntityFactory.createFeedWithContents(user, book, originalImages, true)); + FeedJpaEntity feed = feedJpaRepository.save(TestEntityFactory.createFeed(user, book, originalImages, true)); Long feedId = feed.getPostId(); // 수정 요청: 이미지 1개만 유지 @@ -146,15 +137,9 @@ void updateFeedWithAllFields_shouldModifyEverythingCorrectly() throws Exception "https://s3-mock/image-2.jpg", "https://s3-mock/image-3.jpg" ); - FeedJpaEntity feed = feedJpaRepository.save(TestEntityFactory.createFeedWithContents(user, book, originalImages, true)); + FeedJpaEntity feed = feedJpaRepository.save(TestEntityFactory.createFeed(user, book, true, 0, 0, originalImages, tags)); Long feedId = feed.getPostId(); - // 기존 태그 3개 매핑 - List existingTags = List.of(tag1, tag2, tag3); - List tagMappings = existingTags.stream() - .map(tag -> TestEntityFactory.createFeedTagMapping(feed, tag)) - .collect(Collectors.toList()); - feedTagJpaRepository.saveAll(tagMappings); // 수정 요청: 태그 일부 삭제 & 이미지 일부 삭제 & 본문 변경 & 공개 여부 변경 Map request = new HashMap<>(); @@ -181,9 +166,7 @@ void updateFeedWithAllFields_shouldModifyEverythingCorrectly() throws Exception assertThat(updated.getContentList()).hasSize(1); assertThat(updated.getContentList().get(0)).isEqualTo("https://s3-mock/image-2.jpg"); // 4. 태그 갯수 - long tagCount = feedTagJpaRepository.findAll().stream() - .filter(tag -> tag.getFeedJpaEntity().getPostId().equals(feedId)) - .count(); + long tagCount = feedJpaRepository.findById(feedId).orElseThrow().getTagList().size(); assertThat(tagCount).isEqualTo(2); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java index b6a344020..e16518461 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java @@ -5,11 +5,10 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.adapter.out.persistence.repository.Tag.TagJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -44,11 +43,8 @@ class FeedUpdateControllerTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private TagJpaRepository tagJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; private Long savedFeedId; @@ -57,15 +53,12 @@ class FeedUpdateControllerTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,KOREAN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,FOREIGN_NOVEL.getValue())); - tagJpaRepository.save(TestEntityFactory.createLiteratureTag(category,CLASSIC_LITERATURE.getValue())); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); - savedFeedId = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)).getPostId(); + savedFeedId = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true, List.of(KOREAN_NOVEL, FOREIGN_NOVEL, CLASSIC_LITERATURE))).getPostId(); creatorUserId = user.getUserId(); } @@ -147,7 +140,8 @@ void invalidTagNames() throws Exception { @DisplayName("태그가 5개 초과일 경우 400 반환") void tooManyTags() throws Exception { Map req = buildValidUpdateRequest(); - req.put("tagList", List.of("t1","t2","t3","t4","t5","t6")); + req.put("tagList", List.of(PHYSICS.getValue(), CHEMISTRY.getValue(), KOREAN_NOVEL.getValue(), + FOREIGN_NOVEL.getValue(), CLASSIC_LITERATURE.getValue(), HISTORY.getValue())); assertBadRequest(INVALID_FEED_COMMAND.getCode(), req, "태그는 최대 5개까지 입력할 수 있습니다."); } @@ -155,8 +149,8 @@ void tooManyTags() throws Exception { @DisplayName("태그가 중복되어 있을 경우 400 반환") void duplicatedTags() throws Exception { Map req = buildValidUpdateRequest(); - req.put("tagList", List.of("중복", "중복")); - assertBadRequest(INVALID_FEED_COMMAND.getCode(), req, "태그는 중복 될 수 없습니다."); + req.put("tagList", List.of(KOREAN_NOVEL.getValue(), KOREAN_NOVEL.getValue())); + assertBadRequest(INVALID_FEED_COMMAND.getCode(), req, TAG_SHOULD_BE_UNIQUE.getMessage()); } } @@ -197,5 +191,4 @@ void invalidImageUrl() throws Exception { .andExpect(jsonPath("$.message", containsString("해당 이미지는 이 피드에 존재하지 않습니다"))); } } - } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java index bb2296885..a14e339ab 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java @@ -11,8 +11,8 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,9 +43,6 @@ class FollowingPriorityFeedShowAllApiTest { @Autowired private MockMvc mockMvc; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -74,7 +71,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -82,7 +78,7 @@ void tearDown() { @DisplayName("피드 조회를 요청할 경우, [feedId, 작성자 닉네임, ,,] 의 피드 정보를 최신순으로 정렬해서 반환한다.") void feed_show_all_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -150,7 +146,7 @@ void feed_show_all_test() throws Exception { @DisplayName("피드는 [유저 본인이 작성한 글, 유저가 팔로우하는 다른 유저가 작성한 공개 글을 최신순] 으로 반환한 후, [유저가 팔로우하지 않는 다른 유저가 작성한 공개 글을 최신순] 으로 반환한다.") void feed_show_with_priority_and_order() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -213,7 +209,7 @@ void feed_show_with_priority_and_order() throws Exception { @DisplayName("request parameter의 cursor 값이 null일 경우, 첫번째 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_first_page() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -307,7 +303,7 @@ void feed_show_first_page() throws Exception { @DisplayName("request parameter의 cursor 값이 존재할 경우, 해당 페이지에 해당하는 피드 10개와, nextCursor, last 값을 반환한다.") void feed_show_with_cursor() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); diff --git a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java index a1dd6ca20..282738411 100644 --- a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java @@ -6,8 +6,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -29,9 +29,6 @@ class FeedJpaEntityTest { @Autowired private UserJpaRepository userRepository; - @Autowired - private AliasJpaRepository aliasRepository; - @Autowired private BookJpaRepository bookRepository; @@ -42,7 +39,7 @@ class FeedJpaEntityTest { @DisplayName("FeedJpaEntity 저장 및 조회 테스트") void saveAndFindFeed() { // given - AliasJpaEntity alias = aliasRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userRepository.save(TestEntityFactory.createUser(alias)); BookJpaEntity book = bookRepository.save(TestEntityFactory.createBook()); @@ -65,4 +62,4 @@ void saveAndFindFeed() { assertThat(found.getUserJpaEntity().getNickname()).isEqualTo("테스터"); assertThat(found.getBookJpaEntity().getTitle()).isEqualTo("책제목"); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/feed/domain/FeedTest.java b/src/test/java/konkuk/thip/feed/domain/FeedTest.java index 0c228c6b0..6fdb31457 100644 --- a/src/test/java/konkuk/thip/feed/domain/FeedTest.java +++ b/src/test/java/konkuk/thip/feed/domain/FeedTest.java @@ -35,7 +35,7 @@ private Feed createPublicFeed() { .creatorId(CREATOR_ID) .content("공개 피드 입니다.") .isPublic(true) - .tagList(List.of(Tag.from(KOREAN_NOVEL.getValue()))) + .tagList(TagList.of(List.of(Tag.from(KOREAN_NOVEL.getValue())))) .contentList(ContentList.of(List.of("url1"))) .commentCount(1) .build(); @@ -61,29 +61,29 @@ private Feed createPrivateFeed() { .build(); } - @Test - @DisplayName("validateTags: 태그가 5개 초과 시 InvalidStateException이 발생한다.") - void validateTags_exceedsMax_throws() { - List tags = List.of("a", "b", "c", "d", "e", "f"); - - InvalidStateException ex = assertThrows(InvalidStateException.class, - () -> Feed.validateTags(tags)); - - assertEquals(INVALID_FEED_COMMAND, ex.getErrorCode()); - assertTrue(ex.getCause().getMessage().contains("최대 5개")); - } - - @Test - @DisplayName("validateTags: 중복 태그 있을 경우 InvalidStateException이 발생한다.") - void validateTags_withDuplicates_throws() { - List tags = List.of("a", "b", "a"); - - InvalidStateException ex = assertThrows(InvalidStateException.class, - () -> Feed.validateTags(tags)); - - assertEquals(INVALID_FEED_COMMAND, ex.getErrorCode()); - assertTrue(ex.getCause().getMessage().contains("중복")); - } +// @Test +// @DisplayName("validateTags: 태그가 5개 초과 시 InvalidStateException이 발생한다.") +// void validateTags_exceedsMax_throws() { +// List tags = List.of("a", "b", "c", "d", "e", "f"); +// +// InvalidStateException ex = assertThrows(InvalidStateException.class, +// () -> Feed.validateTags(tags)); +// +// assertEquals(INVALID_FEED_COMMAND, ex.getErrorCode()); +// assertTrue(ex.getCause().getMessage().contains("최대 5개")); +// } +// +// @Test +// @DisplayName("validateTags: 중복 태그 있을 경우 InvalidStateException이 발생한다.") +// void validateTags_withDuplicates_throws() { +// List tags = List.of("a", "b", "a"); +// +// InvalidStateException ex = assertThrows(InvalidStateException.class, +// () -> Feed.validateTags(tags)); +// +// assertEquals(INVALID_FEED_COMMAND, ex.getErrorCode()); +// assertTrue(ex.getCause().getMessage().contains("중복")); +// } @Test @DisplayName("validateCreateComment: 공개 피드면 누구나 댓글을 작성 할 수 있다") @@ -255,7 +255,7 @@ private Feed makeFeedWithPublicStatus(Boolean isPublic) { .creatorId(1L) .isPublic(isPublic) .targetBookId(100L) - .tagList(Collections.emptyList()) + .tagList(TagList.of(Collections.emptyList())) .contentList(ContentList.empty()) .build(); } diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java index 8ce64d164..dd05c5ec9 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -39,9 +39,6 @@ class RecentSearchDeleteApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private RecentSearchJpaRepository recentSearchJpaRepository; @@ -51,7 +48,7 @@ class RecentSearchDeleteApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); // 요청 사용자 UserJpaEntity currentUser = userJpaRepository.save(TestEntityFactory.createUser(alias, "요청자")); diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java index 29a452934..d04e97824 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -44,9 +44,6 @@ class RecentSearchGetApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private RecentSearchJpaRepository recentSearchJpaRepository; @@ -55,7 +52,7 @@ class RecentSearchGetApiTest { @BeforeEach void setUp() { // 사용자 및 별칭 생성 - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity currentUser = userJpaRepository.save(TestEntityFactory.createUser(alias, "검색자")); currentUserId = currentUser.getUserId(); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java index 4ac5fd437..4418ba0aa 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java @@ -7,13 +7,13 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,29 +43,12 @@ @DisplayName("[통합] 방 생성 api 통합 테스트") class RoomCreateApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private ObjectMapper objectMapper; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @AfterEach void tearDown() { @@ -73,22 +56,20 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } - private void saveUserAndCategory() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + private void saveUserAndLiteratureCategory() { + Alias alias = TestEntityFactory.createLiteratureAlias(); userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("User1") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); } private void saveBookWithPageCount() { @@ -135,12 +116,11 @@ private Map buildRoomCreateRequest() { @DisplayName("isbn 에 해당하는 책(with pageCount)이 DB에 존재할 때, 해당 책과 연관된 방을 생성할 수 있다.") void room_create_book_with_page_exist() throws Exception { //given : user, category, pageCount값이 있는 book 생성, request 생성 - saveUserAndCategory(); + saveUserAndLiteratureCategory(); saveBookWithPageCount(); Long userId = userJpaRepository.findAll().get(0).getUserId(); Long bookId = bookJpaRepository.findAll().get(0).getBookId(); - Long categoryId = categoryJpaRepository.findAll().get(0).getCategoryId(); Map request = buildRoomCreateRequest(); @@ -168,11 +148,11 @@ void room_create_book_with_page_exist() throws Exception { assertThat(roomJpaEntity).isNotNull() .extracting( "title", "description", "public", "password", "roomPercentage", - "startDate", "endDate", "recruitCount", "bookJpaEntity.bookId", "categoryJpaEntity.categoryId" + "startDate", "endDate", "recruitCount", "bookJpaEntity.bookId", "category" ) .containsExactly( request.get("roomName"), request.get("description"), request.get("isPublic"), request.get("password"), 0.0, - startDate, endDate, request.get("recruitCount"), bookId, categoryId + startDate, endDate, request.get("recruitCount"), bookId, Category.LITERATURE ); } @@ -180,12 +160,11 @@ void room_create_book_with_page_exist() throws Exception { @DisplayName("isbn 에 해당하는 책(without pageCount)이 DB에 존재할 때, 해당 책의 page 정보를 update 한 후 연관된 방을 생성할 수 있다.") void room_create_book_without_page_exist() throws Exception { //given : user, category, pageCount값이 없는 book 생성, request 생성 - saveUserAndCategory(); + saveUserAndLiteratureCategory(); saveBookWithoutPageCount(); Long userId = userJpaRepository.findAll().get(0).getUserId(); Long bookId = bookJpaRepository.findAll().get(0).getBookId(); - Long categoryId = categoryJpaRepository.findAll().get(0).getCategoryId(); Map request = buildRoomCreateRequest(); @@ -213,11 +192,11 @@ void room_create_book_without_page_exist() throws Exception { assertThat(roomJpaEntity).isNotNull() .extracting( "title", "description", "public", "password", "roomPercentage", - "startDate", "endDate", "recruitCount", "bookJpaEntity.bookId", "categoryJpaEntity.categoryId" + "startDate", "endDate", "recruitCount", "bookJpaEntity.bookId", "category" ) .containsExactly( request.get("roomName"), request.get("description"), request.get("isPublic"), request.get("password"), 0.0, - startDate, endDate, request.get("recruitCount"), bookId, categoryId + startDate, endDate, request.get("recruitCount"), bookId, Category.LITERATURE ); // update 된 책 검증 @@ -229,10 +208,9 @@ void room_create_book_without_page_exist() throws Exception { @DisplayName("isbn 에 해당하는 책이 존재하지 않을 경우, page 정보를 포함하는 책을 save 한 후 연관된 방을 생성할 수 있다.") void room_create_book_not_exist() throws Exception { //given : user, category 생성, request 생성 (book 생성 X) - saveUserAndCategory(); + saveUserAndLiteratureCategory(); Long userId = userJpaRepository.findAll().get(0).getUserId(); - Long categoryId = categoryJpaRepository.findAll().get(0).getCategoryId(); Map request = buildRoomCreateRequest(); @@ -260,11 +238,11 @@ void room_create_book_not_exist() throws Exception { assertThat(roomJpaEntity).isNotNull() .extracting( "title", "description", "public", "password", "roomPercentage", - "startDate", "endDate", "recruitCount", "categoryJpaEntity.categoryId" + "startDate", "endDate", "recruitCount", "category" ) .containsExactly( request.get("roomName"), request.get("description"), request.get("isPublic"), request.get("password"), 0.0, - startDate, endDate, request.get("recruitCount"), categoryId + startDate, endDate, request.get("recruitCount"), Category.LITERATURE ); // 새로 DB에 저장된 책 검증 @@ -283,12 +261,11 @@ void room_create_book_not_exist() throws Exception { @Transactional // RoomParticipant -> Room, User 의 manyToOne 지연로딩을 위해 추가 void room_create_room_participant_save_success() throws Exception { //given : user, category, pageCount값이 있는 book 생성, request 생성 - saveUserAndCategory(); + saveUserAndLiteratureCategory(); saveBookWithPageCount(); Long userId = userJpaRepository.findAll().get(0).getUserId(); Long bookId = bookJpaRepository.findAll().get(0).getBookId(); - Long categoryId = categoryJpaRepository.findAll().get(0).getCategoryId(); Map request = buildRoomCreateRequest(); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java index ca531fe22..6f48f8cc7 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.util.AbstractList; import java.util.ArrayList; import java.util.List; @@ -44,31 +45,16 @@ @Transactional class RoomGetDeadlinePopularApiTest { - @Autowired - private MockMvc mockMvc; + @Autowired private MockMvc mockMvc; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository participantJpaRepository; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository participantJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - private AliasJpaEntity alias; + private Alias alias; + private Category category; private UserJpaEntity currentUser; private BookJpaEntity book; - private CategoryJpaEntity category; private final List rooms = new ArrayList<>(); private final int maxMemberCount = 30; // 인기 방의 최대 인원 수 @@ -79,8 +65,8 @@ class RoomGetDeadlinePopularApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + alias = TestEntityFactory.createLiteratureAlias(); + category = TestEntityFactory.createLiteratureCategory(); currentUser = userJpaRepository.save(TestEntityFactory.createUser(alias, "현재유저")); book = bookJpaRepository.save(TestEntityFactory.createBook()); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java index 6063df1e2..9b76d3d38 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java @@ -5,12 +5,12 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.*; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -36,49 +36,30 @@ @DisplayName("[통합] 모임 홈 참여중인 내 모임방 조회 api 통합 테스트") class RoomGetHomeJoinedRoomsApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; private RoomJpaEntity room1; private RoomJpaEntity room2; private UserJpaEntity user1; private UserJpaEntity user2; private BookJpaEntity book; - private CategoryJpaEntity category; + private Category category; @BeforeEach void setUp() { - AliasJpaEntity alias = TestEntityFactory.createLiteratureAlias(); - aliasJpaRepository.save(alias); - + Alias alias = TestEntityFactory.createLiteratureAlias(); user1 = userJpaRepository.save(TestEntityFactory.createUser(alias)); user2 = userJpaRepository.save(TestEntityFactory.createUser(alias)); book = TestEntityFactory.createBook(); bookJpaRepository.save(book); - category = TestEntityFactory.createLiteratureCategory(alias); - categoryJpaRepository.save(category); - + category = TestEntityFactory.createLiteratureCategory(); room1 = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); room2 = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); @@ -96,8 +77,6 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -131,9 +110,7 @@ void getHomeJoinedRooms_success() throws Exception { void getHomeJoinedRooms_sortByStartDateWhenUserPercentageEquals() throws Exception { // given - AliasJpaEntity alias = TestEntityFactory.createLiteratureAlias(); - aliasJpaRepository.save(alias); - + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity newUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); // 방1: 시작일 오늘-2 @@ -179,9 +156,7 @@ void getHomeJoinedRooms_sortByStartDateWhenUserPercentageEquals() throws Excepti void getHomeJoinedRooms_excludeRecruitingRooms() throws Exception { // given - AliasJpaEntity alias = TestEntityFactory.createLiteratureAlias(); - aliasJpaRepository.save(alias); - + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity newUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); // 모집중(시작일 미래) @@ -215,8 +190,7 @@ void getHomeJoinedRooms_excludeRecruitingRooms() throws Exception { void getHomeJoinedRooms_empty() throws Exception { //given - AliasJpaEntity alias = TestEntityFactory.createLiteratureAlias(); - aliasJpaRepository.save(alias); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity newUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); //when diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsControllerTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsControllerTest.java index 1f14f50c9..54663deab 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsControllerTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsControllerTest.java @@ -26,7 +26,6 @@ class RoomGetHomeJoinedRoomsControllerTest { @Autowired private MockMvc mockMvc; - private Map buildValidRequest() { Map request = new HashMap<>(); request.put("userId", 1L); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java index 64cc94013..b50e79fe9 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java @@ -5,14 +5,14 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -38,47 +38,28 @@ @DisplayName("[통합] 독서 메이트(방 멤버) 조회 api 통합 테스트") class RoomGetMemberListApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; - - @Autowired - private FollowingJpaRepository followingJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private FollowingJpaRepository followingJpaRepository; private RoomJpaEntity room1; private UserJpaEntity user1; private UserJpaEntity user2; private UserJpaEntity user3; private BookJpaEntity book; - private CategoryJpaEntity category; + private Category category; @BeforeEach void setUp() { - AliasJpaEntity alias = TestEntityFactory.createLiteratureAlias(); - aliasJpaRepository.save(alias); - + Alias alias = TestEntityFactory.createLiteratureAlias(); user1 = userJpaRepository.save(UserJpaEntity.builder() .nickname("테스터1") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_1") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .followerCount(2) // user1이 user2, user3를 팔로우 .build()); @@ -87,7 +68,7 @@ void setUp() { .nickname("테스터2") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_2") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .followerCount(1) // user2가 user3를 팔로우 .build()); @@ -96,13 +77,13 @@ void setUp() { .nickname("테스터3") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("kakao_3") - .aliasForUserJpaEntity(alias) + .alias(alias) .role(UserRole.USER) .followerCount(1) // user3가 user1을 팔로우 .build()); book = bookJpaRepository.save(TestEntityFactory.createBook()); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); room1 = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); @@ -129,8 +110,6 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -200,7 +179,7 @@ void getRoomMemberList_subscriberCount() throws Exception { @DisplayName("팔로워가 한 명도 없는 사용자는 followerCount가 0으로 조회된다.") void getRoomMemberList_noSubscriber() throws Exception { //given - UserJpaEntity userNoFollower = userJpaRepository.save(TestEntityFactory.createUser(aliasJpaRepository.findAll().get(0))); + UserJpaEntity userNoFollower = userJpaRepository.save(TestEntityFactory.createUser(Alias.WRITER)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room1, userNoFollower, RoomParticipantRole.MEMBER, 10.0)); Long roomId = room1.getRoomId(); @@ -211,4 +190,4 @@ void getRoomMemberList_noSubscriber() throws Exception { result.andExpect(status().isOk()) .andExpect(jsonPath("$.data.userList[?(@.userId==" + userNoFollower.getUserId() + ")].followerCount").value(contains(0))); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListControllerTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListControllerTest.java index ea4eeb2a5..2b740bb15 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListControllerTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListControllerTest.java @@ -26,11 +26,8 @@ @DisplayName("[단위] 독서메이트(방 멤버) 조회 api controller 테스트") class RoomGetMemberListControllerTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private ObjectMapper objectMapper; + @Autowired private MockMvc mockMvc; + @Autowired private ObjectMapper objectMapper; private Map buildValidRequest() { Map request = new HashMap<>(); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java index 7f5fbfd2e..6c4bddd7f 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java @@ -8,12 +8,12 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -46,36 +46,34 @@ class RoomJoinApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; private RoomJpaEntity room; private UserJpaEntity host; private UserJpaEntity participant; private void setUpWithOnlyHost() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); createUsers(alias); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); createRoom(book, category,1); // 방장만 포함 roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 0.0)); } private void setUpWithParticipant() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); createUsers(alias); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); createRoom(book, category,2); // 방장과 참여자 포함 roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 0.0)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, participant, RoomParticipantRole.MEMBER, 0.0)); } - private void createRoom(BookJpaEntity book, CategoryJpaEntity category, int memberCount) { + private void createRoom(BookJpaEntity book, Category category, int memberCount) { room = roomJpaRepository.save(RoomJpaEntity.builder() .title("방이름") .description("설명") @@ -84,18 +82,18 @@ private void createRoom(BookJpaEntity book, CategoryJpaEntity category, int memb .endDate(LocalDate.now().plusDays(30)) .recruitCount(3) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .memberCount(memberCount) // 방장과 참여자 포함 .build()); } - private void createUsers(AliasJpaEntity alias) { + private void createUsers(Alias alias) { host = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("user") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); participant = userJpaRepository.save(UserJpaEntity.builder() @@ -103,7 +101,7 @@ private void createUsers(AliasJpaEntity alias) { .nickname("user123") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); } @@ -111,10 +109,8 @@ private void createUsers(AliasJpaEntity alias) { void tearDown() { roomParticipantJpaRepository.deleteAllInBatch(); roomJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -199,4 +195,4 @@ void cancelJoin_notParticipated() throws Exception { result.andExpect(status().isBadRequest()); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java index 27edcfcb3..38967c95a 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java @@ -8,17 +8,16 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -45,32 +44,13 @@ @DisplayName("[통합] 진행 중인 방 상세조회 api 통합 테스트") class RoomPlayingDetailViewApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; - - @Autowired - private VoteJpaRepository voteJpaRepository; - - @Autowired - private VoteItemJpaRepository voteItemJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private VoteJpaRepository voteJpaRepository; + @Autowired private VoteItemJpaRepository voteItemJpaRepository; @AfterEach void tearDown() { @@ -80,12 +60,10 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String roomName, LocalDate startDate, int recruitCount) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() .title(bookTitle) @@ -98,7 +76,7 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .description("한강의 소설") .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); return roomJpaRepository.save(RoomJpaEntity.builder() .title(roomName) @@ -109,12 +87,12 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .endDate(LocalDate.now().plusDays(30)) .recruitCount(recruitCount) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); } private void saveUsersToRoom(RoomJpaEntity roomJpaEntity, int count) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); // User 리스트 생성 및 저장 List users = IntStream.rangeClosed(1, count) @@ -123,7 +101,7 @@ private void saveUsersToRoom(RoomJpaEntity roomJpaEntity, int count) { .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("oauth2Id") .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()) .toList(); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java index 19328968a..6ff2a8005 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java @@ -7,19 +7,19 @@ import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.in.web.request.RoomPostIsLikeRequest; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,7 +38,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -50,22 +49,19 @@ class RoomPostChangeLikeStatusApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private PostLikeJpaRepository postLikeJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private RecordJpaRepository recordJpaRepository; @Autowired private VoteJpaRepository voteJpaRepository; - private UserJpaEntity user; private BookJpaEntity book; private FeedJpaEntity feed; - private CategoryJpaEntity category; + private Category category; private RoomJpaEntity room; private RecordJpaEntity record; private VoteJpaEntity vote; @@ -74,11 +70,11 @@ class RoomPostChangeLikeStatusApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); // 1번방에 유저 1이 호스트 roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room,user, RoomParticipantRole.HOST, 80.0)); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java index 08f53e63a..27b218996 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java @@ -4,16 +4,16 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -34,7 +34,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest @ActiveProfiles("test") @AutoConfigureMockMvc(addFilters = false) @@ -46,10 +45,8 @@ class RoomPostChangeLikeStatusControllerTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private RecordJpaRepository recordJpaRepository; @@ -57,7 +54,7 @@ class RoomPostChangeLikeStatusControllerTest { private UserJpaEntity user1; private UserJpaEntity user2; private BookJpaEntity book; - private CategoryJpaEntity category; + private Category category; private RoomJpaEntity room; private RecordJpaEntity record; @@ -65,11 +62,11 @@ class RoomPostChangeLikeStatusControllerTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user1 = userJpaRepository.save(TestEntityFactory.createUser(alias)); user2 = userJpaRepository.save(TestEntityFactory.createUser(alias)); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); // 1번방에 유저 1이 호스트 roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room,user1, RoomParticipantRole.HOST, 80.0)); @@ -115,6 +112,4 @@ void nonParticipantUser_likeRoomPost_shouldReturnBadRequest() throws Exception { .andExpect(jsonPath("$.code").value(ROOM_ACCESS_FORBIDDEN.getCode())) .andExpect(jsonPath("$.message", containsString("사용자가 이 방의 참가자가 아닙니다."))); } - - } diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java index 90b3a85f6..f747dd698 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java @@ -7,12 +7,12 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.*; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,26 +38,11 @@ @DisplayName("[통합] 모집 중인 방 상세조회 api 통합 테스트") class RoomRecruitingDetailViewApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @AfterEach void tearDown() { @@ -65,12 +50,10 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String roomName, LocalDate startDate, int recruitCount) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() .title(bookTitle) @@ -83,7 +66,7 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .description("한강의 소설") .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); return roomJpaRepository.save(RoomJpaEntity.builder() .title(roomName) @@ -94,12 +77,12 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .endDate(LocalDate.now().plusDays(30)) .recruitCount(recruitCount) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); } private RoomJpaEntity saveLiteratureRoom(String bookTitle, String isbn, String roomName, LocalDate startDate, int recruitCount) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() .title(bookTitle) @@ -112,7 +95,7 @@ private RoomJpaEntity saveLiteratureRoom(String bookTitle, String isbn, String r .description("한강의 소설") .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); return roomJpaRepository.save(RoomJpaEntity.builder() .title(roomName) @@ -123,12 +106,12 @@ private RoomJpaEntity saveLiteratureRoom(String bookTitle, String isbn, String r .endDate(LocalDate.now().plusDays(30)) .recruitCount(recruitCount) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); } private void saveUsersToRoom(RoomJpaEntity roomJpaEntity, int count) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); // User 리스트 생성 및 저장 List users = IntStream.rangeClosed(1, count) @@ -137,7 +120,7 @@ private void saveUsersToRoom(RoomJpaEntity roomJpaEntity, int count) { .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("oauth2Id") .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()) .toList(); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java index 2cc81e8e1..8df692610 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java @@ -7,13 +7,12 @@ import konkuk.thip.recentSearch.adapter.out.jpa.RecentSearchJpaEntity; import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.*; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -41,9 +40,7 @@ class RoomSearchApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @@ -57,23 +54,19 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } private RoomJpaEntity saveScienceRoom(String bookTitle, String roomName, LocalDate startDate, LocalDate endDate) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithBookTitle(bookTitle)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); return roomJpaRepository.save(TestEntityFactory.createCustomRoom(book, category, roomName, startDate, endDate)); } private RoomJpaEntity saveLiteratureRoom(String bookTitle, String roomName, LocalDate startDate, LocalDate endDate) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithBookTitle(bookTitle)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); return roomJpaRepository.save(TestEntityFactory.createCustomRoom(book, category, roomName, startDate, endDate)); } @@ -301,7 +294,7 @@ void search_keyword_and_category() throws Exception { @DisplayName("finalized가 true이면 최근 검색어 목록으로 저장된다.") void search_keyword_saved() throws Exception { // given - AliasJpaEntity aliasJpa = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias aliasJpa = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(aliasJpa)); RoomJpaEntity science_room_1 = saveScienceRoom("과학-책", "과학-방-1일뒤-활동시작", LocalDate.now().plusDays(1), LocalDate.now().plusDays(30)); updateRoomMemberCount(science_room_1, 4); diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java index 7727f0695..a37f462d4 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -36,26 +36,11 @@ @DisplayName("[통합] 내 방 목록 조회 api 통합 테스트") class RoomShowMineApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @AfterEach void tearDown() { @@ -63,12 +48,10 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String roomName, LocalDate startDate, LocalDate endDate, int recruitCount) { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() .title(bookTitle) @@ -81,7 +64,7 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .description("한강의 소설") .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); return roomJpaRepository.save(RoomJpaEntity.builder() .title(roomName) @@ -92,7 +75,7 @@ private RoomJpaEntity saveScienceRoom(String bookTitle, String isbn, String room .endDate(endDate) .recruitCount(recruitCount) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); } @@ -129,7 +112,7 @@ void get_my_playing_rooms() throws Exception { RoomJpaEntity expiredRoom1 = saveScienceRoom("만료된방-책-1", "isbn4", "과학-방-5일전-활동마감", LocalDate.now().minusDays(30), LocalDate.now().minusDays(5), 10); changeRoomMemberCount(expiredRoom1, 7); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -168,7 +151,7 @@ void get_my_recruiting_rooms() throws Exception { RoomJpaEntity expiredRoom1 = saveScienceRoom("만료된방-책-1", "isbn4", "과학-방-5일전-활동마감", LocalDate.now().minusDays(30), LocalDate.now().minusDays(5), 10); changeRoomMemberCount(expiredRoom1, 7); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -207,7 +190,7 @@ void get_my_playing_and_recruiting_rooms() throws Exception { RoomJpaEntity expiredRoom1 = saveScienceRoom("만료된방-책-1", "isbn4", "과학-방-5일전-활동마감", LocalDate.now().minusDays(30), LocalDate.now().minusDays(5), 10); changeRoomMemberCount(expiredRoom1, 7); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -247,7 +230,7 @@ void get_my_expired_rooms() throws Exception { RoomJpaEntity expiredRoom2 = saveScienceRoom("만료된방-책-2", "isbn4", "과학-방-10일전-활동마감", LocalDate.now().minusDays(30), LocalDate.now().minusDays(10), 10); changeRoomMemberCount(expiredRoom2, 1); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -286,7 +269,7 @@ void get_my_rooms_wrong_type() throws Exception { RoomJpaEntity expiredRoom1 = saveScienceRoom("만료된방-책-1", "isbn4", "과학-방-5일전-활동마감", LocalDate.now().minusDays(30), LocalDate.now().minusDays(5), 10); changeRoomMemberCount(expiredRoom1, 7); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -346,7 +329,7 @@ void get_my_rooms_page_1() throws Exception { RoomJpaEntity recruitingRoom12 = saveScienceRoom("모집중인방-책-12", "isbn12", "과학-방-12일뒤-활동시작", LocalDate.now().plusDays(12), LocalDate.now().plusDays(30), 10); changeRoomMemberCount(recruitingRoom12, 8); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 @@ -425,7 +408,7 @@ void get_my_rooms_page_2() throws Exception { RoomJpaEntity recruitingRoom12 = saveScienceRoom("모집중인방-책-12", "isbn12", "과학-방-12일뒤-활동시작", LocalDate.now().plusDays(12), LocalDate.now().plusDays(30), 10); changeRoomMemberCount(recruitingRoom12, 8); - AliasJpaEntity scienceAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias scienceAlias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(scienceAlias)); // user가 생성한 방에 참여한 상황 가정 diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java index ce13e812a..03ec864dc 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java @@ -5,12 +5,12 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.in.web.request.RoomVerifyPasswordRequest; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -24,7 +24,6 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; - import java.time.LocalDate; import static konkuk.thip.common.exception.code.ErrorCode.*; @@ -38,26 +37,11 @@ @DisplayName("[통합] 비공개 방 비밀번호 입력 검증 api 통합 테스트") class RoomVerifyPasswordApiTest { - @Autowired - private MockMvc mockMvc; - - @Autowired - private UserJpaRepository userJpaRepository; - - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private BookJpaRepository bookJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @Autowired - private RoomJpaRepository roomJpaRepository; - - @Autowired - private ObjectMapper objectMapper; + @Autowired private MockMvc mockMvc; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private ObjectMapper objectMapper; private static final PasswordEncoder PASSWORD_ENCODER = new BCryptPasswordEncoder(); @@ -67,8 +51,7 @@ class RoomVerifyPasswordApiTest { @BeforeEach void setUp() { - - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias, "User1")); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() .isbn("1234567890123") @@ -81,13 +64,13 @@ void setUp() { .build()); userId = user.getUserId(); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); // 비공개 방 저장 (비밀번호: 1234) RoomJpaEntity privateRoom = roomJpaRepository.save( RoomJpaEntity.builder() .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .title("비공개방") .description("비공개방입니다") .isPublic(false) @@ -103,7 +86,7 @@ void setUp() { RoomJpaEntity publicRoom = roomJpaRepository.save( RoomJpaEntity.builder() .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .title("공개방") .description("공개방입니다") .isPublic(true) @@ -121,8 +104,6 @@ void tearDown() { roomJpaRepository.deleteAll(); bookJpaRepository.deleteAll(); userJpaRepository.deleteAll(); - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -173,7 +154,7 @@ void verifyRoomPassword_recruitmentPeriodExpired() throws Exception { RoomJpaEntity expiredRoom = roomJpaRepository.save( RoomJpaEntity.builder() .bookJpaEntity(bookJpaRepository.findAll().get(0)) - .categoryJpaEntity(categoryJpaRepository.findAll().get(0)) + .category(Category.LITERATURE) .title("모집만료방") .description("모집기간이 만료된 방입니다") .isPublic(false) @@ -217,4 +198,4 @@ void verifyRoomPassword_publicRoom() throws Exception { .andExpect(jsonPath("$.code").value(ROOM_PASSWORD_NOT_REQUIRED.getCode())) .andExpect(jsonPath("$.message", containsString("공개방은 비밀번호가 필요하지 않습니다"))); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java index 5a7116399..eab0ef414 100644 --- a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java +++ b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java @@ -4,10 +4,10 @@ import jakarta.persistence.PersistenceContext; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.room.domain.Category; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -23,20 +23,9 @@ @DisplayName("[JPA] RoomJpaEntity 테스트") class RoomJpaEntityTest { - @PersistenceContext - private EntityManager em; - - @Autowired - private BookJpaRepository bookRepository; - - @Autowired - private AliasJpaRepository aliasRepository; - - @Autowired - private CategoryJpaRepository categoryRepository; - - @Autowired - private RoomJpaRepository roomRepository; + @PersistenceContext private EntityManager em; + @Autowired private BookJpaRepository bookRepository; + @Autowired private RoomJpaRepository roomRepository; @Test @DisplayName("RoomJpaEntity 저장 및 조회 테스트") @@ -44,8 +33,7 @@ void saveAndFindRoom() { // given String isbn = "1234567890"; BookJpaEntity book = bookRepository.save(TestEntityFactory.createBookWithISBN(isbn)); - AliasJpaEntity alias = aliasRepository.save(TestEntityFactory.createLiteratureAlias()); - CategoryJpaEntity category = categoryRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomRepository.save(TestEntityFactory.createRoom(book, category)); // when @@ -63,4 +51,4 @@ void saveAndFindRoom() { assertThat(foundRoom.getBookJpaEntity().getAuthorName()).isEqualTo("저자"); assertThat(foundRoom.getBookJpaEntity().getIsbn()).isEqualTo(isbn); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/application/service/RoomJoinServiceTest.java b/src/test/java/konkuk/thip/room/application/service/RoomJoinServiceTest.java index 5feedd7da..c94bedfe6 100644 --- a/src/test/java/konkuk/thip/room/application/service/RoomJoinServiceTest.java +++ b/src/test/java/konkuk/thip/room/application/service/RoomJoinServiceTest.java @@ -115,5 +115,4 @@ void successCancel() { then(roomCommandPort).should().update(any(Room.class)); } } - -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java b/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java index 53d8490a8..6bd30559f 100644 --- a/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java +++ b/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java @@ -81,4 +81,4 @@ void update_userProgress_when_request_isLower_than_bookPage() throws Exception { double ratio = (double) roomParticipant.getCurrentPage() / totalPageCount; assertThat(roomParticipant.getUserPercentage()).isEqualTo(ratio * 100); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/room/domain/RoomTest.java b/src/test/java/konkuk/thip/room/domain/RoomTest.java index f4bd6f9a4..54d088490 100644 --- a/src/test/java/konkuk/thip/room/domain/RoomTest.java +++ b/src/test/java/konkuk/thip/room/domain/RoomTest.java @@ -288,5 +288,4 @@ void startRoomProgress_recruitmentExpired() { InvalidStateException ex = assertThrows(InvalidStateException.class, room::startRoomProgress); assertEquals(ErrorCode.ROOM_RECRUITMENT_PERIOD_EXPIRED, ex.getErrorCode()); } - } diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java index 492cd18e6..9675f80e9 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.attendancecheck.AttendanceCheckJpaRepository; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; @@ -9,11 +10,10 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -45,9 +45,7 @@ class AttendanceCheckCreateApiTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @@ -59,19 +57,17 @@ void tearDown() { roomParticipantJpaRepository.deleteAllInBatch(); roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } @Test @DisplayName("방의 참석자는 출석체크(= 오늘의 한마디) 를 작성할 수 있다.") void attendance_check_create_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); @@ -99,10 +95,10 @@ void attendance_check_create_test() throws Exception { @DisplayName("방의 참석자가 아닐 경우, 오늘의 한마디를 작성 요청 시 403 에러 발생한다(400 에러 아님).") void attendance_check_fail_test() throws Exception { //given : me 는 room에 속하지 않는 유저 - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); @@ -121,10 +117,10 @@ void attendance_check_fail_test() throws Exception { @DisplayName("방의 참석자가 출석체크(= 오늘의 한마디) 를 처음 작성할 경우, response의 isFirstWrite는 true 이다.") void attendance_check_create_first_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); @@ -150,10 +146,10 @@ void attendance_check_create_first_test() throws Exception { @DisplayName("방의 참석자가 출석체크(= 오늘의 한마디) 를 하루 최대 5회만 작성할 수 있다. 5회를 초과할 경우, 400 error를 반환한다.") void attendance_check_create_too_many_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java index b1497cf87..a26f7bca8 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java @@ -7,13 +7,13 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.AttendanceCheckJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.attendancecheck.AttendanceCheckJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,9 +43,7 @@ class AttendanceCheckShowApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @@ -58,20 +56,18 @@ void tearDown() { roomParticipantJpaRepository.deleteAllInBatch(); roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } @Test @DisplayName("방의 출석체크(= 오늘의 한마디) 조회 요청하면, [오늘의 한마디 작성자 정보, 오늘의 한마디 정보] 등을 최신순으로 반환한다.") void attendance_check_show_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); @@ -114,11 +110,11 @@ void attendance_check_show_test() throws Exception { @DisplayName("방의 멤버가 아닌 사람이 오늘의 한마디 조회 요청을 보낼 경우, 403 error가 발생한다.") void attendance_check_show_no_room_member() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); @@ -139,10 +135,10 @@ void attendance_check_show_no_room_member() throws Exception { @DisplayName("오늘의 한마디 조회는 작성 시각 기준 최신순 정렬 & 커서 기반 페이지네이션으로 동작한다.") void attendance_check_show_page_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); - CategoryJpaEntity c0 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(a0)); + Category c0 = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, c0)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java index 296005de3..3da31a1b5 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java @@ -5,6 +5,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.in.web.request.RecordCreateRequest; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; @@ -12,11 +13,10 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -50,15 +50,9 @@ class RecordCreateControllerTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -75,13 +69,13 @@ class RecordCreateControllerTest { private RoomJpaEntity room; private void saveUserAndRoom() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java index 8524c9127..39a8cfcc5 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java @@ -7,16 +7,16 @@ import konkuk.thip.comment.adapter.out.persistence.repository.CommentLikeJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,9 +43,7 @@ class RecordDeleteApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private CommentJpaRepository commentJpaRepository; @Autowired private CommentLikeJpaRepository commentLikeJpaRepository; @@ -54,9 +52,9 @@ class RecordDeleteApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private BookJpaEntity book; private CommentJpaEntity comment; private RecordJpaEntity record; @@ -64,9 +62,9 @@ class RecordDeleteApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); record = recordJpaRepository.save(TestEntityFactory.createRecord(user,room)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java index ce27176e7..e94c8dca9 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java @@ -3,16 +3,16 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,26 +38,24 @@ class RecordPinApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private RecordJpaRepository recordJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private BookJpaEntity book; private RecordJpaEntity record; private RoomJpaEntity room; @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); record = recordJpaRepository.save(TestEntityFactory.createRecord(user,room)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java index 6cadcaf82..6172b5297 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java @@ -5,22 +5,22 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -54,8 +54,6 @@ class RoomPostSearchApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Test @@ -401,14 +399,14 @@ void searchMyRecords_with_invalid_parameters_error() throws Exception { } private TestData createTestData() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_123") .nickname("테스트사용자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() @@ -422,7 +420,7 @@ private TestData createTestData() { .bestSeller(false) .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomJpaRepository.save(RoomJpaEntity.builder() .title("방 제목") @@ -433,7 +431,7 @@ private TestData createTestData() { .endDate(LocalDate.now().plusDays(30)) .recruitCount(5) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); // 방 참가자 생성 @@ -519,14 +517,14 @@ private TestData createTestDataWithOverview() { } private TestData createTestDataWithLockedContent() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_123") .nickname("테스트사용자") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); BookJpaEntity book = bookJpaRepository.save(BookJpaEntity.builder() @@ -540,7 +538,7 @@ private TestData createTestDataWithLockedContent() { .bestSeller(false) .build()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomJpaRepository.save(RoomJpaEntity.builder() .title("방 제목") @@ -551,7 +549,7 @@ private TestData createTestDataWithLockedContent() { .endDate(LocalDate.now().plusDays(30)) .recruitCount(5) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .build()); // 방 참가자 생성 (현재 페이지 10으로 설정) diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java index 53232f717..9f400309d 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java @@ -7,17 +7,17 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.in.web.request.VoteRequest; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteParticipantJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -44,18 +44,16 @@ class VoteApiTest { @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private VoteJpaRepository voteJpaRepository; @Autowired private VoteItemJpaRepository voteItemJpaRepository; @Autowired private VoteParticipantJpaRepository voteParticipantJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private RoomJpaEntity room; private VoteJpaEntity vote; @Autowired @@ -63,9 +61,9 @@ class VoteApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + alias = TestEntityFactory.createScienceAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + category = TestEntityFactory.createScienceCategory(); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); vote = voteJpaRepository.save(TestEntityFactory.createVote(user, room)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java index cc6eb1ada..0398feb88 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java @@ -8,16 +8,16 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.in.web.request.VoteCreateRequest; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -48,15 +48,9 @@ class VoteCreateApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -83,16 +77,14 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } private void saveUserAndRoom() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias, "user")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, user, RoomParticipantRole.MEMBER, 0.0)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java index 99b66f46d..f66b2fef6 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java @@ -10,16 +10,16 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteParticipantJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -46,9 +46,7 @@ class VoteDeleteApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; @Autowired private CommentJpaRepository commentJpaRepository; @Autowired private CommentLikeJpaRepository commentLikeJpaRepository; @@ -59,10 +57,10 @@ class VoteDeleteApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user1; private UserJpaEntity user2; - private CategoryJpaEntity category; + private Category category; private BookJpaEntity book; private CommentJpaEntity comment; private RoomJpaEntity room; @@ -72,10 +70,10 @@ class VoteDeleteApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user1 = userJpaRepository.save(TestEntityFactory.createUser(alias)); user2 = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book,category)); // 유저 1이 호스트, 유저 2가 멤버로 방 참여 diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java index e033c16cf..fec0593c3 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java @@ -5,12 +5,12 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -32,9 +32,6 @@ class RecordJpaEntityTest { @Autowired private UserJpaRepository userRepository; - @Autowired - private AliasJpaRepository aliasRepository; - @Autowired private BookJpaRepository bookRepository; @@ -44,17 +41,14 @@ class RecordJpaEntityTest { @Autowired private RecordJpaRepository recordRepository; - @Autowired - private CategoryJpaRepository categoryRepository; - @Test @DisplayName("RecordJpaEntity 저장 및 조회 테스트") void saveAndFindRecord() { // given - AliasJpaEntity alias = aliasRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userRepository.save(TestEntityFactory.createUser(alias)); BookJpaEntity book = bookRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomRepository.save(TestEntityFactory.createRoom(book, category)); RecordJpaEntity record = recordRepository.save(TestEntityFactory.createRecord(user, room)); diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java index 0beb7f440..c3791fcf8 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java @@ -5,12 +5,12 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -32,9 +32,6 @@ class VoteJpaEntityTest { @Autowired private UserJpaRepository userRepository; - @Autowired - private AliasJpaRepository aliasRepository; - @Autowired private BookJpaRepository bookRepository; @@ -44,17 +41,14 @@ class VoteJpaEntityTest { @Autowired private VoteJpaRepository voteRepository; - @Autowired - private CategoryJpaRepository categoryRepository; - @Test @DisplayName("VoteJpaEntity 저장 및 조회 테스트") void saveAndFindVote() { // given - AliasJpaEntity alias = aliasRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userRepository.save(TestEntityFactory.createUser(alias)); BookJpaEntity book = bookRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); RoomJpaEntity room = roomRepository.save(TestEntityFactory.createRoom(book, category)); VoteJpaEntity vote = voteRepository.save(VoteJpaEntity.builder() diff --git a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java index 12efd8ef4..eb02ff635 100644 --- a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java +++ b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java @@ -7,14 +7,14 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.application.port.in.dto.vote.VoteCreateCommand; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -34,15 +34,9 @@ @DisplayName("[통합] 투표 생성 service 통합 테스트") class VoteCreateServiceTest { - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -69,19 +63,17 @@ void tearDown() { roomJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - categoryJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); } @Test @DisplayName("유저가 투표를 생성하면, 해당 유저의 [RoomParticipant의 currentPage, userPercentage]와 해당 방의 [Room의 roomPercentage] 값이 변경된다.") void vote_create_room_participant_and_room_percentage_update() throws Exception { //given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(alias, "me")); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook(369)); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias)); + Category category = TestEntityFactory.createScienceCategory(); RoomJpaEntity room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, me, RoomParticipantRole.MEMBER, 0.0)); diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java index 8435973ac..279e79492 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java @@ -5,8 +5,8 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -37,9 +37,6 @@ class UserFollowApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private FollowingJpaRepository followingJpaRepository; @@ -47,21 +44,20 @@ class UserFollowApiTest { void tearDown() { followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @DisplayName("팔로우 요청 후 언팔로우 요청 시 엔티티가 삭제되었는지 확인한다.") void changeFollowingState_follow_then_unfollow() throws Exception { // 사용자 2명 저장 - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity followingUser = userJpaRepository.save(UserJpaEntity.builder() .nickname("user100") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("oauth2_user100") .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); UserJpaEntity target = userJpaRepository.save(UserJpaEntity.builder() @@ -69,7 +65,7 @@ void changeFollowingState_follow_then_unfollow() throws Exception { .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("oauth2_user200") .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); // 팔로우 요청 @@ -102,4 +98,4 @@ void changeFollowingState_follow_then_unfollow() throws Exception { userJpaEntity = userJpaRepository.findById(target.getUserId()).orElseThrow(); assertThat(userJpaEntity.getFollowerCount()).isEqualTo(0); // 팔로워 수 감소 확인 } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java index 0b6ae2276..a5b0d0938 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java @@ -4,8 +4,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,9 +38,6 @@ class UserGetFollowersApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -52,7 +49,7 @@ class UserGetFollowersApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); // 대상 사용자 targetUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); @@ -97,4 +94,4 @@ void getFollowersWithCursorPaging() throws Exception { .andExpect(jsonPath("$.data.isLast").value(true)) .andExpect(jsonPath("$.data.nextCursor").doesNotExist()); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java index 3288dec1a..e02c19ee3 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java @@ -4,8 +4,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,9 +38,6 @@ class UserGetFollowingApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -52,7 +49,7 @@ class UserGetFollowingApiTest { @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); // 로그인 사용자 loginUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); @@ -99,4 +96,4 @@ void getFollowingsWithCursorPaging() throws Exception { .andExpect(jsonPath("$.data.isLast").value(true)) .andExpect(jsonPath("$.data.nextCursor").doesNotExist()); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java index c514dd7b6..432420507 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java @@ -4,8 +4,8 @@ import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -32,9 +32,6 @@ class UserIsFollowingApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private FollowingJpaRepository followingJpaRepository; @@ -42,14 +39,13 @@ class UserIsFollowingApiTest { void tearDown() { followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @DisplayName("팔로우 관계가 존재하면 true를 반환한다.") void isFollowing_true() throws Exception { // given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias)); @@ -73,7 +69,7 @@ void isFollowing_true() throws Exception { @DisplayName("팔로우 관계가 없으면 false를 반환한다.") void isFollowing_false() throws Exception { // given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias alias = TestEntityFactory.createScienceAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias)); @@ -86,4 +82,4 @@ void isFollowing_false() throws Exception { .andExpect(status().isOk()) .andExpect(jsonPath("$.data.isFollowing").value(false)); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java index 365f40ca0..b7d7a23a1 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java @@ -13,15 +13,15 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.room.domain.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -53,15 +53,9 @@ class UserReactionApiTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private CategoryJpaRepository categoryJpaRepository; - @Autowired private BookJpaRepository bookJpaRepository; @@ -86,9 +80,9 @@ class UserReactionApiTest { @Autowired private PostLikeJpaRepository postLikeJpaRepository; - private AliasJpaEntity alias; + private Alias alias; private UserJpaEntity user; - private CategoryJpaEntity category; + private Category category; private BookJpaEntity book; private RoomJpaEntity room; private FeedJpaEntity feed; @@ -97,9 +91,9 @@ class UserReactionApiTest { @BeforeEach void setUp() { - alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + alias = TestEntityFactory.createLiteratureAlias(); user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + category = TestEntityFactory.createLiteratureCategory(); book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); room = roomJpaRepository.save(TestEntityFactory.createRoom(book, category)); feed = feedJpaRepository.save(TestEntityFactory.createFeed(user, book, true)); @@ -207,4 +201,4 @@ void showUserReaction_cursorPaging_success() throws Exception { .andExpect(jsonPath("$.data.reactionList.length()").value(5)) .andExpect(jsonPath("$.data.isLast").value(true)); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java index aea4eece9..58e1fef16 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -42,14 +42,11 @@ class UserSearchApiTest { @Autowired private RecentSearchJpaRepository recentSearchJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - private Long currentUserId; @BeforeEach void setUp() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); // 검색 요청을 하는 사용자 UserJpaEntity currentUser = userJpaRepository.save(TestEntityFactory.createUser(alias, "검색자")); diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java index fbe886ed8..847f2da89 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java @@ -8,8 +8,8 @@ import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -37,7 +37,6 @@ class UserShowFollowingsInFeedViewApiTest { @Autowired private MockMvc mockMvc; - @Autowired private AliasJpaRepository aliasJpaRepository; @Autowired private UserJpaRepository userJpaRepository; @Autowired private FeedJpaRepository feedJpaRepository; @Autowired private FollowingJpaRepository followingJpaRepository; @@ -49,7 +48,6 @@ void tearDown() { feedJpaRepository.deleteAllInBatch(); followingJpaRepository.deleteAllInBatch(); userJpaRepository.deleteAllInBatch(); - aliasJpaRepository.deleteAllInBatch(); bookJpaRepository.deleteAllInBatch(); } @@ -57,7 +55,7 @@ void tearDown() { @DisplayName("전체 피드 조회 화면에서, 내가 팔로잉 하는 사람들의 [userId, 닉네임, 프로필 이미지] 정보를 1.최근 공개 피드를 작성한 사람 -> 2.최근 팔로잉 맺은 사람 순으로 반환합니다.") void show_my_following_recent_writers_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); @@ -95,7 +93,7 @@ void show_my_following_recent_writers_test() throws Exception { @DisplayName("내가 팔로잉 하는 사람들 중, 공개 피드를 작성한 사람들이 많을 경우, 이들 중 가장 최근에 피드를 작성한 사람들 10명만을 조회합니다.") void show_my_following_recent_writers_private_feed_writer_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -206,7 +204,7 @@ void show_my_following_recent_writers_private_feed_writer_test() throws Exceptio @DisplayName("내가 팔로잉 하는 사람들 중, 최근에 공개 피드를 작성한 사람이 적을 경우, 이 사람들 + 최근에 팔로잉 맺은 사람들을 10명 조회합니다.") void show_my_following_recent_writers_too_many_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); @@ -329,7 +327,7 @@ void show_my_following_recent_writers_too_many_test() throws Exception { @DisplayName("유저가 가장 최근에 작성한 피드의 작성 시각(= createdAt)을 기준으로 정렬하여 반환된다.") void show_my_following_recent_writers_latest_feed_check_test() throws Exception { //given - AliasJpaEntity a0 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); + Alias a0 = TestEntityFactory.createScienceAlias(); UserJpaEntity me = userJpaRepository.save(TestEntityFactory.createUser(a0, "me")); UserJpaEntity user1 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user1")); UserJpaEntity user2 = userJpaRepository.save(TestEntityFactory.createUser(a0, "user2")); diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java index deb9adcf0..cc5ebdcc3 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java @@ -6,8 +6,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.in.web.request.UserSignupRequest; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -39,9 +39,6 @@ class UserSignupControllerTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Autowired private UserJpaRepository userJpaRepository; @@ -51,17 +48,16 @@ class UserSignupControllerTest { @AfterEach void tearDown() { userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @DisplayName("[칭호id, 닉네임] 정보를 바탕으로 회원가입을 진행한다.") void signup_success() throws Exception { //given : alias 생성, 회원가입 request 생성 - AliasJpaEntity aliasJpaEntity = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserSignupRequest request = new UserSignupRequest( - aliasJpaEntity.getValue(), + alias.getValue(), "테스트유저" ); @@ -81,10 +77,8 @@ void signup_success() throws Exception { Long userId = jsonNode.path("data").path("userId").asLong(); UserJpaEntity userJpaEntity = userJpaRepository.findById(userId).orElse(null); - AliasJpaEntity userAliasJpaEntity = aliasJpaRepository.findByValue(request.aliasName()).orElse(null); - - assertThat(userAliasJpaEntity.getValue()).isEqualTo(request.aliasName()); assertThat(userJpaEntity.getNickname()).isEqualTo(request.nickname()); + assertThat(userJpaEntity.getAlias().getValue()).isEqualTo(request.aliasName()); } @Test @@ -191,11 +185,11 @@ void signup_nickname_too_long() throws Exception { @DisplayName("임시 토큰을 통해 @Oauth2Id로 oauth2Id를 정확히 추출하여 회원가입에 성공한다.") void signup_whenValidSignupToken_thenExtractOauth2IdCorrectly() throws Exception { //given : alias 데이터 저장 - AliasJpaEntity aliasJpaEntity = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); //회원가입 request 생성 UserSignupRequest request = new UserSignupRequest( - aliasJpaEntity.getValue(), + alias.getValue(), "테스트유저" ); @@ -241,6 +235,4 @@ void signup_whenNoToken_thenUnauthorized() throws Exception { .andExpect(jsonPath("$.code").value(AUTH_TOKEN_NOT_FOUND.getCode())) .andExpect(jsonPath("$.message", containsString(AUTH_TOKEN_NOT_FOUND.getMessage()))); } - - } diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java index 8ad6d1219..db96ef59c 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -39,28 +39,24 @@ class UserUpdateApiTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @AfterEach void tearDown() { userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @DisplayName("사용자 닉네임과 별칭이 정상적으로 업데이트된다.") void updateUser_success() throws Exception { // given: 기존 alias 및 user 생성 - AliasJpaEntity oldAlias = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - AliasJpaEntity newAlias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias oldAlias = TestEntityFactory.createScienceAlias(); + Alias newAlias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(UserJpaEntity.builder() .nickname("oldthip") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .oauth2Id("oauth2_user100") .role(UserRole.USER) - .aliasForUserJpaEntity(oldAlias) + .alias(oldAlias) .build()); Long userId = user.getUserId(); @@ -79,8 +75,6 @@ void updateUser_success() throws Exception { // DB 검증: 닉네임과 alias가 업데이트되었는지 확인 UserJpaEntity updatedUser = userJpaRepository.findById(userId).orElseThrow(); assertThat(updatedUser.getNickname()).isEqualTo("newthip"); - - AliasJpaEntity updatedAlias = aliasJpaRepository.findById(updatedUser.getAliasForUserJpaEntity().getAliasId()).orElseThrow(); - assertThat(updatedAlias.getValue()).isEqualTo(newAlias.getValue()); + assertThat(updatedUser.getAlias()).isEqualTo(newAlias); } -} \ No newline at end of file +} diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java index c009c5ade..33ba7af96 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java @@ -5,8 +5,8 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.in.web.request.UserVerifyNicknameRequest; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,13 +43,9 @@ class UserVerifyNicknameControllerTest { @Autowired private UserJpaRepository userJpaRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @AfterEach void tearDown() { userJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); } @Test @@ -78,14 +74,14 @@ void verify_nickname_true() throws Exception { @DisplayName("[닉네임]값이 이미 DB에 존재하는 경우, false를 반환한다.") void verify_nickname_false() throws Exception { //given: DB에 "테스트유저" 생성 - AliasJpaEntity aliasJpaEntity = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity userJpaEntity = UserJpaEntity.builder() .nickname("테스트유저") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(USER) .oauth2Id("kakao_12345678") - .aliasForUserJpaEntity(aliasJpaEntity) + .alias(alias) .build(); userJpaRepository.save(userJpaEntity); diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java index ed96fd22d..5a0c27619 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java @@ -2,11 +2,10 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; -import konkuk.thip.user.adapter.in.web.response.UserViewAliasChoiceResponse; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; -import org.junit.jupiter.api.AfterEach; +import konkuk.thip.common.util.EnumMappings; +import konkuk.thip.room.domain.Category; +import konkuk.thip.user.domain.Alias; +import org.assertj.core.groups.Tuple; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -15,9 +14,8 @@ import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import java.util.List; +import java.util.ArrayList; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.tuple; @@ -37,51 +35,60 @@ class UserViewAliasChoiceControllerTest { @Autowired private ObjectMapper objectMapper; - @Autowired - private AliasJpaRepository aliasJpaRepository; - - @Autowired - private CategoryJpaRepository categoryJpaRepository; - - @AfterEach - void tearDown() { - categoryJpaRepository.deleteAll(); - aliasJpaRepository.deleteAll(); - } - @Test - @DisplayName("현재 DB에 존재하는 모든 [칭호, 카테고리] 정보를 반환한다.") + @DisplayName("유저 칭호 선택 화면을 조회하면, enum으로 정의된 Alias/Category 매핑이 형식과 내용 모두 정확히 반환된다.") void show_alias_choice_view() throws Exception { - //given - saveAliasesAndCategories(); - - //when - ResultActions result = mockMvc.perform(get("/users/alias") - .contentType(MediaType.APPLICATION_JSON)); - - //then - result.andExpect(status().isOk()) - .andExpect(jsonPath("$.data.aliasChoices").exists()); - - String json = result.andReturn().getResponse().getContentAsString(); - JsonNode jsonNode = objectMapper.readTree(json); - UserViewAliasChoiceResponse showResponse = objectMapper.treeToValue(jsonNode.get("data"), UserViewAliasChoiceResponse.class); - List choices = showResponse.aliasChoices(); - - assertThat(choices).hasSize(2); - assertThat(choices) - .extracting("aliasName", "categoryName") - .containsExactlyInAnyOrder( - tuple("문학가", "문학"), - tuple("과학자", "과학·IT") - ); - } - - private void saveAliasesAndCategories() { - AliasJpaEntity alias1 = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); - CategoryJpaEntity category1 = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias1)); - - AliasJpaEntity alias2 = aliasJpaRepository.save(TestEntityFactory.createScienceAlias()); - CategoryJpaEntity category2 = categoryJpaRepository.save(TestEntityFactory.createScienceCategory(alias2)); + // given: EnumMappings을 기준으로 기대값 구성 + var aliasToCategory = EnumMappings.getAliasToCategory(); + int expectedCount = aliasToCategory.size(); + + // when + var mvcResult = mockMvc.perform(get("/users/alias") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.data.aliasChoices").isArray()) + .andExpect(jsonPath("$.data.aliasChoices.length()").value(expectedCount)) + .andReturn(); + + // then: 응답 파싱 후 형식 및 내용 검증 + String body = mvcResult.getResponse().getContentAsString(); + JsonNode root = objectMapper.readTree(body); + JsonNode choices = root.path("data").path("aliasChoices"); + assertThat(choices.isArray()).isTrue(); + assertThat(choices.size()).isEqualTo(expectedCount); + + // 실제 응답을 (aliasName, categoryName, imageUrl, aliasColor) 튜플로 수집 + var actualTuples = new ArrayList(); + for (JsonNode n : choices) { + String aliasName = n.path("aliasName").asText(); + String categoryName = n.path("categoryName").asText(); + String imageUrl = n.path("imageUrl").asText(); + String aliasColor = n.path("aliasColor").asText(); + + // 스키마 기본 검증 + assertThat(aliasName).isNotBlank(); + assertThat(categoryName).isNotBlank(); + assertThat(imageUrl).isNotBlank(); + assertThat(aliasColor).isNotBlank(); + + actualTuples.add(tuple(aliasName, categoryName, imageUrl, aliasColor)); + } + + // 기대 튜플 구성: EnumMappings의 SSOT 기준 + var expectedTuples = aliasToCategory.entrySet().stream() + .map(e -> { + Alias alias = e.getKey(); + Category category = e.getValue(); + return tuple( + alias.getValue(), // aliasName + category.getValue(), // categoryName + alias.getImageUrl(), // imageUrl + alias.getColor() // aliasColor + ); + }) + .toList(); + + assertThat(actualTuples) + .containsExactlyInAnyOrderElementsOf(expectedTuples); } } diff --git a/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java b/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java index e847afb95..84d5650bf 100644 --- a/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java +++ b/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java @@ -3,8 +3,8 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -26,14 +26,11 @@ class UserJpaEntityTest { @Autowired private UserJpaRepository userRepository; - @Autowired - private AliasJpaRepository aliasJpaRepository; - @Test @DisplayName("UserJpaEntity 저장 및 조회 테스트") void saveAndFindUser() { // given - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userRepository.save(TestEntityFactory.createUser(alias)); // when @@ -44,7 +41,7 @@ void saveAndFindUser() { // then assertThat(foundUser.getNickname()).isEqualTo("테스터"); - assertThat(foundUser.getAliasForUserJpaEntity().getValue()).isEqualTo("문학가"); + assertThat(foundUser.getAlias().getValue()).isEqualTo("문학가"); assertThat(foundUser.getRole()).isEqualTo(UserRole.USER); } -} \ No newline at end of file +} From a79cf0d52f4f73dfc9a2f9618c5226c1bf068e57 Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Wed, 20 Aug 2025 17:16:00 +0900 Subject: [PATCH 12/45] =?UTF-8?q?[refactor]=20nullable=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java index f676c3521..94b93f9fe 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java @@ -38,7 +38,7 @@ public class FeedJpaEntity extends PostJpaEntity { // JSON 문자열로 저장되는 단일 컬럼 @Convert(converter = ContentListJsonConverter.class) - @Column(name = "content_list", columnDefinition = "TEXT", nullable = false) + @Column(name = "content_list", columnDefinition = "TEXT") private ContentList contentList = ContentList.empty(); // 삭제용 피드 저장 양방향 매핑 관계 @@ -47,7 +47,7 @@ public class FeedJpaEntity extends PostJpaEntity { @Column(name = "tag_list", columnDefinition = "TEXT") @Convert(converter = TagListJsonConverter.class) - private TagList tagList = TagList.of(List.of()); + private TagList tagList = TagList.empty(); @Builder public FeedJpaEntity(String content, Integer likeCount, Integer commentCount, UserJpaEntity userJpaEntity, Boolean isPublic, int reportCount, BookJpaEntity bookJpaEntity, ContentList contentList, TagList tagList) { @@ -55,9 +55,8 @@ public FeedJpaEntity(String content, Integer likeCount, Integer commentCount, Us this.isPublic = isPublic; this.reportCount = reportCount; this.bookJpaEntity = bookJpaEntity; - if(contentList != null) this.contentList = contentList; - this.contentList = contentList; - this.tagList = tagList != null ? tagList : TagList.of(List.of()); + this.contentList = contentList != null ? contentList : ContentList.empty(); + this.tagList = tagList != null ? tagList : TagList.empty(); } public void updateFrom(Feed feed) { From 8b43d03c8dd6fe89580b8630b5fd54b0f9cbba70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:32:41 +0900 Subject: [PATCH 13/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=EC=9A=A9=20=EB=A7=88=EA=B0=90=EC=9D=BC=20?= =?UTF-8?q?=EB=B3=B4=EC=97=AC=EC=A3=BC=EB=8A=94=20RecruitingRoomFormatAfte?= =?UTF-8?q?rTime=20=EC=B6=94=EA=B0=80=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../konkuk/thip/common/util/DateUtil.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/java/konkuk/thip/common/util/DateUtil.java b/src/main/java/konkuk/thip/common/util/DateUtil.java index e2c7a33a8..7e4f6f373 100644 --- a/src/main/java/konkuk/thip/common/util/DateUtil.java +++ b/src/main/java/konkuk/thip/common/util/DateUtil.java @@ -46,6 +46,29 @@ public static String formatAfterTime(LocalDate date) { return minutes + "분 뒤"; } + public static String RecruitingRoomFormatAfterTime(LocalDate date) { + LocalDateTime now = LocalDateTime.now(); + LocalDateTime dateTime = date.atStartOfDay(); + Duration d = Duration.between(now, dateTime); + + if (d.isNegative() || d.isZero()) { + return "??"; + } + + long days = d.toDays(); + if (days > 0) { + return days + "일 남음"; + } + + long hours = d.toHours(); + if (hours >= 1) { + return hours + "시간 남음"; + } + + return "마감 임박"; + } + + public static String formatDate(LocalDate date) { return date.format(DATE_FORMATTER); } From b22f5d2a7029ca6613d1190b0a07e8437af1ccf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:33:18 +0900 Subject: [PATCH 14/45] =?UTF-8?q?[feat]=20=EC=B5=9C=EA=B7=BC=EA=B2=80?= =?UTF-8?q?=EC=83=89=EC=96=B4=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20id=20hidden?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#261)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/in/web/RecentSearchCommandController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchCommandController.java b/src/main/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchCommandController.java index d92097cfe..506e5061c 100644 --- a/src/main/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchCommandController.java +++ b/src/main/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchCommandController.java @@ -1,6 +1,7 @@ package konkuk.thip.recentSearch.adapter.in.web; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import konkuk.thip.common.dto.BaseResponse; import konkuk.thip.common.security.annotation.UserId; @@ -25,7 +26,7 @@ public class RecentSearchCommandController { @DeleteMapping("/recent-searches/{recentSearchId}") public BaseResponse deleteRecentSearch( @PathVariable(value = "recentSearchId") final Long recentSearchId, - @UserId final Long userId + @Parameter(hidden = true) @UserId final Long userId ) { return BaseResponse.ok(recentSearchDeleteUseCase.deleteRecentSearch(recentSearchId, userId)); } From d25cbf9b81e82771c6abd57c88f15cdd8ff69d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:33:43 +0900 Subject: [PATCH 15/45] =?UTF-8?q?[refactor]=20=EC=97=90=EB=9F=AC=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20static=20import=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/konkuk/thip/room/domain/Room.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/room/domain/Room.java b/src/main/java/konkuk/thip/room/domain/Room.java index 6aa01564c..578066bed 100644 --- a/src/main/java/konkuk/thip/room/domain/Room.java +++ b/src/main/java/konkuk/thip/room/domain/Room.java @@ -135,7 +135,7 @@ public void validateRoomRecruitExpired() { if (isRecruitmentPeriodExpired()) { String message = String.format("모집기간(%s까지)이 만료된 방에는 참여할 수 없습니다.", deadline); throw new InvalidStateException( - ErrorCode.ROOM_RECRUITMENT_PERIOD_EXPIRED, new IllegalArgumentException(message) + ROOM_RECRUITMENT_PERIOD_EXPIRED, new IllegalArgumentException(message) ); } } From a3b65fb8998cac7e76d28e8de28462c8376fa6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:34:19 +0900 Subject: [PATCH 16/45] =?UTF-8?q?[refactor]=20=EB=B0=A9=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EC=B6=94=EC=B2=9C=EB=B0=A9=20?= =?UTF-8?q?=EC=B1=85=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../out/persistence/repository/RoomQueryRepositoryImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java index 655768236..b65cf4bb5 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java @@ -175,8 +175,9 @@ public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc( public List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, Category category, int count) { NumberExpression memberCountExpr = participant.roomParticipantId.count(); List tuples = queryFactory - .select(room.roomId, room.title, memberCountExpr, room.recruitCount, room.startDate) + .select(room.roomId, room.title, memberCountExpr, room.recruitCount, room.startDate, book.imageUrl) .from(room) + .join(room.bookJpaEntity, book) .leftJoin(participant).on(participant.roomJpaEntity.eq(room)) .where( room.category.eq(category) @@ -192,7 +193,7 @@ public List findOtherRecruitingR return tuples.stream() .map(t -> RoomRecruitingDetailViewResponse.RecommendRoom.builder() .roomId(t.get(room.roomId)) - .roomImageUrl(null) // roomImageUrl은 추후 구현 + .bookImageUrl(t.get(book.imageUrl)) .roomName(t.get(room.title)) .memberCount(t.get(memberCountExpr).intValue()) .recruitCount(t.get(room.recruitCount)) From 0ebac908e009f23b3d0539994bf741b13a5b2e75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:34:27 +0900 Subject: [PATCH 17/45] =?UTF-8?q?[refactor]=20=EB=B0=A9=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EC=B6=94=EC=B2=9C=EB=B0=A9=20?= =?UTF-8?q?=EC=B1=85=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/response/RoomRecruitingDetailViewResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitingDetailViewResponse.java b/src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitingDetailViewResponse.java index 705d197f0..07b692c5e 100644 --- a/src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitingDetailViewResponse.java +++ b/src/main/java/konkuk/thip/room/adapter/in/web/response/RoomRecruitingDetailViewResponse.java @@ -31,7 +31,7 @@ public record RoomRecruitingDetailViewResponse( @Builder public record RecommendRoom( Long roomId, - String roomImageUrl, + String bookImageUrl, String roomName, int memberCount, int recruitCount, From 2e4894e6a5a019c4b14c76ae498f5949aaf2c379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:34:41 +0900 Subject: [PATCH 18/45] =?UTF-8?q?[refactor]=20=EB=AA=A8=EC=A7=91=EB=A7=88?= =?UTF-8?q?=EA=B0=90=ED=95=9C=20=EB=B0=A9=20=EB=B0=A9=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EB=B3=B4=EA=B8=B0=20=EC=A1=B0=ED=9A=8C=20=EC=95=88=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EA=B2=80=EC=A6=9D=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RoomShowRecruitingDetailViewService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/room/application/service/RoomShowRecruitingDetailViewService.java b/src/main/java/konkuk/thip/room/application/service/RoomShowRecruitingDetailViewService.java index d7899a352..5600c619b 100644 --- a/src/main/java/konkuk/thip/room/application/service/RoomShowRecruitingDetailViewService.java +++ b/src/main/java/konkuk/thip/room/application/service/RoomShowRecruitingDetailViewService.java @@ -33,6 +33,8 @@ public class RoomShowRecruitingDetailViewService implements RoomShowRecruitingDe public RoomRecruitingDetailViewResponse getRecruitingRoomDetailView(Long userId, Long roomId) { // 1. Room 조회, Book 조회 Room room = roomCommandPort.getByIdOrThrow(roomId); + room.validateRoomRecruitExpired(); // 모집기간 지난 방 예외처리 + Book book = bookCommandPort.findById(room.getBookId()); // 2. Room과 연관된 UserRoom 조회, RoomParticipants 일급 컬렉션 생성 @@ -62,7 +64,7 @@ private RoomRecruitingDetailViewResponse buildResponse( .isPublic(room.isPublic()) .progressStartDate(DateUtil.formatDate(room.getStartDate())) .progressEndDate(DateUtil.formatDate(room.getEndDate())) - .recruitEndDate(DateUtil.formatAfterTime(room.getStartDate())) + .recruitEndDate(DateUtil.RecruitingRoomFormatAfterTime(room.getStartDate())) .category(room.getCategory().getValue()) .categoryColor(roomQueryPort.findAliasColorOfCategory(room.getCategory())) // TODO : 리펙토링 대상 .roomDescription(room.getDescription()) From 48fe4f1e8971eaf81561b885f75bf767188f7826 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 15:34:54 +0900 Subject: [PATCH 19/45] =?UTF-8?q?[refactor]=20=EB=B0=A9=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EB=B3=B4=EA=B8=B0=20=EC=A1=B0=ED=9A=8C=20=EC=8A=A4?= =?UTF-8?q?=EC=9B=A8=EA=B1=B0=20=EC=97=90=EB=9F=AC=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#249)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/common/swagger/SwaggerResponseDescription.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java index e7d1b2ffb..cc4ad261b 100644 --- a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java +++ b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java @@ -84,7 +84,9 @@ public enum SwaggerResponseDescription { ROOM_PASSWORD_NOT_REQUIRED ))), ROOM_RECRUITING_DETAIL_VIEW(new LinkedHashSet<>(Set.of( - ROOM_NOT_FOUND + ROOM_NOT_FOUND, + BOOK_NOT_FOUND, + ROOM_RECRUITMENT_PERIOD_EXPIRED ))), ROOM_GET_HOME_JOINED_LIST(new LinkedHashSet<>(Set.of( USER_NOT_FOUND From fb3fc5bcf84b6721d32ba81b665ee902abebf889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 16:32:13 +0900 Subject: [PATCH 20/45] =?UTF-8?q?[refactor]=20=EC=98=A4=EB=8A=98=EC=9D=98?= =?UTF-8?q?=20=ED=95=9C=EB=A7=88=EB=94=94=20=EC=9E=91=EC=84=B1=20=EC=8A=A4?= =?UTF-8?q?=EC=9B=A8=EA=B1=B0=20=EC=97=90=EB=9F=AC=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/konkuk/thip/common/exception/code/ErrorCode.java | 1 + .../konkuk/thip/common/swagger/SwaggerResponseDescription.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java index 6eb0a5e3c..d4f204648 100644 --- a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java +++ b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java @@ -203,6 +203,7 @@ public enum ErrorCode implements ResponseCode { * 195000 : AttendanceCheck error */ ATTENDANCE_CHECK_WRITE_LIMIT_EXCEEDED(HttpStatus.BAD_REQUEST, 195000, "오늘의 한마디 작성 가능 횟수를 초과하였습니다."), + ATTENDANCE_CHECK_NOT_FOUND(HttpStatus.NOT_FOUND, 195001, "존재하지 않는 ATTENDANCE CHECK 입니다."), ; diff --git a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java index cc4ad261b..291dd5b68 100644 --- a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java +++ b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java @@ -294,7 +294,8 @@ public enum SwaggerResponseDescription { ROOM_ACCESS_FORBIDDEN, ROOM_NOT_FOUND, USER_NOT_FOUND, - ATTENDANCE_CHECK_WRITE_LIMIT_EXCEEDED + ATTENDANCE_CHECK_WRITE_LIMIT_EXCEEDED, + ATTENDANCE_CHECK_NOT_FOUND ))), ATTENDANCE_CHECK_SHOW(new LinkedHashSet<>(Set.of( From 7a29871e32b9b9bf3564f4759023b39d45352405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 16:32:24 +0900 Subject: [PATCH 21/45] =?UTF-8?q?[refactor]=20=EC=98=A4=EB=8A=98=EC=9D=98?= =?UTF-8?q?=20=ED=95=9C=EB=A7=88=EB=94=94=20=EC=9E=91=EC=84=B1=20response?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AttendanceCheckCreateService.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/konkuk/thip/roompost/application/service/AttendanceCheckCreateService.java b/src/main/java/konkuk/thip/roompost/application/service/AttendanceCheckCreateService.java index 44d97b3b4..1fa93c9ca 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/AttendanceCheckCreateService.java +++ b/src/main/java/konkuk/thip/roompost/application/service/AttendanceCheckCreateService.java @@ -1,5 +1,6 @@ package konkuk.thip.roompost.application.service; +import konkuk.thip.common.util.DateUtil; import konkuk.thip.roompost.application.port.in.AttendanceCheckCreateUseCase; import konkuk.thip.roompost.application.port.in.dto.attendancecheck.AttendanceCheckCreateCommand; import konkuk.thip.roompost.application.port.in.dto.attendancecheck.AttendanceCheckCreateResult; @@ -7,6 +8,8 @@ import konkuk.thip.roompost.application.port.out.AttendanceCheckQueryPort; import konkuk.thip.roompost.domain.AttendanceCheck; import konkuk.thip.room.application.service.validator.RoomParticipantValidator; +import konkuk.thip.user.application.port.out.UserCommandPort; +import konkuk.thip.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,12 +20,16 @@ public class AttendanceCheckCreateService implements AttendanceCheckCreateUseCas private final RoomParticipantValidator roomParticipantValidator; private final AttendanceCheckCommandPort attendanceCheckCommandPort; + private final UserCommandPort userCommandPort; private final AttendanceCheckQueryPort attendanceCheckQueryPort; @Transactional @Override public AttendanceCheckCreateResult create(AttendanceCheckCreateCommand command) { - // 1. 유저가 해당 방에 오늘의 한마디를 작성할 수 있는지 검증 + + // 1. 유저 검증 및 조회 + User user = userCommandPort.findById(command.creatorId()); + // 1-1. 유저가 해당 방에 오늘의 한마디를 작성할 수 있는지 검증 roomParticipantValidator.validateUserIsRoomMember(command.roomId(), command.creatorId()); // 2. 유저가 해당 방에서 오늘 이미 작성한 오늘의 한마디 개수 조회 @@ -30,12 +37,19 @@ public AttendanceCheckCreateResult create(AttendanceCheckCreateCommand command) // 3. 출석체크 도메인 생성 및 저장 AttendanceCheck attendanceCheck = AttendanceCheck.withoutId(command.roomId(), command.creatorId(), command.content(), alreadyWrittenCountToday); - Long savedId = attendanceCheckCommandPort.save(attendanceCheck); + AttendanceCheck SavedattendanceCheck = attendanceCheckCommandPort.getByIdOrThrow(attendanceCheckCommandPort.save(attendanceCheck)); return AttendanceCheckCreateResult.builder() - .attendanceCheckId(savedId) .roomId(command.roomId()) + .attendanceCheckId(SavedattendanceCheck.getId()) + .creatorId(command.creatorId()) + .creatorNickname(user.getNickname()) + .creatorProfileImageUrl(user.getAlias().getImageUrl()) + .todayComment(command.content()) + .postDate(DateUtil.formatBeforeTime(SavedattendanceCheck.getCreatedAt())) + .date(SavedattendanceCheck.getCreatedAt().toLocalDate()) .todayWriteCountOfUser(alreadyWrittenCountToday + 1) + .isWriter(true) .build(); } } From cc1deb6d1f86f58068d13784c054e28ba4ce9515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 16:32:31 +0900 Subject: [PATCH 22/45] =?UTF-8?q?[refactor]=20=EC=98=A4=EB=8A=98=EC=9D=98?= =?UTF-8?q?=20=ED=95=9C=EB=A7=88=EB=94=94=20=EC=9E=91=EC=84=B1=20response?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttendanceCheckCreateResponse.java | 28 ++++++++++++++++--- .../AttendanceCheckCreateResult.java | 13 +++++++-- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/konkuk/thip/roompost/adapter/in/web/response/AttendanceCheckCreateResponse.java b/src/main/java/konkuk/thip/roompost/adapter/in/web/response/AttendanceCheckCreateResponse.java index 68be54e3a..fb6117a86 100644 --- a/src/main/java/konkuk/thip/roompost/adapter/in/web/response/AttendanceCheckCreateResponse.java +++ b/src/main/java/konkuk/thip/roompost/adapter/in/web/response/AttendanceCheckCreateResponse.java @@ -1,20 +1,40 @@ package konkuk.thip.roompost.adapter.in.web.response; +import io.swagger.v3.oas.annotations.media.Schema; import konkuk.thip.roompost.application.port.in.dto.attendancecheck.AttendanceCheckCreateResult; +import java.time.LocalDate; + public record AttendanceCheckCreateResponse( - Long attendanceCheckId, Long roomId, - boolean isFirstWrite + Long attendanceCheckId, + Long creatorId, + String creatorNickname, + String creatorProfileImageUrl, + String todayComment, + @Schema(description = "작성 시각(상대 시간 등 가공된 문자열)", example = "5분 전") + String postDate, + @Schema(description = "작성 날짜(yyyy-MM-dd)", example = "2025-08-17") + LocalDate date, // 해당 오늘의 한마디 데이터의 작성 날짜 + boolean isFirstWrite, + boolean isWriter ) { public static AttendanceCheckCreateResponse of(AttendanceCheckCreateResult result) { boolean isFirstWrite = false; if (result.todayWriteCountOfUser() == 1) isFirstWrite = true; return new AttendanceCheckCreateResponse( - result.attendanceCheckId(), result.roomId(), - isFirstWrite + result.attendanceCheckId(), + result.creatorId(), + result.creatorNickname(), + result.creatorProfileImageUrl(), + result.todayComment(), + result.postDate(), + result.date(), + isFirstWrite, + result.isWriter() ); } } + diff --git a/src/main/java/konkuk/thip/roompost/application/port/in/dto/attendancecheck/AttendanceCheckCreateResult.java b/src/main/java/konkuk/thip/roompost/application/port/in/dto/attendancecheck/AttendanceCheckCreateResult.java index dc87fddec..9fa729ce5 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/in/dto/attendancecheck/AttendanceCheckCreateResult.java +++ b/src/main/java/konkuk/thip/roompost/application/port/in/dto/attendancecheck/AttendanceCheckCreateResult.java @@ -2,9 +2,18 @@ import lombok.Builder; +import java.time.LocalDate; + @Builder public record AttendanceCheckCreateResult( - Long attendanceCheckId, Long roomId, - int todayWriteCountOfUser + Long attendanceCheckId, + Long creatorId, + String creatorNickname, + String creatorProfileImageUrl, + String todayComment, + String postDate, + LocalDate date, // 해당 오늘의 한마디 데이터의 작성 날짜 + int todayWriteCountOfUser, + boolean isWriter ) { } From 0bd171ba48903954ca35a4b7a30d5a73c0af4cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 16:34:32 +0900 Subject: [PATCH 23/45] =?UTF-8?q?[refactor]=20=EC=98=A4=EB=8A=98=EC=9D=98?= =?UTF-8?q?=20=ED=95=9C=EB=A7=88=EB=94=94=20=EC=9E=91=EC=84=B1=20Attendanc?= =?UTF-8?q?eCheckCommandPort.findById=20=EC=9E=91=EC=84=B1=20(#256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AttendanceCheckCommandPersistenceAdapter.java | 8 ++++++++ .../port/out/AttendanceCheckCommandPort.java | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/AttendanceCheckCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/AttendanceCheckCommandPersistenceAdapter.java index 33d36ca41..90dcb5824 100644 --- a/src/main/java/konkuk/thip/roompost/adapter/out/persistence/AttendanceCheckCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/roompost/adapter/out/persistence/AttendanceCheckCommandPersistenceAdapter.java @@ -12,6 +12,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; +import java.util.Optional; + import static konkuk.thip.common.exception.code.ErrorCode.ROOM_NOT_FOUND; import static konkuk.thip.common.exception.code.ErrorCode.USER_NOT_FOUND; @@ -38,4 +40,10 @@ public Long save(AttendanceCheck attendanceCheck) { attendanceCheckMapper.toJpaEntity(attendanceCheck, roomJpaEntity, userJpaEntity) ).getAttendanceCheckId(); } + + @Override + public Optional findById(Long id) { + return attendanceCheckJpaRepository.findById(id) + .map(attendanceCheckMapper::toDomainEntity); + } } diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/AttendanceCheckCommandPort.java b/src/main/java/konkuk/thip/roompost/application/port/out/AttendanceCheckCommandPort.java index 68f974a97..5fc2c2559 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/AttendanceCheckCommandPort.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/AttendanceCheckCommandPort.java @@ -1,8 +1,20 @@ package konkuk.thip.roompost.application.port.out; +import konkuk.thip.common.exception.EntityNotFoundException; import konkuk.thip.roompost.domain.AttendanceCheck; +import java.util.Optional; + +import static konkuk.thip.common.exception.code.ErrorCode.ATTENDANCE_CHECK_NOT_FOUND; + public interface AttendanceCheckCommandPort { Long save(AttendanceCheck attendanceCheck); + + Optional findById(Long id); + + default AttendanceCheck getByIdOrThrow(Long id) { + return findById(id) + .orElseThrow(() -> new EntityNotFoundException(ATTENDANCE_CHECK_NOT_FOUND)); + } } From 97619b4f8eabfb85fb2cef22aa6a66a895d49c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Tue, 19 Aug 2025 17:10:05 +0900 Subject: [PATCH 24/45] =?UTF-8?q?[hotfix]=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD=20(#256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../konkuk/thip/room/adapter/in/web/RoomQueryController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java b/src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java index db98e37e9..0dc020d0c 100644 --- a/src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java +++ b/src/main/java/konkuk/thip/room/adapter/in/web/RoomQueryController.java @@ -142,7 +142,7 @@ public BaseResponse getBookPage( @Parameter(description = "방 ID", example = "1") @PathVariable("roomId") final Long roomId, @Parameter(hidden = true) @UserId final Long userId ) { - return BaseResponse.ok(roomGetBookPageUseCase.getBookPage(roomId, userId)); + return BaseResponse.ok(roomGetBookPageUseCase.getBookPage(userId, roomId)); } @Operation( From 4311688a8f4ad7e7e5ca6b92b49437c41d7ed903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:44:29 +0900 Subject: [PATCH 25/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EA=B4=80=EB=A0=A8=20=EC=97=90=EB=9F=AC=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/konkuk/thip/common/exception/code/ErrorCode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java index d4f204648..a8ea94d64 100644 --- a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java +++ b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java @@ -141,7 +141,7 @@ public enum ErrorCode implements ResponseCode { INVALID_MY_ROOM_TYPE(HttpStatus.BAD_REQUEST, 140009, "유저가 참가한 방 목록 검색 요청에 유효하지 않은 MY ROOM type 이 있습니다."), INVALID_MY_ROOM_CURSOR(HttpStatus.BAD_REQUEST, 140010, "유저가 참가한 방 목록 검색 요청에 유효하지 않은 cursor 가 있습니다"), ROOM_ACCESS_FORBIDDEN(HttpStatus.FORBIDDEN, 140011, "방 접근 권한이 없습니다."), - + ROOM_HOST_CANNOT_LEAVE(HttpStatus.BAD_REQUEST, 140012, "방장은 방을 나갈 수 없습니다."), /** * 150000 : Category error */ From 3301f4fc340cba55d118988187e442fa79181611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:44:55 +0900 Subject: [PATCH 26/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=EC=9E=91?= =?UTF-8?q?=EC=84=B1=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter/in/web/RoomCommandController.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java b/src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java index 2313e0a1d..d9a72c804 100644 --- a/src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java +++ b/src/main/java/konkuk/thip/room/adapter/in/web/RoomCommandController.java @@ -17,12 +17,10 @@ import konkuk.thip.room.adapter.in.web.response.RoomRecruitCloseResponse; import konkuk.thip.room.application.port.in.RoomCreateUseCase; import konkuk.thip.room.application.port.in.RoomJoinUseCase; +import konkuk.thip.room.application.port.in.RoomParticipantDeleteUseCase; import konkuk.thip.room.application.port.in.RoomRecruitCloseUseCase; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import static konkuk.thip.common.swagger.SwaggerResponseDescription.*; @@ -34,6 +32,7 @@ public class RoomCommandController { private final RoomCreateUseCase roomCreateUseCase; private final RoomJoinUseCase roomJoinUsecase; private final RoomRecruitCloseUseCase roomRecruitCloseUsecase; + private final RoomParticipantDeleteUseCase roomParticipantDeleteUseCase; private final PostLikeUseCase postLikeUseCase; /** @@ -102,4 +101,16 @@ public BaseResponse likeRoomPost( @Parameter(hidden = true) @UserId final Long userId) { return BaseResponse.ok(RoomPostIsLikeResponse.of(postLikeUseCase.changeLikeStatusPost(request.toCommand(userId, postId)))); } + + @Operation( + summary = "방 나가기", + description = "방장을 제외한 방의 멤버들이 방에서 나갑니다." + ) + @ExceptionDescription(ROOM_LEAVE) + @DeleteMapping("/rooms/{roomId}/leave") + public BaseResponse deleteRoomParticipant( + @Parameter(hidden = true) @UserId final Long userId, + @Parameter(description = "나갈 방의 ID", example = "1") @PathVariable final Long roomId) { + return BaseResponse.ok(roomParticipantDeleteUseCase.leaveRoom(userId, roomId)); + } } From 4b3beed4f2d8069134f104e1ac52dfe624f0cd56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:45:19 +0900 Subject: [PATCH 27/45] =?UTF-8?q?[feat]=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=9A=A9=20RoomJpaEntity.updateRoomPercentage=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java index 800cfc56f..fb3c73253 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java +++ b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java @@ -85,4 +85,7 @@ public void updateStartDate(LocalDate localDate) { public void updateIsPublic(boolean isPublic) { this.isPublic = isPublic; } + + @VisibleForTesting + public void updateRoomPercentage(double roomPercentage) {this.roomPercentage = roomPercentage;} } From 99321da1cbc805ac2b44ed27ee957565be46e9a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:45:32 +0900 Subject: [PATCH 28/45] =?UTF-8?q?[feat]=20=EB=B0=A9=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EA=B4=80=EB=A0=A8=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EC=B6=94=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/konkuk/thip/room/domain/RoomParticipant.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/konkuk/thip/room/domain/RoomParticipant.java b/src/main/java/konkuk/thip/room/domain/RoomParticipant.java index 926a9d3fe..ca9c3b081 100644 --- a/src/main/java/konkuk/thip/room/domain/RoomParticipant.java +++ b/src/main/java/konkuk/thip/room/domain/RoomParticipant.java @@ -1,10 +1,13 @@ package konkuk.thip.room.domain; import konkuk.thip.common.entity.BaseDomainEntity; +import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import lombok.Getter; import lombok.experimental.SuperBuilder; +import static konkuk.thip.common.exception.code.ErrorCode.ROOM_HOST_CANNOT_LEAVE; + @Getter @SuperBuilder public class RoomParticipant extends BaseDomainEntity { @@ -68,5 +71,10 @@ private boolean checkRole(RoomParticipantRole roomParticipantRole) { return this.roomParticipantRole.equals(roomParticipantRole.getType()); } + public void validateRoomLeavable() { + if (isHost()) { + throw new InvalidStateException(ROOM_HOST_CANNOT_LEAVE); + } + } } From 631bf2acedec6e047158da0e6fb3c3b6b41de33f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:45:59 +0900 Subject: [PATCH 29/45] =?UTF-8?q?[todo]=20=EB=A6=AC=ED=8E=99=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20=EB=B0=A9=20=EA=B8=B0=EB=A1=9D=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=EC=8B=9C=20=EB=B0=A9=20=ED=8D=BC=EC=84=BC=ED=8A=B8=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20todo=20=EC=B6=94=EA=B0=80=20(#265?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/roompost/application/service/RecordDeleteService.java | 3 +++ .../thip/roompost/application/service/VoteDeleteService.java | 1 + 2 files changed, 4 insertions(+) diff --git a/src/main/java/konkuk/thip/roompost/application/service/RecordDeleteService.java b/src/main/java/konkuk/thip/roompost/application/service/RecordDeleteService.java index b8bb5dcd7..4388472c0 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/RecordDeleteService.java +++ b/src/main/java/konkuk/thip/roompost/application/service/RecordDeleteService.java @@ -5,6 +5,7 @@ import konkuk.thip.roompost.application.port.in.RecordDeleteUseCase; import konkuk.thip.roompost.application.port.in.dto.record.RecordDeleteCommand; import konkuk.thip.roompost.application.port.out.RecordCommandPort; +import konkuk.thip.roompost.application.service.manager.RoomProgressManager; import konkuk.thip.roompost.domain.Record; import konkuk.thip.room.application.service.validator.RoomParticipantValidator; import lombok.RequiredArgsConstructor; @@ -20,6 +21,7 @@ public class RecordDeleteService implements RecordDeleteUseCase { private final PostLikeCommandPort postLikeCommandPort; private final RoomParticipantValidator roomParticipantValidator; + private final RoomProgressManager roomProgressManager; @Override @Transactional @@ -41,6 +43,7 @@ public Long deleteRecord(RecordDeleteCommand command) { // 3-3. 기록 삭제 recordCommandPort.delete(record); + //TODO// 4. 유저 방 진행도 업데이트 return command.roomId(); } } diff --git a/src/main/java/konkuk/thip/roompost/application/service/VoteDeleteService.java b/src/main/java/konkuk/thip/roompost/application/service/VoteDeleteService.java index 5fa410ef6..d0ac331d1 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/VoteDeleteService.java +++ b/src/main/java/konkuk/thip/roompost/application/service/VoteDeleteService.java @@ -41,6 +41,7 @@ public Long deleteVote(VoteDeleteCommand command) { // 3-3. 투표 삭제 voteCommandPort.delete(vote); + //TODO// 4. 유저 방 진행도 업데이트 return command.roomId(); } } From 6c778cffe0d84a32bfee5a3a31fa3944dfdc75d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:46:24 +0900 Subject: [PATCH 30/45] =?UTF-8?q?[refactor]=20static=20import=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/port/out/RoomParticipantCommandPort.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/konkuk/thip/room/application/port/out/RoomParticipantCommandPort.java b/src/main/java/konkuk/thip/room/application/port/out/RoomParticipantCommandPort.java index 7cf57912b..519a66e43 100644 --- a/src/main/java/konkuk/thip/room/application/port/out/RoomParticipantCommandPort.java +++ b/src/main/java/konkuk/thip/room/application/port/out/RoomParticipantCommandPort.java @@ -1,19 +1,20 @@ package konkuk.thip.room.application.port.out; import konkuk.thip.common.exception.EntityNotFoundException; -import konkuk.thip.common.exception.code.ErrorCode; import konkuk.thip.room.domain.RoomParticipant; import java.util.List; import java.util.Optional; +import static konkuk.thip.common.exception.code.ErrorCode.ROOM_PARTICIPANT_NOT_FOUND; + public interface RoomParticipantCommandPort { Optional findByUserIdAndRoomIdOptional(Long userId, Long roomId); default RoomParticipant getByUserIdAndRoomIdOrThrow(Long userId, Long roomId) { return findByUserIdAndRoomIdOptional(userId, roomId) - .orElseThrow(() -> new EntityNotFoundException(ErrorCode.ROOM_PARTICIPANT_NOT_FOUND)); + .orElseThrow(() -> new EntityNotFoundException(ROOM_PARTICIPANT_NOT_FOUND)); } List findAllByRoomId(Long roomId); From ae7ea844b84577d2de236dbca0e9c2ad94d673a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:47:00 +0900 Subject: [PATCH 31/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=A0=EC=A6=88=EC=BC=80=EC=9D=B4=EC=8A=A4=20Roo?= =?UTF-8?q?mParticipantDeleteUseCase=20=EC=9E=91=EC=84=B1(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/port/in/RoomParticipantDeleteUseCase.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main/java/konkuk/thip/room/application/port/in/RoomParticipantDeleteUseCase.java diff --git a/src/main/java/konkuk/thip/room/application/port/in/RoomParticipantDeleteUseCase.java b/src/main/java/konkuk/thip/room/application/port/in/RoomParticipantDeleteUseCase.java new file mode 100644 index 000000000..027403ab2 --- /dev/null +++ b/src/main/java/konkuk/thip/room/application/port/in/RoomParticipantDeleteUseCase.java @@ -0,0 +1,5 @@ +package konkuk.thip.room.application.port.in; + +public interface RoomParticipantDeleteUseCase { + Void leaveRoom(Long userId, Long roomId); +} From cd4be85c814f0c210d1e20e48aa1da8bf4c7d5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:47:12 +0900 Subject: [PATCH 32/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=A0=EC=A6=88=EC=BC=80=EC=9D=B4=EC=8A=A4=20Roo?= =?UTF-8?q?mParticipantDeleteUseCase=20=EA=B5=AC=ED=98=84=EC=B2=B4=20RoomP?= =?UTF-8?q?articipantDeleteService=20=EC=9E=91=EC=84=B1(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RoomParticipantDeleteService.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java diff --git a/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java b/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java new file mode 100644 index 000000000..6a303fe91 --- /dev/null +++ b/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java @@ -0,0 +1,41 @@ +package konkuk.thip.room.application.service; + +import konkuk.thip.room.application.port.in.RoomParticipantDeleteUseCase; +import konkuk.thip.room.application.port.out.RoomCommandPort; +import konkuk.thip.room.application.port.out.RoomParticipantCommandPort; +import konkuk.thip.room.domain.Room; +import konkuk.thip.room.domain.RoomParticipant; +import konkuk.thip.roompost.application.service.manager.RoomProgressManager; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class RoomParticipantDeleteService implements RoomParticipantDeleteUseCase { + + private final RoomCommandPort roomCommandPort; + private final RoomParticipantCommandPort roomParticipantCommandPort; + + private final RoomProgressManager roomProgressManager; + + @Override + @Transactional + public Void leaveRoom(Long userId, Long roomId) { + + // 1. 방 조회 및 검증 + Room room = roomCommandPort.getByIdOrThrow(roomId); + + // 2. 사용자가 방 참여자인지 확인 + RoomParticipant roomParticipant = roomParticipantCommandPort.getByUserIdAndRoomIdOrThrow(userId, room.getId()); + // 2-1. 방 나가기 권한 검증 + roomParticipant.validateRoomLeavable(); + + // 3. 방 멤버수 감소 / 방 진행률 업데이트 + roomProgressManager.removeUserProgressAndUpdateRoomProgress(roomParticipant.getId(), room.getId()); + + // 4. 방나가기 + roomParticipantCommandPort.deleteByUserIdAndRoomId(userId, room.getId()); + return null; + } +} From e8f1278bcb95f7893dc0e20759006043cf10841a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:48:07 +0900 Subject: [PATCH 33/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EA=B4=80=EB=A0=A8=20=EB=B0=A9=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EB=8F=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=ED=97=AC?= =?UTF-8?q?=ED=8D=BC=20=EB=A9=94=EC=84=9C=EB=93=9CRoomProgressManager.remo?= =?UTF-8?q?veUserProgressAndUpdateRoomProgress=20=EC=9E=91=EC=84=B1=20(#26?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/manager/RoomProgressManager.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java b/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java index 0667345e3..5a2583123 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java +++ b/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java @@ -41,4 +41,23 @@ public void updateUserAndRoomProgress(Long userId, Long roomId, int currentPage) roomCommandPort.update(room); roomParticipantCommandPort.update(roomParticipant); } + + public void removeUserProgressAndUpdateRoomProgress(Long removeRoomParticipantId, Long roomId) { + + Room room = roomCommandPort.getByIdOrThrow(roomId); + + // 나간 유저를 제외한 방 평균 진행률 update + List remainingParticipants = roomParticipantCommandPort.findAllByRoomId(roomId); + double total = remainingParticipants.stream() + .filter(p -> !p.getId().equals(removeRoomParticipantId)) // 나간 유저 제외 + .mapToDouble(RoomParticipant::getUserPercentage) + .sum(); + room.updateRoomPercentage(total / (remainingParticipants.size() - 1)); + + // 방 멤버 수 감소 + room.decreaseMemberCount(); + // 영속화 + roomCommandPort.update(room); + } + } From a0f1e816c49440598f98b6f4bfd6765718087e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:48:19 +0900 Subject: [PATCH 34/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/common/swagger/SwaggerResponseDescription.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java index 291dd5b68..6d4b5aa78 100644 --- a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java +++ b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java @@ -117,6 +117,11 @@ public enum SwaggerResponseDescription { ROOM_ACCESS_FORBIDDEN, ROOM_POST_TYPE_NOT_MATCH ))), + ROOM_LEAVE(new LinkedHashSet<>(Set.of( + ROOM_NOT_FOUND, + ROOM_PARTICIPANT_NOT_FOUND, + ROOM_HOST_CANNOT_LEAVE + ))), // Record From 7fae639f907e353156ad96f3d10d16d833d78ef7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 15:48:50 +0900 Subject: [PATCH 35/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=ED=86=B5=ED=95=A9=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/RoomParticipantDeleteApiTest.java | 172 ++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java new file mode 100644 index 000000000..3ce159adf --- /dev/null +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java @@ -0,0 +1,172 @@ +package konkuk.thip.room.adapter.in.web; + +import jakarta.persistence.EntityManager; +import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; +import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; +import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.common.util.TestEntityFactory; +import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; +import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; +import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; +import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; +import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; +import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; +import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; +import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; +import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; +import konkuk.thip.user.adapter.out.jpa.UserRole; +import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; +import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@ActiveProfiles("test") +@Transactional +@AutoConfigureMockMvc(addFilters = false) +@DisplayName("[통합] 방 나가기(멤버) API 통합 테스트") +class RoomParticipantDeleteApiTest { + + @Autowired private MockMvc mockMvc; + @Autowired private EntityManager em; + @Autowired private RoomJpaRepository roomJpaRepository; + @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; + @Autowired private BookJpaRepository bookJpaRepository; + @Autowired private CategoryJpaRepository categoryJpaRepository; + @Autowired private UserJpaRepository userJpaRepository; + @Autowired private AliasJpaRepository aliasJpaRepository; + + private RoomJpaEntity room; + private UserJpaEntity host; + private UserJpaEntity participant; + private RoomParticipantJpaEntity hostParticipation; + private RoomParticipantJpaEntity memberParticipation; + + private void setUpWithOnlyHost() { + AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + createUsers(alias); + + BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); + CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + createRoom(book, category,1); // 방장만 포함 + roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 0.0)); + } + + private void setUpWithParticipant() { + AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + createUsers(alias); + + BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); + CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + createRoom(book, category,2); // 방장과 참여자 포함 + hostParticipation = roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 50.0)); + memberParticipation = roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, participant, RoomParticipantRole.MEMBER, 30.0)); + } + + private void createRoom(BookJpaEntity book, CategoryJpaEntity category, int memberCount) { + room = roomJpaRepository.save(RoomJpaEntity.builder() + .title("방이름") + .description("설명") + .isPublic(true) + .startDate(LocalDate.now().plusDays(1)) + .endDate(LocalDate.now().plusDays(30)) + .recruitCount(3) + .bookJpaEntity(book) + .categoryJpaEntity(category) + .memberCount(memberCount) // 방장과 참여자 포함 + .build()); + } + + private void createUsers(AliasJpaEntity alias) { + host = userJpaRepository.save(UserJpaEntity.builder() + .oauth2Id("kakao_432708231") + .nickname("user") + .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) + .role(UserRole.USER) + .aliasForUserJpaEntity(alias) + .build()); + + participant = userJpaRepository.save(UserJpaEntity.builder() + .oauth2Id("kakao_12345678") + .nickname("user123") + .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) + .role(UserRole.USER) + .aliasForUserJpaEntity(alias) + .build()); + } + + private void updateRoomPercentage() { + hostParticipation.updateCurrentPage(50); + hostParticipation.updateUserPercentage(50.0); // 방장의 진행도 50 + roomParticipantJpaRepository.save(hostParticipation); + + memberParticipation.updateCurrentPage(30); + memberParticipation.updateUserPercentage(30.0); // 참여자 진행도 30 + roomParticipantJpaRepository.save(memberParticipation); + + room.updateRoomPercentage(40); // 방참여자들의 진행도 평균 40 + roomJpaRepository.save(room); + } + + @Test + @DisplayName("참여자가 정상적으로 방에서 나가면 유저의 방 참여 관계 삭제, 방 인원수 감소, 방 평균 진행도 업데이트 된다.") + void leaveRoom_success() throws Exception { + setUpWithParticipant(); + updateRoomPercentage(); + + // 참여자(member)가 방에서 나가기 요청 + mockMvc.perform(delete("/rooms/" + room.getRoomId() + "/leave") + .requestAttr("userId", participant.getUserId()) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + + // 방에서 참여자 정보가 사라졌는지 확인 + boolean exists = roomParticipantJpaRepository.existsByUserIdAndRoomId(participant.getUserId(), room.getRoomId()); + assertThat(exists).isFalse(); + + // 인원수 감소 확인 + RoomJpaEntity updateRoom = roomJpaRepository.findById(room.getRoomId()).orElseThrow(); + assertThat(updateRoom.getMemberCount()).isEqualTo(1); // 방장만 남음 + // 평균 진행도 확인: 방에 남은 사람은 host만 → host의 진행도(50)와 방의 진행도가 같아야 함 + assertThat(updateRoom.getRoomPercentage()).isEqualTo(50.0); + } + + @Test + @DisplayName("참여하지 않은 사용자가 방에서 나가기를 시도하면 실패한다.") + void leaveRoom_notParticipated() throws Exception { + setUpWithOnlyHost(); // 참가자 없이 방장만 있는 방 + + // 참여하지 않은 사용자가 나가기 요청 + mockMvc.perform(delete("/rooms/" + room.getRoomId() + "/leave") + .requestAttr("userId", participant.getUserId()) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()) + .andExpect(jsonPath("$.code").value(ErrorCode.ROOM_PARTICIPANT_NOT_FOUND.getCode())); + } + + @Test + @DisplayName("호스트(방장)는 방을 나갈 수 없고 예외가 발생한다.") + void leaveRoom_hostCannotLeave() throws Exception { + setUpWithOnlyHost(); + + mockMvc.perform(delete("/rooms/" + room.getRoomId() + "/leave") + .requestAttr("userId", host.getUserId()) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.code").value(ErrorCode.ROOM_HOST_CANNOT_LEAVE.getCode())); + } +} \ No newline at end of file From 3190f0aeb4638f27e240e13a2b1344903cecfb42 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 17:36:07 +0900 Subject: [PATCH 36/45] =?UTF-8?q?[feat]=20=EB=B0=A9=20=EB=82=98=EA=B0=80?= =?UTF-8?q?=EA=B8=B0=20=EA=B4=80=EB=A0=A8=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=8B=A8=EC=9C=84=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Conflicts: # src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java --- .../thip/room/domain/RoomParticipantTest.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java b/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java index 6bd30559f..b12c0c748 100644 --- a/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java +++ b/src/test/java/konkuk/thip/room/domain/RoomParticipantTest.java @@ -1,9 +1,12 @@ package konkuk.thip.room.domain; +import konkuk.thip.common.exception.InvalidStateException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import static konkuk.thip.common.exception.code.ErrorCode.ROOM_HOST_CANNOT_LEAVE; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; @DisplayName("[단위] RoomParticipant 도메인 테스트") class RoomParticipantTest { @@ -81,4 +84,27 @@ void update_userProgress_when_request_isLower_than_bookPage() throws Exception { double ratio = (double) roomParticipant.getCurrentPage() / totalPageCount; assertThat(roomParticipant.getUserPercentage()).isEqualTo(ratio * 100); } + + @Test + @DisplayName("validateRoomLeavable: 방의 HOST가 방을 나가려고 하면 InvalidStateException이 발생한다.") + void host_cannot_leave_room_test() { + // given: HOST 참여자 생성 + RoomParticipant host = RoomParticipant.hostWithoutId(1L,1L); + + // when & then + InvalidStateException ex = assertThrows(InvalidStateException.class, + host::validateRoomLeavable); + assertEquals(ROOM_HOST_CANNOT_LEAVE, ex.getErrorCode()); + } + + @Test + @DisplayName("MEMBER는 방을 나갈 수 있다.") + void member_can_leave_room_test() { + // given: MEMBER 참여자 생성 + RoomParticipant member = RoomParticipant.memberWithoutId(1L,1L); + + // when & then + assertDoesNotThrow(member::validateRoomLeavable); + } + } From d1a091afe6da29cb4f99f8f73caf1bb31f6aa8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 16:36:15 +0900 Subject: [PATCH 37/45] =?UTF-8?q?[refactor]=20=ED=97=AC=ED=8D=BC=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=EC=97=90=EC=84=9C=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20=ED=95=9C=EB=B2=88=20=EB=8D=94=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=EB=A7=90=EA=B3=A0=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=A3=BC=EC=9E=85=EB=B0=9B=EC=95=84=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#265)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/RoomParticipantDeleteService.java | 2 +- .../application/service/RecordCreateService.java | 2 +- .../application/service/VoteCreateService.java | 4 +++- .../service/manager/RoomProgressManager.java | 16 ++++------------ 4 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java b/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java index 6a303fe91..103864272 100644 --- a/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java +++ b/src/main/java/konkuk/thip/room/application/service/RoomParticipantDeleteService.java @@ -32,7 +32,7 @@ public Void leaveRoom(Long userId, Long roomId) { roomParticipant.validateRoomLeavable(); // 3. 방 멤버수 감소 / 방 진행률 업데이트 - roomProgressManager.removeUserProgressAndUpdateRoomProgress(roomParticipant.getId(), room.getId()); + roomProgressManager.removeUserProgressAndUpdateRoomProgress(roomParticipant.getId(), room); // 4. 방나가기 roomParticipantCommandPort.deleteByUserIdAndRoomId(userId, room.getId()); diff --git a/src/main/java/konkuk/thip/roompost/application/service/RecordCreateService.java b/src/main/java/konkuk/thip/roompost/application/service/RecordCreateService.java index e3d4046f2..c30a9e02d 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/RecordCreateService.java +++ b/src/main/java/konkuk/thip/roompost/application/service/RecordCreateService.java @@ -61,7 +61,7 @@ public RecordCreateResult createRecord(RecordCreateCommand command) { Long newRecordId = recordCommandPort.saveRecord(record); // 5. RoomParticipant, Room progress 정보 update - roomProgressManager.updateUserAndRoomProgress(record.getCreatorId(), record.getRoomId(), record.getPage()); + roomProgressManager.updateUserAndRoomProgress(roomParticipant, room, book, record.getPage()); return RecordCreateResult.of(newRecordId, command.roomId()); } diff --git a/src/main/java/konkuk/thip/roompost/application/service/VoteCreateService.java b/src/main/java/konkuk/thip/roompost/application/service/VoteCreateService.java index 96926d5eb..f7098d6be 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/VoteCreateService.java +++ b/src/main/java/konkuk/thip/roompost/application/service/VoteCreateService.java @@ -6,6 +6,7 @@ import konkuk.thip.room.application.port.out.RoomParticipantCommandPort; import konkuk.thip.room.application.service.validator.RoomParticipantValidator; import konkuk.thip.room.domain.Room; +import konkuk.thip.room.domain.RoomParticipant; import konkuk.thip.roompost.application.service.manager.RoomProgressManager; import konkuk.thip.roompost.application.port.in.VoteCreateUseCase; import konkuk.thip.roompost.application.port.in.dto.vote.VoteCreateCommand; @@ -47,6 +48,7 @@ public VoteCreateResult createVote(VoteCreateCommand command) { command.roomId() ); + RoomParticipant roomParticipant = roomParticipantCommandPort.getByUserIdAndRoomIdOrThrow(command.userId(), command.roomId()); Room room = roomCommandPort.getByIdOrThrow(vote.getRoomId()); Book book = bookCommandPort.findById(room.getBookId()); validateVote(vote, book); @@ -64,7 +66,7 @@ public VoteCreateResult createVote(VoteCreateCommand command) { voteCommandPort.saveAllVoteItems(voteItems); // 4. RoomParticipant, Room progress 정보 update - roomProgressManager.updateUserAndRoomProgress(vote.getCreatorId(), vote.getRoomId(), vote.getPage()); + roomProgressManager.updateUserAndRoomProgress(roomParticipant, room, book, vote.getPage()); return VoteCreateResult.of(savedVoteId, command.roomId()); } diff --git a/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java b/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java index 5a2583123..44d0be4b4 100644 --- a/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java +++ b/src/main/java/konkuk/thip/roompost/application/service/manager/RoomProgressManager.java @@ -1,6 +1,5 @@ package konkuk.thip.roompost.application.service.manager; -import konkuk.thip.book.application.port.out.BookCommandPort; import konkuk.thip.book.domain.Book; import konkuk.thip.common.annotation.HelperService; import konkuk.thip.room.application.port.out.RoomCommandPort; @@ -17,19 +16,14 @@ public class RoomProgressManager { private final RoomParticipantCommandPort roomParticipantCommandPort; private final RoomCommandPort roomCommandPort; - private final BookCommandPort bookCommandPort; - - public void updateUserAndRoomProgress(Long userId, Long roomId, int currentPage) { - RoomParticipant roomParticipant = roomParticipantCommandPort.getByUserIdAndRoomIdOrThrow(userId, roomId); - Room room = roomCommandPort.getByIdOrThrow(roomId); - Book book = bookCommandPort.findById(room.getBookId()); + public void updateUserAndRoomProgress(RoomParticipant roomParticipant, Room room, Book book, int currentPage) { // 1. 유저 진행률 update boolean updated = roomParticipant.updateUserProgress(currentPage, book.getPageCount()); if (!updated) return; // update 되지 않았으면 종료 // 2. 방 평균 진행률 update - List all = roomParticipantCommandPort.findAllByRoomId(roomId); + List all = roomParticipantCommandPort.findAllByRoomId(room.getId()); double total = all.stream() .filter(p -> !roomParticipant.getId().equals(p.getId())) // 현재 유저 제외 .mapToDouble(RoomParticipant::getUserPercentage) @@ -42,12 +36,10 @@ public void updateUserAndRoomProgress(Long userId, Long roomId, int currentPage) roomParticipantCommandPort.update(roomParticipant); } - public void removeUserProgressAndUpdateRoomProgress(Long removeRoomParticipantId, Long roomId) { - - Room room = roomCommandPort.getByIdOrThrow(roomId); + public void removeUserProgressAndUpdateRoomProgress(Long removeRoomParticipantId, Room room) { // 나간 유저를 제외한 방 평균 진행률 update - List remainingParticipants = roomParticipantCommandPort.findAllByRoomId(roomId); + List remainingParticipants = roomParticipantCommandPort.findAllByRoomId(room.getId()); double total = remainingParticipants.stream() .filter(p -> !p.getId().equals(removeRoomParticipantId)) // 나간 유저 제외 .mapToDouble(RoomParticipant::getUserPercentage) From 53cf9d3d0ab1466a8e7913707cbb58429361a41b Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 17:30:10 +0900 Subject: [PATCH 38/45] =?UTF-8?q?[refactor]=20=EB=B0=A9=20=EB=82=98?= =?UTF-8?q?=EA=B0=80=EA=B8=B0=20api=20=ED=86=B5=ED=95=A9=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EB=B0=94=EB=80=90=20?= =?UTF-8?q?jpa=20=EA=B5=AC=EC=A1=B0=EC=97=90=20=EB=A7=9E=EC=B6=B0=EC=84=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/RoomParticipantDeleteApiTest.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java index 3ce159adf..36282f56f 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java @@ -5,18 +5,16 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.exception.code.ErrorCode; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.adapter.out.jpa.CategoryJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.adapter.out.persistence.repository.category.CategoryJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.adapter.out.jpa.AliasJpaEntity; +import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.adapter.out.persistence.repository.alias.AliasJpaRepository; +import konkuk.thip.user.domain.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -46,9 +44,7 @@ class RoomParticipantDeleteApiTest { @Autowired private RoomJpaRepository roomJpaRepository; @Autowired private RoomParticipantJpaRepository roomParticipantJpaRepository; @Autowired private BookJpaRepository bookJpaRepository; - @Autowired private CategoryJpaRepository categoryJpaRepository; @Autowired private UserJpaRepository userJpaRepository; - @Autowired private AliasJpaRepository aliasJpaRepository; private RoomJpaEntity room; private UserJpaEntity host; @@ -57,27 +53,27 @@ class RoomParticipantDeleteApiTest { private RoomParticipantJpaEntity memberParticipation; private void setUpWithOnlyHost() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); createUsers(alias); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); createRoom(book, category,1); // 방장만 포함 roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 0.0)); } private void setUpWithParticipant() { - AliasJpaEntity alias = aliasJpaRepository.save(TestEntityFactory.createLiteratureAlias()); + Alias alias = TestEntityFactory.createLiteratureAlias(); createUsers(alias); BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBook()); - CategoryJpaEntity category = categoryJpaRepository.save(TestEntityFactory.createLiteratureCategory(alias)); + Category category = TestEntityFactory.createLiteratureCategory(); createRoom(book, category,2); // 방장과 참여자 포함 hostParticipation = roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, host, RoomParticipantRole.HOST, 50.0)); memberParticipation = roomParticipantJpaRepository.save(TestEntityFactory.createRoomParticipant(room, participant, RoomParticipantRole.MEMBER, 30.0)); } - private void createRoom(BookJpaEntity book, CategoryJpaEntity category, int memberCount) { + private void createRoom(BookJpaEntity book, Category category, int memberCount) { room = roomJpaRepository.save(RoomJpaEntity.builder() .title("방이름") .description("설명") @@ -86,18 +82,18 @@ private void createRoom(BookJpaEntity book, CategoryJpaEntity category, int memb .endDate(LocalDate.now().plusDays(30)) .recruitCount(3) .bookJpaEntity(book) - .categoryJpaEntity(category) + .category(category) .memberCount(memberCount) // 방장과 참여자 포함 .build()); } - private void createUsers(AliasJpaEntity alias) { + private void createUsers(Alias alias) { host = userJpaRepository.save(UserJpaEntity.builder() .oauth2Id("kakao_432708231") .nickname("user") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); participant = userJpaRepository.save(UserJpaEntity.builder() @@ -105,7 +101,7 @@ private void createUsers(AliasJpaEntity alias) { .nickname("user123") .nicknameUpdatedAt(LocalDate.now().minusMonths(7)) .role(UserRole.USER) - .aliasForUserJpaEntity(alias) + .alias(alias) .build()); } @@ -169,4 +165,4 @@ void leaveRoom_hostCannotLeave() throws Exception { .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.code").value(ErrorCode.ROOM_HOST_CANNOT_LEAVE.getCode())); } -} \ No newline at end of file +} From ac32f64f39e3268c76220fe6e919201a8a803b91 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 17:31:58 +0900 Subject: [PATCH 39/45] =?UTF-8?q?[refactor]=20=EB=8B=A4=EB=A5=B8=20?= =?UTF-8?q?=EB=AA=A8=EC=A7=91=EC=A4=91=EC=9D=B8=20=EC=B6=94=EC=B2=9C?= =?UTF-8?q?=EB=B0=A9=20=EC=A1=B0=ED=9A=8C=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - room member 획득하는 코드 수정 - 필요없는 join, group by 코드 삭제 --- .../persistence/repository/RoomQueryRepositoryImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java index b65cf4bb5..bb6c0ca09 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java @@ -173,19 +173,16 @@ public List findRecruitingRoomsWithCategoryOrderByMemberCountDesc( @Override public List findOtherRecruitingRoomsByCategoryOrderByStartDateAsc(Long roomId, Category category, int count) { - NumberExpression memberCountExpr = participant.roomParticipantId.count(); List tuples = queryFactory - .select(room.roomId, room.title, memberCountExpr, room.recruitCount, room.startDate, book.imageUrl) + .select(room.roomId, room.title, room.memberCount, room.recruitCount, room.startDate, book.imageUrl) .from(room) .join(room.bookJpaEntity, book) - .leftJoin(participant).on(participant.roomJpaEntity.eq(room)) .where( room.category.eq(category) .and(room.startDate.after(LocalDate.now())) // 모집 마감 시각 > 현재 시각 .and(room.roomId.ne(roomId))// 현재 방 제외 .and(room.isPublic.isTrue()) // 공개방 만 ) - .groupBy(room.roomId, room.title, room.recruitCount, room.startDate) .orderBy(room.startDate.asc()) .limit(count) .fetch(); @@ -195,7 +192,7 @@ public List findOtherRecruitingR .roomId(t.get(room.roomId)) .bookImageUrl(t.get(book.imageUrl)) .roomName(t.get(room.title)) - .memberCount(t.get(memberCountExpr).intValue()) + .memberCount(t.get(room.memberCount)) .recruitCount(t.get(room.recruitCount)) .recruitEndDate(DateUtil.formatAfterTime(t.get(room.startDate))) .build()) From 0ac1bd7dbd7b20269e95202f77dbb942c91e23b9 Mon Sep 17 00:00:00 2001 From: seongjunnoh Date: Wed, 20 Aug 2025 18:25:15 +0900 Subject: [PATCH 40/45] =?UTF-8?q?[fix]=20develop=20=EB=B8=8C=EB=9E=9C?= =?UTF-8?q?=EC=B9=98=EC=97=90=20=EB=B0=94=EB=A1=9C=20=EC=A0=81=EC=9A=A9?= =?UTF-8?q?=EB=90=9C=20=EB=B3=80=EA=B2=BD=EC=82=AC=ED=95=AD=EC=97=90=20?= =?UTF-8?q?=EB=A7=9E=EC=B6=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../in/web/FeedRelatedWithBookApiTest.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java index 587a0f6c3..4e03bd85a 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java @@ -27,6 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -255,7 +256,7 @@ void getFeedsByBook_cursor_paging_success() throws Exception { } @Test - @DisplayName("비공개 피드 제외 및 자기 자신 피드 제외 검증") + @DisplayName("비공개 피드 제외 검증 + 자기 자신 공개 피드는 포함 검증") void getFeedsByBook_visibility_and_self_filter() throws Exception { // given Alias alias = TestEntityFactory.createLiteratureAlias(); @@ -273,8 +274,8 @@ void getFeedsByBook_visibility_and_self_filter() throws Exception { BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN(VALID_ISBN)); // 자기 자신 글 두 개 생성 - FeedJpaEntity myPublic = TestEntityFactory.createFeed(requester, book, true); - FeedJpaEntity myPrivate = TestEntityFactory.createFeed(requester, book, false); + FeedJpaEntity myPublic = TestEntityFactory.createFeed(requester, book, true); // 내 공개 피드 + FeedJpaEntity myPrivate = TestEntityFactory.createFeed(requester, book, false); // 내 비공개 피드 feedJpaRepository.saveAll(List.of(myPublic, myPrivate)); // 다른 사람 공개 글 하나 생성 @@ -295,10 +296,17 @@ void getFeedsByBook_visibility_and_self_filter() throws Exception { JsonNode root = objectMapper.readTree(json); JsonNode feeds = root.path("data").path("feeds"); - // 자기 자신 글 제외 비공개 제외로 인해 only othersPublic 만 남아야 함 - assertThat(feeds.size()).isEqualTo(1); - assertThat(feeds.get(0).path("creatorId").asLong()).isEqualTo(other.getUserId()); - assertThat(feeds.get(0).path("isWriter").asBoolean()).isFalse(); + // 자기 자신 글은 포함 & 비공개 글은 제외 -> 자기 자신의 공개 피드 + othersPublic (= 2개)만 남아야 함 + List feedIds = new ArrayList<>(); + for (JsonNode f : feeds) { + feedIds.add(f.path("feedId").asLong()); + } + + assertThat(feedIds.size()).isEqualTo(2); + assertThat(feedIds).containsExactlyInAnyOrder( + myPublic.getPostId(), + othersPublic.getPostId() + ); } private TestData prepareDataForFeeds() { From b161e7ede427335b82598f9a13a80250b9bccc3c Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Wed, 20 Aug 2025 19:54:34 +0900 Subject: [PATCH 41/45] =?UTF-8?q?[fix]=20=EC=97=90=EB=9F=AC=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/common/exception/code/ErrorCode.java | 3 +++ .../swagger/SwaggerResponseDescription.java | 8 ++++++-- .../java/konkuk/thip/feed/domain/TagList.java | 8 +++----- .../java/konkuk/thip/feed/domain/FeedTest.java | 16 ---------------- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java index a8ea94d64..262fc5311 100644 --- a/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java +++ b/src/main/java/konkuk/thip/common/exception/code/ErrorCode.java @@ -160,11 +160,14 @@ public enum ErrorCode implements ResponseCode { FEED_NOT_SAVED_CANNOT_DELETE(HttpStatus.BAD_REQUEST, 160007, "사용자가 저장하지 않은 피드는 저장삭제 할 수 없습니다."), FEED_CAN_NOT_SHOW_PRIVATE_ONE(HttpStatus.BAD_REQUEST, 160008, "비공개 피드는 피드 작성자 이외에는 조회할 수 없습니다."), TAG_SHOULD_BE_UNIQUE(HttpStatus.BAD_REQUEST, 160009, "피드에 등록된 태그는 중복될 수 없습니다."), + TAG_LIST_SIZE_OVERFLOW(HttpStatus.BAD_REQUEST, 160010, "등록 가능한 태그 개수를 초과하였습니다."), + /** * 165000: ContentList error */ CONTENT_LIST_SIZE_OVERFLOW(HttpStatus.BAD_REQUEST, 165000, "컨텐츠 리스트의 크기가 초과되었습니다. 최대 3개까지 가능합니다."), + CONTENT_NOT_FOUND(HttpStatus.BAD_REQUEST, 165001, "해당 이미지는 이 피드에 존재하지 않습니다:"), /** * 170000 : Image File error diff --git a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java index 6d4b5aa78..97250b4f7 100644 --- a/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java +++ b/src/main/java/konkuk/thip/common/swagger/SwaggerResponseDescription.java @@ -180,7 +180,9 @@ public enum SwaggerResponseDescription { BOOK_NOT_FOUND, TAG_NOT_FOUND, TAG_NAME_NOT_MATCH, - INVALID_FEED_COMMAND, + CONTENT_LIST_SIZE_OVERFLOW, + TAG_SHOULD_BE_UNIQUE, + TAG_LIST_SIZE_OVERFLOW, BOOK_NAVER_API_PARSING_ERROR, BOOK_NAVER_API_ISBN_NOT_FOUND, EMPTY_FILE_EXCEPTION, @@ -193,7 +195,9 @@ public enum SwaggerResponseDescription { BOOK_NOT_FOUND, TAG_NOT_FOUND, TAG_NAME_NOT_MATCH, - INVALID_FEED_COMMAND, + CONTENT_LIST_SIZE_OVERFLOW, + TAG_SHOULD_BE_UNIQUE, + TAG_LIST_SIZE_OVERFLOW, FEED_ACCESS_FORBIDDEN ))), CHANGE_FEED_SAVED_STATE(new LinkedHashSet<>(Set.of( diff --git a/src/main/java/konkuk/thip/feed/domain/TagList.java b/src/main/java/konkuk/thip/feed/domain/TagList.java index bed1551a1..34e5c1522 100644 --- a/src/main/java/konkuk/thip/feed/domain/TagList.java +++ b/src/main/java/konkuk/thip/feed/domain/TagList.java @@ -6,8 +6,7 @@ import java.io.Serializable; import java.util.*; -import static konkuk.thip.common.exception.code.ErrorCode.INVALID_FEED_COMMAND; -import static konkuk.thip.common.exception.code.ErrorCode.TAG_SHOULD_BE_UNIQUE; +import static konkuk.thip.common.exception.code.ErrorCode.*; public final class TagList extends AbstractList implements Serializable { @@ -34,13 +33,12 @@ public static TagList empty() { // todo presignedURL 도입 전 임시 유효성 검증 메서드 public static void validateTags(List tags) { if (tags.size() > MAX_SIZE) { - throw new InvalidStateException(INVALID_FEED_COMMAND, + throw new InvalidStateException(TAG_LIST_SIZE_OVERFLOW, new IllegalArgumentException("태그는 최대 " + MAX_SIZE + "개까지 입력할 수 있습니다.")); } long distinctCount = tags.stream().distinct().count(); if (distinctCount != tags.size()) { - throw new InvalidStateException(INVALID_FEED_COMMAND, - new IllegalArgumentException(TAG_SHOULD_BE_UNIQUE.getMessage())); + throw new InvalidStateException(TAG_SHOULD_BE_UNIQUE); } } diff --git a/src/test/java/konkuk/thip/feed/domain/FeedTest.java b/src/test/java/konkuk/thip/feed/domain/FeedTest.java index 6fdb31457..6e8501c45 100644 --- a/src/test/java/konkuk/thip/feed/domain/FeedTest.java +++ b/src/test/java/konkuk/thip/feed/domain/FeedTest.java @@ -164,22 +164,6 @@ void updateImages_nonCreator_throws() { assertEquals(FEED_ACCESS_FORBIDDEN, ex.getErrorCode()); } - @Test - @DisplayName("validateOwnsImages: 피드 수정 시에 존재하지 않는 이미지 URL 포함하여 수정하려고 하면 InvalidStateException이 발생한다.") - void validateOwnsImages_withInvalidUrl_throws() { - Feed feed = createPublicFeed(); - - // feed.contentList에는 "url1"만 있음 - List candidateImageUrls = List.of("url1", "invalidUrl"); - - InvalidStateException ex = assertThrows(InvalidStateException.class, - () -> feed.validateOwnsImages(candidateImageUrls)); - - assertEquals(INVALID_FEED_COMMAND, ex.getErrorCode()); - assertTrue(ex.getCause().getMessage().contains("해당 이미지는 이 피드에 존재하지 않습니다")); - } - - @Test @DisplayName("increaseCommentCount: 피드의 댓글 수가 정상적으로 1 증가한다.") void increaseCommentCount_increments() { From fc8c524d3637cf352e39b1c4d17cf6d5b079589e Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Wed, 20 Aug 2025 20:00:22 +0900 Subject: [PATCH 42/45] =?UTF-8?q?[fix]=20ContentList=20=EC=B1=85=EC=9E=84?= =?UTF-8?q?=20=EC=9C=84=EC=9E=84=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/konkuk/thip/feed/domain/Feed.java | 16 ++-------------- .../thip/feed/domain/value/ContentList.java | 13 +++++++++++++ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/main/java/konkuk/thip/feed/domain/Feed.java b/src/main/java/konkuk/thip/feed/domain/Feed.java index 7be6cb29c..4f0b1c494 100644 --- a/src/main/java/konkuk/thip/feed/domain/Feed.java +++ b/src/main/java/konkuk/thip/feed/domain/Feed.java @@ -12,8 +12,6 @@ import java.util.List; import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; import static konkuk.thip.common.exception.code.ErrorCode.*; @@ -162,22 +160,12 @@ public void updateTags(Long userId, List newTagValues) { public void updateImages(Long userId, List newImageUrls) { validateCreator(userId); // validateImageCount(newImageUrls.size()); - validateOwnsImages(newImageUrls); +// validateOwnsImages(newImageUrls); + contentList.validateOwnImages(newImageUrls); this.contentList = convertToContentList(newImageUrls); } - public void validateOwnsImages(List candidateImageUrls) { - Set myImageUrls = contentList.stream() - .filter(url -> url != null && !url.isBlank()) - .collect(Collectors.toSet()); - for (String url : candidateImageUrls) { - if (!myImageUrls.contains(url)) { - throw new InvalidStateException(INVALID_FEED_COMMAND, new IllegalArgumentException("해당 이미지는 이 피드에 존재하지 않습니다: " + url)); - } - } - } - @Override public void increaseCommentCount() { commentCount++; diff --git a/src/main/java/konkuk/thip/feed/domain/value/ContentList.java b/src/main/java/konkuk/thip/feed/domain/value/ContentList.java index 3f6a8eb92..9e8bdbd2c 100644 --- a/src/main/java/konkuk/thip/feed/domain/value/ContentList.java +++ b/src/main/java/konkuk/thip/feed/domain/value/ContentList.java @@ -5,8 +5,10 @@ import java.io.Serial; import java.io.Serializable; import java.util.*; +import java.util.stream.Collectors; import static konkuk.thip.common.exception.code.ErrorCode.CONTENT_LIST_SIZE_OVERFLOW; +import static konkuk.thip.common.exception.code.ErrorCode.CONTENT_NOT_FOUND; public final class ContentList extends AbstractList implements Serializable { @@ -48,6 +50,17 @@ private void validate() { //todo 필요 시 URL 형식 검증 추가 가능 } + public void validateOwnImages(List newImageUrls) { + Set myImageUrls = contents.stream() + .filter(url -> url != null && !url.isBlank()) + .collect(Collectors.toSet()); + for (String url : newImageUrls) { + if (!myImageUrls.contains(url)) { + throw new InvalidStateException(CONTENT_NOT_FOUND, new IllegalArgumentException(url)); + } + } + } + // AbstractList 구현 위임 구간 @Override public String get(int index) { From b9465bb940ef4bd81cfa70e945f4d2ed73f7ab0e Mon Sep 17 00:00:00 2001 From: janghyunjun Date: Wed, 20 Aug 2025 20:01:47 +0900 Subject: [PATCH 43/45] =?UTF-8?q?[rename]=20=EA=B0=92=20=EA=B0=9D=EC=B2=B4?= =?UTF-8?q?=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=9D=B4=EB=8F=99=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../port/out/dto/CommentQueryDto.java | 2 +- .../konkuk/thip/common/util/EnumMappings.java | 6 +++--- .../thip/config/AwsS3ImageUrlInitializer.java | 4 ++-- .../thip/feed/adapter/out/jpa/FeedJpaEntity.java | 2 +- .../out/jpa/converter/TagListJsonConverter.java | 4 ++-- .../thip/feed/adapter/out/mapper/FeedMapper.java | 2 +- .../FeedCommandPersistenceAdapter.java | 1 - .../feed/application/mapper/FeedQueryMapper.java | 8 ++++---- .../application/port/out/dto/FeedQueryDto.java | 2 +- .../application/service/FeedCreateService.java | 4 ++-- .../service/FeedShowWriteInfoService.java | 4 ++-- .../application/service/FeedUpdateService.java | 4 ++-- .../java/konkuk/thip/feed/domain/Content.java | 16 ---------------- src/main/java/konkuk/thip/feed/domain/Feed.java | 2 ++ .../konkuk/thip/feed/domain/{ => value}/Tag.java | 2 +- .../thip/feed/domain/{ => value}/TagList.java | 2 +- .../thip/room/adapter/out/jpa/RoomJpaEntity.java | 2 +- .../persistence/RoomQueryPersistenceAdapter.java | 2 +- .../repository/RoomQueryRepository.java | 2 +- .../repository/RoomQueryRepositoryImpl.java | 2 +- .../room/application/port/out/RoomQueryPort.java | 2 +- .../application/service/RoomCreateService.java | 3 +-- .../service/RoomGetDeadlinePopularService.java | 2 +- .../application/service/RoomSearchService.java | 2 +- src/main/java/konkuk/thip/room/domain/Room.java | 1 + .../thip/room/domain/{ => value}/Category.java | 2 +- .../port/out/dto/AttendanceCheckQueryDto.java | 2 +- .../port/out/dto/RoomPostQueryDto.java | 2 +- .../thip/user/adapter/out/jpa/UserJpaEntity.java | 2 +- .../FollowingQueryPersistenceAdapter.java | 2 +- .../port/out/dto/FollowingQueryDto.java | 2 +- .../application/port/out/dto/UserQueryDto.java | 2 +- .../application/service/UserSignupService.java | 2 +- .../application/service/UserUpdateService.java | 2 +- .../service/UserViewAliasChoiceService.java | 4 ++-- src/main/java/konkuk/thip/user/domain/User.java | 1 + .../thip/user/domain/{ => value}/Alias.java | 2 +- .../adapter/in/web/BookChangeSavedApiTest.java | 2 +- .../adapter/in/web/BookDetailSearchApiTest.java | 4 ++-- .../in/web/BookGetSelectableListApiTest.java | 4 ++-- .../in/web/BookMostSearchedBooksApiTest.java | 2 +- .../in/web/BookRecruitingRoomApiTest.java | 4 ++-- .../book/adapter/in/web/BookSearchApiTest.java | 2 +- .../adapter/in/web/BookShowSavedListApiTest.java | 2 +- .../in/web/CommentChangeLikeStatusApiTest.java | 4 ++-- .../adapter/in/web/CommentCreateApiTest.java | 4 ++-- .../in/web/CommentCreateControllerTest.java | 4 ++-- .../adapter/in/web/CommentDeleteApiTest.java | 4 ++-- .../adapter/in/web/CommentShowAllApiTest.java | 2 +- .../thip/common/util/TestEntityFactory.java | 8 ++++---- .../adapter/in/web/BasicFeedShowAllApiTest.java | 2 +- .../in/web/FeedChangeLikeStatusApiTest.java | 2 +- .../adapter/in/web/FeedChangeSavedApiTest.java | 4 ++-- .../feed/adapter/in/web/FeedCreateApiTest.java | 5 ++--- .../adapter/in/web/FeedCreateControllerTest.java | 2 +- .../feed/adapter/in/web/FeedDeleteApiTest.java | 4 +--- .../in/web/FeedRelatedWithBookApiTest.java | 4 ++-- .../feed/adapter/in/web/FeedShowMineApiTest.java | 2 +- .../adapter/in/web/FeedShowSavedListApiTest.java | 2 +- .../adapter/in/web/FeedShowSingleApiTest.java | 6 +++--- .../in/web/FeedShowSpecificUserApiTest.java | 2 +- .../adapter/in/web/FeedShowUserInfoApiTest.java | 2 +- .../adapter/in/web/FeedShowWriteInfoApiTest.java | 9 ++++----- .../feed/adapter/in/web/FeedUpdateApiTest.java | 9 ++++----- .../adapter/in/web/FeedUpdateControllerTest.java | 6 +++--- .../web/FollowingPriorityFeedShowAllApiTest.java | 2 +- .../feed/adapter/out/jpa/FeedJpaEntityTest.java | 2 +- .../java/konkuk/thip/feed/domain/FeedTest.java | 4 +++- .../in/web/RecentSearchDeleteApiTest.java | 2 +- .../adapter/in/web/RecentSearchGetApiTest.java | 2 +- .../adapter/in/web/RoomCloseJoinApiTest.java | 4 ++-- .../room/adapter/in/web/RoomCreateApiTest.java | 4 ++-- .../in/web/RoomGetDeadlinePopularApiTest.java | 5 ++--- .../in/web/RoomGetHomeJoinedRoomsApiTest.java | 4 ++-- .../adapter/in/web/RoomGetMemberListApiTest.java | 4 ++-- .../room/adapter/in/web/RoomJoinApiTest.java | 4 ++-- .../in/web/RoomParticipantDeleteApiTest.java | 4 ++-- .../in/web/RoomPlayingDetailViewApiTest.java | 4 ++-- .../in/web/RoomPostChangeLikeStatusApiTest.java | 4 ++-- .../RoomPostChangeLikeStatusControllerTest.java | 4 ++-- .../in/web/RoomRecruitingDetailViewApiTest.java | 4 ++-- .../room/adapter/in/web/RoomSearchApiTest.java | 4 ++-- .../room/adapter/in/web/RoomShowMineApiTest.java | 4 ++-- .../in/web/RoomVerifyPasswordApiTest.java | 4 ++-- .../room/adapter/out/jpa/RoomJpaEntityTest.java | 3 +-- .../java/konkuk/thip/room/domain/RoomTest.java | 1 + .../in/web/AttendanceCheckCreateApiTest.java | 4 ++-- .../in/web/AttendanceCheckShowApiTest.java | 4 ++-- .../in/web/RecordCreateControllerTest.java | 4 ++-- .../adapter/in/web/RecordDeleteApiTest.java | 4 ++-- .../adapter/in/web/RecordPinApiTest.java | 4 ++-- .../adapter/in/web/RoomPostSearchApiTest.java | 4 ++-- .../roompost/adapter/in/web/VoteApiTest.java | 4 ++-- .../adapter/in/web/VoteCreateApiTest.java | 4 ++-- .../adapter/in/web/VoteDeleteApiTest.java | 4 ++-- .../adapter/out/jpa/RecordJpaEntityTest.java | 4 ++-- .../adapter/out/jpa/VoteJpaEntityTest.java | 4 ++-- .../service/VoteCreateServiceTest.java | 4 ++-- .../user/adapter/in/web/UserFollowApiTest.java | 2 +- .../adapter/in/web/UserGetFollowersApiTest.java | 2 +- .../adapter/in/web/UserGetFollowingApiTest.java | 2 +- .../adapter/in/web/UserIsFollowingApiTest.java | 2 +- .../user/adapter/in/web/UserReactionApiTest.java | 4 ++-- .../user/adapter/in/web/UserSearchApiTest.java | 2 +- .../web/UserShowFollowingsInFeedViewApiTest.java | 2 +- .../adapter/in/web/UserSignupControllerTest.java | 2 +- .../user/adapter/in/web/UserUpdateApiTest.java | 2 +- .../in/web/UserVerifyNicknameControllerTest.java | 2 +- .../web/UserViewAliasChoiceControllerTest.java | 4 ++-- .../user/adapter/out/jpa/UserJpaEntityTest.java | 2 +- .../service/UserUpdateServiceTest.java | 2 +- .../java/konkuk/thip/user/domain/UserTest.java | 1 + 112 files changed, 175 insertions(+), 192 deletions(-) delete mode 100644 src/main/java/konkuk/thip/feed/domain/Content.java rename src/main/java/konkuk/thip/feed/domain/{ => value}/Tag.java (98%) rename src/main/java/konkuk/thip/feed/domain/{ => value}/TagList.java (98%) rename src/main/java/konkuk/thip/room/domain/{ => value}/Category.java (97%) rename src/main/java/konkuk/thip/user/domain/{ => value}/Alias.java (97%) diff --git a/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java b/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java index d8e2ab260..79194d84d 100644 --- a/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java +++ b/src/main/java/konkuk/thip/comment/application/port/out/dto/CommentQueryDto.java @@ -2,7 +2,7 @@ import com.querydsl.core.annotations.QueryProjection; import jakarta.annotation.Nullable; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/common/util/EnumMappings.java b/src/main/java/konkuk/thip/common/util/EnumMappings.java index b2490fe6e..7a78cbac2 100644 --- a/src/main/java/konkuk/thip/common/util/EnumMappings.java +++ b/src/main/java/konkuk/thip/common/util/EnumMappings.java @@ -1,8 +1,8 @@ package konkuk.thip.common.util; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.room.domain.value.Category; +import konkuk.thip.user.domain.value.Alias; import java.util.Collections; import java.util.EnumMap; diff --git a/src/main/java/konkuk/thip/config/AwsS3ImageUrlInitializer.java b/src/main/java/konkuk/thip/config/AwsS3ImageUrlInitializer.java index 8bb3ab9ec..0f0ffd5a5 100644 --- a/src/main/java/konkuk/thip/config/AwsS3ImageUrlInitializer.java +++ b/src/main/java/konkuk/thip/config/AwsS3ImageUrlInitializer.java @@ -3,8 +3,8 @@ import jakarta.annotation.PostConstruct; import konkuk.thip.common.exception.BusinessException; import konkuk.thip.config.properties.AwsS3Properties; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.room.domain.value.Category; +import konkuk.thip.user.domain.value.Alias; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java index 94b93f9fe..c5977fd39 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntity.java @@ -7,7 +7,7 @@ import konkuk.thip.feed.adapter.out.jpa.converter.ContentListJsonConverter; import konkuk.thip.feed.adapter.out.jpa.converter.TagListJsonConverter; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.feed.domain.value.ContentList; import konkuk.thip.post.adapter.out.jpa.PostJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; diff --git a/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java b/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java index 9a1e0c989..ea4a4fa56 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/jpa/converter/TagListJsonConverter.java @@ -4,8 +4,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.AttributeConverter; import jakarta.persistence.Converter; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import java.io.IOException; import java.util.List; diff --git a/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java b/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java index d75310a21..b6ec58859 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/mapper/FeedMapper.java @@ -3,7 +3,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.feed.domain.value.ContentList; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java index 6033de608..5d7a96a66 100644 --- a/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/feed/adapter/out/persistence/FeedCommandPersistenceAdapter.java @@ -9,7 +9,6 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.Tag; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java b/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java index 2989f913c..dd9e758c1 100644 --- a/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java +++ b/src/main/java/konkuk/thip/feed/application/mapper/FeedQueryMapper.java @@ -6,11 +6,11 @@ import konkuk.thip.feed.application.port.in.dto.TagsWithCategoryResult; import konkuk.thip.feed.application.port.out.dto.FeedQueryDto; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.feed.domain.value.ContentList; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.room.domain.value.Category; +import konkuk.thip.user.domain.value.Alias; import konkuk.thip.user.domain.User; import org.mapstruct.*; diff --git a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java index b98a4d78d..054926fa1 100644 --- a/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java +++ b/src/main/java/konkuk/thip/feed/application/port/out/dto/FeedQueryDto.java @@ -3,7 +3,7 @@ import com.querydsl.core.annotations.QueryProjection; import jakarta.annotation.Nullable; import konkuk.thip.feed.domain.value.ContentList; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import lombok.Builder; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java b/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java index 7af86cb11..aedf6d9b6 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedCreateService.java @@ -9,8 +9,8 @@ import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.application.port.out.S3CommandPort; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.feed.domain.value.ContentList; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java b/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java index ed3c40e2b..4d10364c4 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedShowWriteInfoService.java @@ -5,8 +5,8 @@ import konkuk.thip.feed.application.mapper.FeedQueryMapper; import konkuk.thip.feed.application.port.in.FeedShowWriteInfoUseCase; import konkuk.thip.feed.application.port.out.FeedQueryPort; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.room.domain.Category; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.room.domain.value.Category; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java b/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java index 6d1bb4601..7f6655d1e 100644 --- a/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java +++ b/src/main/java/konkuk/thip/feed/application/service/FeedUpdateService.java @@ -5,8 +5,8 @@ import konkuk.thip.feed.application.port.out.FeedCommandPort; import konkuk.thip.feed.application.port.out.S3CommandPort; import konkuk.thip.feed.domain.Feed; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.feed.domain.value.ContentList; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/konkuk/thip/feed/domain/Content.java b/src/main/java/konkuk/thip/feed/domain/Content.java deleted file mode 100644 index 2b161c8db..000000000 --- a/src/main/java/konkuk/thip/feed/domain/Content.java +++ /dev/null @@ -1,16 +0,0 @@ -package konkuk.thip.feed.domain; - -import konkuk.thip.common.entity.BaseDomainEntity; -import lombok.Getter; -import lombok.experimental.SuperBuilder; - -@Getter -@SuperBuilder -public class Content extends BaseDomainEntity { - - private Long id; - - private String contentUrl; - - private Long targetPostId; -} diff --git a/src/main/java/konkuk/thip/feed/domain/Feed.java b/src/main/java/konkuk/thip/feed/domain/Feed.java index 4f0b1c494..993f32889 100644 --- a/src/main/java/konkuk/thip/feed/domain/Feed.java +++ b/src/main/java/konkuk/thip/feed/domain/Feed.java @@ -4,6 +4,8 @@ import konkuk.thip.common.exception.BusinessException; import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.feed.domain.value.ContentList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.post.domain.CountUpdatable; import konkuk.thip.post.domain.service.PostCountService; import lombok.Builder; diff --git a/src/main/java/konkuk/thip/feed/domain/Tag.java b/src/main/java/konkuk/thip/feed/domain/value/Tag.java similarity index 98% rename from src/main/java/konkuk/thip/feed/domain/Tag.java rename to src/main/java/konkuk/thip/feed/domain/value/Tag.java index 213083dcd..67bb40035 100644 --- a/src/main/java/konkuk/thip/feed/domain/Tag.java +++ b/src/main/java/konkuk/thip/feed/domain/value/Tag.java @@ -1,4 +1,4 @@ -package konkuk.thip.feed.domain; +package konkuk.thip.feed.domain.value; import konkuk.thip.common.exception.InvalidStateException; import lombok.Getter; diff --git a/src/main/java/konkuk/thip/feed/domain/TagList.java b/src/main/java/konkuk/thip/feed/domain/value/TagList.java similarity index 98% rename from src/main/java/konkuk/thip/feed/domain/TagList.java rename to src/main/java/konkuk/thip/feed/domain/value/TagList.java index 34e5c1522..081b6e3e8 100644 --- a/src/main/java/konkuk/thip/feed/domain/TagList.java +++ b/src/main/java/konkuk/thip/feed/domain/value/TagList.java @@ -1,4 +1,4 @@ -package konkuk.thip.feed.domain; +package konkuk.thip.feed.domain.value; import konkuk.thip.common.exception.InvalidStateException; diff --git a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java index fb3c73253..ce51508d9 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java +++ b/src/main/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntity.java @@ -4,7 +4,7 @@ import jakarta.persistence.*; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.common.entity.BaseJpaEntity; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.room.domain.Room; import lombok.*; diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java index 460251aa2..ee264437a 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/RoomQueryPersistenceAdapter.java @@ -10,7 +10,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.application.port.out.RoomQueryPort; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.room.domain.Room; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java index df51d071d..49b730ba2 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepository.java @@ -3,7 +3,7 @@ import konkuk.thip.room.adapter.in.web.response.RoomRecruitingDetailViewResponse; import konkuk.thip.room.adapter.in.web.response.RoomGetHomeJoinedListResponse; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java index bb6c0ca09..2699a025f 100644 --- a/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java +++ b/src/main/java/konkuk/thip/room/adapter/out/persistence/repository/RoomQueryRepositoryImpl.java @@ -18,7 +18,7 @@ import konkuk.thip.room.adapter.out.jpa.QRoomParticipantJpaEntity; import konkuk.thip.room.application.port.out.dto.QRoomQueryDto; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; diff --git a/src/main/java/konkuk/thip/room/application/port/out/RoomQueryPort.java b/src/main/java/konkuk/thip/room/application/port/out/RoomQueryPort.java index 50a17b732..c04d6d541 100644 --- a/src/main/java/konkuk/thip/room/application/port/out/RoomQueryPort.java +++ b/src/main/java/konkuk/thip/room/application/port/out/RoomQueryPort.java @@ -5,7 +5,7 @@ import konkuk.thip.room.adapter.in.web.response.RoomGetHomeJoinedListResponse; import konkuk.thip.room.adapter.in.web.response.RoomRecruitingDetailViewResponse; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.room.domain.Room; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/konkuk/thip/room/application/service/RoomCreateService.java b/src/main/java/konkuk/thip/room/application/service/RoomCreateService.java index 83bad6feb..f77fd4ff0 100644 --- a/src/main/java/konkuk/thip/room/application/service/RoomCreateService.java +++ b/src/main/java/konkuk/thip/room/application/service/RoomCreateService.java @@ -3,12 +3,11 @@ import konkuk.thip.book.application.port.out.BookApiQueryPort; import konkuk.thip.book.application.port.out.BookCommandPort; import konkuk.thip.book.domain.Book; -import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.application.port.in.RoomCreateUseCase; import konkuk.thip.room.application.port.in.dto.RoomCreateCommand; import konkuk.thip.room.application.port.out.RoomCommandPort; import konkuk.thip.room.application.port.out.RoomParticipantCommandPort; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.room.domain.Room; import konkuk.thip.room.domain.RoomParticipant; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/konkuk/thip/room/application/service/RoomGetDeadlinePopularService.java b/src/main/java/konkuk/thip/room/application/service/RoomGetDeadlinePopularService.java index cc394e134..ba6bad483 100644 --- a/src/main/java/konkuk/thip/room/application/service/RoomGetDeadlinePopularService.java +++ b/src/main/java/konkuk/thip/room/application/service/RoomGetDeadlinePopularService.java @@ -4,7 +4,7 @@ import konkuk.thip.room.application.mapper.RoomQueryMapper; import konkuk.thip.room.application.port.in.RoomGetDeadlinePopularUseCase; import konkuk.thip.room.application.port.out.RoomQueryPort; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/konkuk/thip/room/application/service/RoomSearchService.java b/src/main/java/konkuk/thip/room/application/service/RoomSearchService.java index 3cf90d3f8..e3a0d3091 100644 --- a/src/main/java/konkuk/thip/room/application/service/RoomSearchService.java +++ b/src/main/java/konkuk/thip/room/application/service/RoomSearchService.java @@ -11,7 +11,7 @@ import konkuk.thip.room.application.port.in.dto.RoomSearchQuery; import konkuk.thip.room.application.port.out.RoomQueryPort; import konkuk.thip.room.application.port.out.dto.RoomQueryDto; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/src/main/java/konkuk/thip/room/domain/Room.java b/src/main/java/konkuk/thip/room/domain/Room.java index 578066bed..6e4d73a11 100644 --- a/src/main/java/konkuk/thip/room/domain/Room.java +++ b/src/main/java/konkuk/thip/room/domain/Room.java @@ -4,6 +4,7 @@ import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.entity.StatusType; import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.room.domain.value.Category; import lombok.Getter; import lombok.experimental.SuperBuilder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; diff --git a/src/main/java/konkuk/thip/room/domain/Category.java b/src/main/java/konkuk/thip/room/domain/value/Category.java similarity index 97% rename from src/main/java/konkuk/thip/room/domain/Category.java rename to src/main/java/konkuk/thip/room/domain/value/Category.java index 5ca106a5f..7ebbb5bc8 100644 --- a/src/main/java/konkuk/thip/room/domain/Category.java +++ b/src/main/java/konkuk/thip/room/domain/value/Category.java @@ -1,4 +1,4 @@ -package konkuk.thip.room.domain; +package konkuk.thip.room.domain.value; import konkuk.thip.common.exception.InvalidStateException; import lombok.Getter; diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java index 9cf2a8f30..9e6396f07 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/dto/AttendanceCheckQueryDto.java @@ -1,7 +1,7 @@ package konkuk.thip.roompost.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java b/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java index 8eda68552..53ac6d112 100644 --- a/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java +++ b/src/main/java/konkuk/thip/roompost/application/port/out/dto/RoomPostQueryDto.java @@ -1,7 +1,7 @@ package konkuk.thip.roompost.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.springframework.util.Assert; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java index 6864dcb79..1a2c51c77 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java +++ b/src/main/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntity.java @@ -3,7 +3,7 @@ import jakarta.persistence.*; import konkuk.thip.common.entity.BaseJpaEntity; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import konkuk.thip.user.domain.User; import lombok.*; diff --git a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java index 81ba898d5..b8d9a774e 100644 --- a/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java +++ b/src/main/java/konkuk/thip/user/adapter/out/persistence/FollowingQueryPersistenceAdapter.java @@ -7,7 +7,7 @@ import konkuk.thip.user.application.port.out.dto.UserQueryDto; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; import konkuk.thip.user.application.port.out.FollowingQueryPort; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; diff --git a/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java b/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java index fa15dc386..1c6479c93 100644 --- a/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java +++ b/src/main/java/konkuk/thip/user/application/port/out/dto/FollowingQueryDto.java @@ -1,7 +1,7 @@ package konkuk.thip.user.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java b/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java index ec1f6c6f7..4cdef8576 100644 --- a/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java +++ b/src/main/java/konkuk/thip/user/application/port/out/dto/UserQueryDto.java @@ -1,7 +1,7 @@ package konkuk.thip.user.application.port.out.dto; import com.querydsl.core.annotations.QueryProjection; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import java.time.LocalDateTime; diff --git a/src/main/java/konkuk/thip/user/application/service/UserSignupService.java b/src/main/java/konkuk/thip/user/application/service/UserSignupService.java index 55507539c..04eb3323b 100644 --- a/src/main/java/konkuk/thip/user/application/service/UserSignupService.java +++ b/src/main/java/konkuk/thip/user/application/service/UserSignupService.java @@ -8,7 +8,7 @@ import konkuk.thip.user.application.port.in.dto.UserSignupResult; import konkuk.thip.user.application.port.out.UserCommandPort; import konkuk.thip.user.application.port.out.UserQueryPort; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import konkuk.thip.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/konkuk/thip/user/application/service/UserUpdateService.java b/src/main/java/konkuk/thip/user/application/service/UserUpdateService.java index 28ec23707..4919c9bd6 100644 --- a/src/main/java/konkuk/thip/user/application/service/UserUpdateService.java +++ b/src/main/java/konkuk/thip/user/application/service/UserUpdateService.java @@ -6,7 +6,7 @@ import konkuk.thip.user.application.port.in.dto.UserUpdateCommand; import konkuk.thip.user.application.port.out.UserCommandPort; import konkuk.thip.user.application.port.out.UserQueryPort; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import konkuk.thip.user.domain.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java b/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java index 50c96c984..3fe0fe9d8 100644 --- a/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java +++ b/src/main/java/konkuk/thip/user/application/service/UserViewAliasChoiceService.java @@ -1,10 +1,10 @@ package konkuk.thip.user.application.service; import konkuk.thip.common.util.EnumMappings; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.application.port.in.UserViewAliasChoiceUseCase; import konkuk.thip.user.application.port.in.dto.UserViewAliasChoiceResult; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/src/main/java/konkuk/thip/user/domain/User.java b/src/main/java/konkuk/thip/user/domain/User.java index 9a5e12786..d6df512f8 100644 --- a/src/main/java/konkuk/thip/user/domain/User.java +++ b/src/main/java/konkuk/thip/user/domain/User.java @@ -3,6 +3,7 @@ import konkuk.thip.common.entity.BaseDomainEntity; import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.user.domain.value.Alias; import lombok.Getter; import lombok.experimental.SuperBuilder; diff --git a/src/main/java/konkuk/thip/user/domain/Alias.java b/src/main/java/konkuk/thip/user/domain/value/Alias.java similarity index 97% rename from src/main/java/konkuk/thip/user/domain/Alias.java rename to src/main/java/konkuk/thip/user/domain/value/Alias.java index cf145530f..4ea9cbe78 100644 --- a/src/main/java/konkuk/thip/user/domain/Alias.java +++ b/src/main/java/konkuk/thip/user/domain/value/Alias.java @@ -1,4 +1,4 @@ -package konkuk.thip.user.domain; +package konkuk.thip.user.domain.value; import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.exception.code.ErrorCode; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java index bec38c34f..543e136d2 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookChangeSavedApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java index cf985a8bd..ba428423b 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookDetailSearchApiTest.java @@ -13,11 +13,11 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.book.adapter.out.jpa.SavedBookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.SavedBookJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java index 997fd5b79..5e880dac9 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookGetSelectableListApiTest.java @@ -8,10 +8,10 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java index 7d0aa10fd..b332bfd5a 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookMostSearchedBooksApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java index 733a03949..adfbc9bd2 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookRecruitingRoomApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java index d3d44dc43..7a8989bc6 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookSearchApiTest.java @@ -9,7 +9,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java index d36d6d921..9d4f5be82 100644 --- a/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/book/adapter/in/web/BookShowSavedListApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java index 9169d09b0..6f395291c 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentChangeLikeStatusApiTest.java @@ -14,10 +14,10 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java index 4074db595..7d0d26958 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateApiTest.java @@ -11,14 +11,14 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java index 2286e02ff..4c1640329 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentCreateControllerTest.java @@ -7,7 +7,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -18,7 +18,7 @@ import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java index fa0c81265..cfa56328f 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentDeleteApiTest.java @@ -8,7 +8,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -19,7 +19,7 @@ import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java index 3abc00d96..9f0b13de4 100644 --- a/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java +++ b/src/test/java/konkuk/thip/comment/adapter/in/web/CommentShowAllApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java index 5900cf372..697458718 100644 --- a/src/test/java/konkuk/thip/common/util/TestEntityFactory.java +++ b/src/test/java/konkuk/thip/common/util/TestEntityFactory.java @@ -6,8 +6,8 @@ import konkuk.thip.comment.adapter.out.jpa.CommentLikeJpaEntity; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.feed.domain.TagList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.feed.domain.value.ContentList; import konkuk.thip.post.adapter.out.jpa.PostJpaEntity; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; @@ -15,12 +15,12 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.*; import konkuk.thip.user.adapter.out.jpa.FollowingJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import java.time.LocalDate; import java.util.Collections; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java index 4a66b221e..bf8dfb4a8 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/BasicFeedShowAllApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java index 00e8e80a0..921c22204 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeLikeStatusApiTest.java @@ -10,7 +10,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java index 622e392f1..d51dce63e 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedChangeSavedApiTest.java @@ -10,10 +10,10 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java index aa6c0ec52..a76b8c6bc 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateApiTest.java @@ -8,10 +8,9 @@ import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.domain.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -31,7 +30,7 @@ import java.util.List; import java.util.Map; -import static konkuk.thip.feed.domain.Tag.*; +import static konkuk.thip.feed.domain.value.Tag.*; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java index 7a67a291a..2bbbd0004 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java @@ -1,7 +1,7 @@ package konkuk.thip.feed.adapter.in.web; import com.fasterxml.jackson.databind.ObjectMapper; -import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.value.Tag; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java index e707b9039..79ed5dc7c 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedDeleteApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -27,8 +27,6 @@ import static konkuk.thip.common.entity.StatusType.INACTIVE; import static konkuk.thip.post.domain.PostType.FEED; -import static konkuk.thip.feed.domain.Tag.FOREIGN_NOVEL; -import static konkuk.thip.feed.domain.Tag.KOREAN_NOVEL; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java index 263cc4586..66095fe48 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedRelatedWithBookApiTest.java @@ -10,11 +10,11 @@ import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; import konkuk.thip.post.adapter.out.jpa.PostLikeJpaEntity; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java index f877e2bce..2b5fb1b69 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowMineApiTest.java @@ -10,7 +10,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java index 844fe6a57..4d3ff8597 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSavedListApiTest.java @@ -11,7 +11,7 @@ import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java index 6e4418df4..244c43b52 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSingleApiTest.java @@ -7,13 +7,13 @@ import konkuk.thip.feed.adapter.out.jpa.SavedFeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.feed.adapter.out.persistence.repository.SavedFeedJpaRepository; -import konkuk.thip.feed.domain.Tag; +import konkuk.thip.feed.domain.value.Tag; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java index 6be8d6316..59237330f 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowSpecificUserApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java index dc9fe0202..13e017cf0 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowUserInfoApiTest.java @@ -8,7 +8,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java index b2139a875..3d485e6b7 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedShowWriteInfoApiTest.java @@ -4,9 +4,9 @@ import konkuk.thip.common.util.EnumMappings; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.config.TestS3MockConfig; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.room.domain.value.Category; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -22,7 +22,6 @@ import java.util.*; import java.util.stream.Collectors; -import static konkuk.thip.feed.domain.Tag.*; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -90,7 +89,7 @@ void showFeedWriteInfo_returnsCategoryAndTags() throws Exception { for (var entry : categoryToTags.entrySet()) { String categoryName = entry.getKey().getValue(); Set tagValues = entry.getValue().stream() - .map(konkuk.thip.feed.domain.Tag::getValue) + .map(Tag::getValue) .collect(Collectors.toSet()); expectedMap.put(categoryName, tagValues); } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java index bd8bf801d..010146e79 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateApiTest.java @@ -7,11 +7,11 @@ import konkuk.thip.config.TestS3MockConfig; import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.feed.domain.Tag; -import konkuk.thip.room.domain.Category; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -28,9 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import static konkuk.thip.feed.domain.Tag.*; +import static konkuk.thip.feed.domain.value.Tag.*; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java index e16518461..80e7d91dc 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java @@ -5,10 +5,10 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -26,7 +26,7 @@ import java.util.Map; import static konkuk.thip.common.exception.code.ErrorCode.*; -import static konkuk.thip.feed.domain.Tag.*; +import static konkuk.thip.feed.domain.value.Tag.*; import static org.hamcrest.Matchers.containsString; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java index a14e339ab..62025dad9 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FollowingPriorityFeedShowAllApiTest.java @@ -12,7 +12,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java index 282738411..f24784f86 100644 --- a/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/out/jpa/FeedJpaEntityTest.java @@ -7,7 +7,7 @@ import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/feed/domain/FeedTest.java b/src/test/java/konkuk/thip/feed/domain/FeedTest.java index 6e8501c45..746e5be96 100644 --- a/src/test/java/konkuk/thip/feed/domain/FeedTest.java +++ b/src/test/java/konkuk/thip/feed/domain/FeedTest.java @@ -3,6 +3,8 @@ import konkuk.thip.common.exception.BusinessException; import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.feed.domain.value.ContentList; +import konkuk.thip.feed.domain.value.Tag; +import konkuk.thip.feed.domain.value.TagList; import konkuk.thip.post.domain.service.PostCountService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -12,7 +14,7 @@ import java.util.List; import static konkuk.thip.common.exception.code.ErrorCode.*; -import static konkuk.thip.feed.domain.Tag.KOREAN_NOVEL; +import static konkuk.thip.feed.domain.value.Tag.KOREAN_NOVEL; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.*; diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java index dd05c5ec9..6331a31d4 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchDeleteApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java index d04e97824..64b351594 100644 --- a/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java +++ b/src/test/java/konkuk/thip/recentSearch/adapter/in/web/RecentSearchGetApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java index b7bbea85b..c69cda6e9 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCloseJoinApiTest.java @@ -8,11 +8,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java index 4418ba0aa..f732cc077 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomCreateApiTest.java @@ -9,11 +9,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java index 6f48f8cc7..124a674d9 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetDeadlinePopularApiTest.java @@ -8,10 +8,10 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -23,7 +23,6 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; -import java.util.AbstractList; import java.util.ArrayList; import java.util.List; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java index 9b76d3d38..54722b6ef 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetHomeJoinedRoomsApiTest.java @@ -6,11 +6,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.*; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java index b50e79fe9..59a46acf6 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomGetMemberListApiTest.java @@ -7,12 +7,12 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java index 6c4bddd7f..7f404183b 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomJoinApiTest.java @@ -9,11 +9,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java index 36282f56f..001323db0 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomParticipantDeleteApiTest.java @@ -10,11 +10,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java index 38967c95a..26ca330a0 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPlayingDetailViewApiTest.java @@ -9,7 +9,7 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; @@ -17,7 +17,7 @@ import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java index 6ff2a8005..f41349c8e 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.feed.adapter.out.jpa.FeedJpaEntity; import konkuk.thip.feed.adapter.out.persistence.repository.FeedJpaRepository; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.in.web.request.RoomPostIsLikeRequest; @@ -19,7 +19,7 @@ import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java index 27b218996..f0057b227 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomPostChangeLikeStatusControllerTest.java @@ -4,7 +4,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -13,7 +13,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java index f747dd698..cbad6f571 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomRecruitingDetailViewApiTest.java @@ -8,11 +8,11 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantJpaEntity; import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.*; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java index 8df692610..70b16969d 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomSearchApiTest.java @@ -8,11 +8,11 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.*; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java index a37f462d4..9c794fbb5 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomShowMineApiTest.java @@ -8,10 +8,10 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java index 03ec864dc..5efa7075f 100644 --- a/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java +++ b/src/test/java/konkuk/thip/room/adapter/in/web/RoomVerifyPasswordApiTest.java @@ -5,12 +5,12 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.in.web.request.RoomVerifyPasswordRequest; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java index eab0ef414..039fa06fd 100644 --- a/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java +++ b/src/test/java/konkuk/thip/room/adapter/out/jpa/RoomJpaEntityTest.java @@ -6,8 +6,7 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.room.domain.value.Category; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/room/domain/RoomTest.java b/src/test/java/konkuk/thip/room/domain/RoomTest.java index 54d088490..a8d051334 100644 --- a/src/test/java/konkuk/thip/room/domain/RoomTest.java +++ b/src/test/java/konkuk/thip/room/domain/RoomTest.java @@ -2,6 +2,7 @@ import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.room.domain.value.Category; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java index 9675f80e9..99493b7fd 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckCreateApiTest.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.attendancecheck.AttendanceCheckJpaRepository; import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; @@ -13,7 +13,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java index a26f7bca8..ed944bdd0 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/AttendanceCheckShowApiTest.java @@ -8,12 +8,12 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.AttendanceCheckJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.attendancecheck.AttendanceCheckJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java index 3da31a1b5..23e92f679 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordCreateControllerTest.java @@ -5,7 +5,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.in.web.request.RecordCreateRequest; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; @@ -16,7 +16,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java index 39a8cfcc5..bc1c29b67 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordDeleteApiTest.java @@ -7,7 +7,7 @@ import konkuk.thip.comment.adapter.out.persistence.repository.CommentLikeJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.post.adapter.out.persistence.PostLikeJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -16,7 +16,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java index e94c8dca9..647b9c78c 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RecordPinApiTest.java @@ -3,7 +3,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -12,7 +12,7 @@ import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java index 6172b5297..c84b71227 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/RoomPostSearchApiTest.java @@ -5,7 +5,7 @@ import konkuk.thip.book.adapter.out.jpa.BookJpaEntity; import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; @@ -20,7 +20,7 @@ import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java index 9f400309d..b470527ab 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteApiTest.java @@ -8,7 +8,7 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.in.web.request.VoteRequest; @@ -17,7 +17,7 @@ import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteParticipantJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java index 0398feb88..e16bb8c0b 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteCreateApiTest.java @@ -9,7 +9,7 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.in.web.request.VoteCreateRequest; @@ -17,7 +17,7 @@ import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java index f66b2fef6..8824fab09 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/in/web/VoteDeleteApiTest.java @@ -11,7 +11,7 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.jpa.VoteItemJpaEntity; @@ -19,7 +19,7 @@ import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteParticipantJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java index fec0593c3..e7b8a7581 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/RecordJpaEntityTest.java @@ -5,12 +5,12 @@ import konkuk.thip.book.adapter.out.persistence.repository.BookJpaRepository; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java index c3791fcf8..385be678a 100644 --- a/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java +++ b/src/test/java/konkuk/thip/roompost/adapter/out/jpa/VoteJpaEntityTest.java @@ -6,11 +6,11 @@ import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.room.adapter.out.jpa.RoomJpaEntity; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java index eb02ff635..abcc74362 100644 --- a/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java +++ b/src/test/java/konkuk/thip/roompost/application/service/VoteCreateServiceTest.java @@ -8,13 +8,13 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteItemJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.roompost.application.port.in.dto.vote.VoteCreateCommand; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java index 279e79492..57b281484 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserFollowApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java index a5b0d0938..ede5d2d49 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java @@ -5,7 +5,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java index e02c19ee3..fb848746d 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowingApiTest.java @@ -5,7 +5,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java index 432420507..118d5d2b0 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserIsFollowingApiTest.java @@ -5,7 +5,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java index b7d7a23a1..494a22ab7 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserReactionApiTest.java @@ -14,14 +14,14 @@ import konkuk.thip.room.adapter.out.jpa.RoomParticipantRole; import konkuk.thip.room.adapter.out.persistence.repository.RoomJpaRepository; import konkuk.thip.room.adapter.out.persistence.repository.roomparticipant.RoomParticipantJpaRepository; -import konkuk.thip.room.domain.Category; +import konkuk.thip.room.domain.value.Category; import konkuk.thip.roompost.adapter.out.jpa.RecordJpaEntity; import konkuk.thip.roompost.adapter.out.jpa.VoteJpaEntity; import konkuk.thip.roompost.adapter.out.persistence.repository.record.RecordJpaRepository; import konkuk.thip.roompost.adapter.out.persistence.repository.vote.VoteJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java index 58e1fef16..92842ba8c 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSearchApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.recentSearch.adapter.out.persistence.repository.RecentSearchJpaRepository; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java index 847f2da89..95531b453 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserShowFollowingsInFeedViewApiTest.java @@ -9,7 +9,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; import konkuk.thip.user.adapter.out.persistence.repository.following.FollowingJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java index cc5ebdcc3..77b38e3be 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserSignupControllerTest.java @@ -7,7 +7,7 @@ import konkuk.thip.user.adapter.in.web.request.UserSignupRequest; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java index db96ef59c..04225af42 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserUpdateApiTest.java @@ -6,7 +6,7 @@ import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.jpa.UserRole; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java index 33ba7af96..63b6f12c1 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserVerifyNicknameControllerTest.java @@ -6,7 +6,7 @@ import konkuk.thip.user.adapter.in.web.request.UserVerifyNicknameRequest; import konkuk.thip.user.adapter.out.jpa.UserJpaEntity; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java index 5a0c27619..7b24853db 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserViewAliasChoiceControllerTest.java @@ -3,8 +3,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import konkuk.thip.common.util.EnumMappings; -import konkuk.thip.room.domain.Category; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.room.domain.value.Category; +import konkuk.thip.user.domain.value.Alias; import org.assertj.core.groups.Tuple; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java b/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java index 84d5650bf..832e43af2 100644 --- a/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java +++ b/src/test/java/konkuk/thip/user/adapter/out/jpa/UserJpaEntityTest.java @@ -4,7 +4,7 @@ import jakarta.persistence.PersistenceContext; import konkuk.thip.common.util.TestEntityFactory; import konkuk.thip.user.adapter.out.persistence.repository.UserJpaRepository; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/konkuk/thip/user/application/service/UserUpdateServiceTest.java b/src/test/java/konkuk/thip/user/application/service/UserUpdateServiceTest.java index 16e24090f..134aff546 100644 --- a/src/test/java/konkuk/thip/user/application/service/UserUpdateServiceTest.java +++ b/src/test/java/konkuk/thip/user/application/service/UserUpdateServiceTest.java @@ -4,7 +4,7 @@ import konkuk.thip.user.application.port.in.dto.UserUpdateCommand; import konkuk.thip.user.application.port.out.UserCommandPort; import konkuk.thip.user.application.port.out.UserQueryPort; -import konkuk.thip.user.domain.Alias; +import konkuk.thip.user.domain.value.Alias; import konkuk.thip.user.domain.User; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; diff --git a/src/test/java/konkuk/thip/user/domain/UserTest.java b/src/test/java/konkuk/thip/user/domain/UserTest.java index 2fb031840..e8a7649ff 100644 --- a/src/test/java/konkuk/thip/user/domain/UserTest.java +++ b/src/test/java/konkuk/thip/user/domain/UserTest.java @@ -2,6 +2,7 @@ import konkuk.thip.common.exception.InvalidStateException; import konkuk.thip.common.exception.code.ErrorCode; +import konkuk.thip.user.domain.value.Alias; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; From 29413bca846acc3bee61f6c6f575ffc5e88b3f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 20:19:37 +0900 Subject: [PATCH 44/45] =?UTF-8?q?[fix]=20=EB=8B=A8=EC=9C=84=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95=20(#257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feed/adapter/in/web/FeedCreateControllerTest.java | 8 ++++---- .../feed/adapter/in/web/FeedUpdateControllerTest.java | 10 ++++------ 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java index 2bbbd0004..f51d478ee 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedCreateControllerTest.java @@ -46,7 +46,7 @@ private Map buildValidRequest() { return request; } - private void assertBadRequest_InvalidFeedCreate(Map request, String message) throws Exception { + private void assertBadRequest_InvalidFeedCreate(Map request, String message, int errorCode) throws Exception { mockMvc.perform(multipart("/feeds") .file(new MockMultipartFile( "request", "", MediaType.APPLICATION_JSON_VALUE, @@ -54,7 +54,7 @@ private void assertBadRequest_InvalidFeedCreate(Map request, Str .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) .requestAttr("userId", 1L)) .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.code").value(INVALID_FEED_COMMAND.getCode())) + .andExpect(jsonPath("$.code").value(errorCode)) .andExpect(jsonPath("$.message", containsString(message))); } @@ -110,7 +110,7 @@ void tooManyTags() throws Exception { Map req = buildValidRequest(); req.put("tagList", List.of(Tag.PHYSICS.getValue(), Tag.CHEMISTRY.getValue(), Tag.BIOLOGY.getValue(), Tag.ARCHITECTURE.getValue(), Tag.ARCHITECTURE.getValue(), Tag.DANCE.getValue())); - assertBadRequest_InvalidFeedCreate(req, "태그는 최대 5개까지 입력할 수 있습니다."); + assertBadRequest_InvalidFeedCreate(req, TAG_LIST_SIZE_OVERFLOW.getMessage(),TAG_LIST_SIZE_OVERFLOW.getCode()); } @Test @@ -118,7 +118,7 @@ void tooManyTags() throws Exception { void duplicatedTags() throws Exception { Map req = buildValidRequest(); req.put("tagList", List.of(Tag.PHYSICS.getValue(), Tag.PHYSICS.getValue())); - assertBadRequest_InvalidFeedCreate(req, TAG_SHOULD_BE_UNIQUE.getMessage()); + assertBadRequest_InvalidFeedCreate(req, TAG_SHOULD_BE_UNIQUE.getMessage(),TAG_SHOULD_BE_UNIQUE.getCode()); } } diff --git a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java index 80e7d91dc..97816072e 100644 --- a/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java +++ b/src/test/java/konkuk/thip/feed/adapter/in/web/FeedUpdateControllerTest.java @@ -55,8 +55,6 @@ void setUp() { Alias alias = TestEntityFactory.createLiteratureAlias(); UserJpaEntity user = userJpaRepository.save(TestEntityFactory.createUser(alias)); - Category category = TestEntityFactory.createLiteratureCategory(); - BookJpaEntity book = bookJpaRepository.save(TestEntityFactory.createBookWithISBN("9788954682152")); savedFeedId = feedJpaRepository.save(TestEntityFactory.createFeed(user,book, true, List.of(KOREAN_NOVEL, FOREIGN_NOVEL, CLASSIC_LITERATURE))).getPostId(); creatorUserId = user.getUserId(); @@ -142,7 +140,7 @@ void tooManyTags() throws Exception { Map req = buildValidUpdateRequest(); req.put("tagList", List.of(PHYSICS.getValue(), CHEMISTRY.getValue(), KOREAN_NOVEL.getValue(), FOREIGN_NOVEL.getValue(), CLASSIC_LITERATURE.getValue(), HISTORY.getValue())); - assertBadRequest(INVALID_FEED_COMMAND.getCode(), req, "태그는 최대 5개까지 입력할 수 있습니다."); + assertBadRequest(TAG_LIST_SIZE_OVERFLOW.getCode(), req, TAG_LIST_SIZE_OVERFLOW.getMessage()); } @Test @@ -150,7 +148,7 @@ void tooManyTags() throws Exception { void duplicatedTags() throws Exception { Map req = buildValidUpdateRequest(); req.put("tagList", List.of(KOREAN_NOVEL.getValue(), KOREAN_NOVEL.getValue())); - assertBadRequest(INVALID_FEED_COMMAND.getCode(), req, TAG_SHOULD_BE_UNIQUE.getMessage()); + assertBadRequest(TAG_SHOULD_BE_UNIQUE.getCode(), req, TAG_SHOULD_BE_UNIQUE.getMessage()); } } @@ -187,8 +185,8 @@ void invalidImageUrl() throws Exception { .content(objectMapper.writeValueAsBytes(req)) ) .andExpect(status().isBadRequest()) - .andExpect(jsonPath("$.code").value(INVALID_FEED_COMMAND.getCode())) - .andExpect(jsonPath("$.message", containsString("해당 이미지는 이 피드에 존재하지 않습니다"))); + .andExpect(jsonPath("$.code").value(CONTENT_NOT_FOUND.getCode())) + .andExpect(jsonPath("$.message", containsString(CONTENT_NOT_FOUND.getMessage()))); } } } From d91c59860f1caff3ef7382ae0179f9534fc32e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=ED=9D=AC=EC=A7=84?= Date: Wed, 20 Aug 2025 21:57:09 +0900 Subject: [PATCH 45/45] =?UTF-8?q?[fix]=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=ED=95=9C=20=EC=9C=A0=EC=A0=80=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EC=B6=94=EA=B0=80=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thip/user/adapter/in/web/UserGetFollowersApiTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java index ede5d2d49..0aba6ac17 100644 --- a/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java +++ b/src/test/java/konkuk/thip/user/adapter/in/web/UserGetFollowersApiTest.java @@ -45,6 +45,7 @@ class UserGetFollowersApiTest { private FollowingJpaRepository followingJpaRepository; private UserJpaEntity targetUser; // 팔로워를 조회할 대상 사용자 + private UserJpaEntity loginUser; private List followerUsers; // 팔로워 12명 @BeforeEach @@ -53,6 +54,7 @@ void setUp() { // 대상 사용자 targetUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); + loginUser = userJpaRepository.save(TestEntityFactory.createUser(alias)); // 팔로워 12명 생성 및 저장 followerUsers = new ArrayList<>(); @@ -69,6 +71,7 @@ void getFollowersWithCursorPaging() throws Exception { // 1. 첫 번째 요청 (cursor 없음) ResultActions firstPageResult = mockMvc.perform( get("/users/{userId}/followers", targetUser.getUserId()) + .requestAttr("userId", loginUser.getUserId()) ); firstPageResult.andExpect(status().isOk()) @@ -87,6 +90,7 @@ void getFollowersWithCursorPaging() throws Exception { ResultActions secondPageResult = mockMvc.perform( get("/users/{userId}/followers", targetUser.getUserId()) .param("cursor", nextCursor) + .requestAttr("userId", loginUser.getUserId()) ); secondPageResult.andExpect(status().isOk())