From abe049e6f64d3976e17e09420649cf286f7de731 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Aug 2024 07:05:34 +0000 Subject: [PATCH 1/2] Create PR for #316 From b36e5cbc3932235894f461bd70d141cd6c4413be Mon Sep 17 00:00:00 2001 From: hyxrxn Date: Fri, 16 Aug 2024 16:12:15 +0900 Subject: [PATCH 2/2] :sparkles: exclude blocked user comments --- .../java/net/pengcook/comment/domain/Comment.java | 8 +++++++- .../comment/controller/CommentControllerTest.java | 14 +++++++++++++- .../comment/service/CommentServiceTest.java | 8 +++++--- backend/src/test/resources/data/comment.sql | 13 +++++++++++-- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/net/pengcook/comment/domain/Comment.java b/backend/src/main/java/net/pengcook/comment/domain/Comment.java index 5cd04f03..a28013ba 100644 --- a/backend/src/main/java/net/pengcook/comment/domain/Comment.java +++ b/backend/src/main/java/net/pengcook/comment/domain/Comment.java @@ -12,13 +12,14 @@ import lombok.Getter; import lombok.NoArgsConstructor; import net.pengcook.recipe.domain.Recipe; +import net.pengcook.user.domain.AuthorAble; import net.pengcook.user.domain.User; @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor(access = AccessLevel.PRIVATE) -public class Comment { +public class Comment implements AuthorAble { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -39,4 +40,9 @@ public class Comment { public Comment(User user, Recipe recipe, String message, LocalDateTime createdAt) { this(0L, user, recipe, message, createdAt); } + + @Override + public long getAuthorId() { + return user.getId(); + } } diff --git a/backend/src/test/java/net/pengcook/comment/controller/CommentControllerTest.java b/backend/src/test/java/net/pengcook/comment/controller/CommentControllerTest.java index 5bba410b..afdd0c60 100644 --- a/backend/src/test/java/net/pengcook/comment/controller/CommentControllerTest.java +++ b/backend/src/test/java/net/pengcook/comment/controller/CommentControllerTest.java @@ -25,6 +25,8 @@ @Sql(value = "/data/comment.sql") class CommentControllerTest extends RestDocsSetting { + private static final int COMMENT_COUNT_OF_FIRST_RECIPE = 3; + @Test @WithLoginUser(email = "ela@pengcook.net") @DisplayName("레시피의 댓글을 조회한다.") @@ -48,7 +50,17 @@ void readComments() { ))) .when().get("/comments/{recipeId}", 1L) .then().log().all() - .body("size()", is(2)); + .body("size()", is(COMMENT_COUNT_OF_FIRST_RECIPE)); + } + + @Test + @WithLoginUser(email = "loki@pengcook.net") + @DisplayName("레시피 댓글 조회 시 차단한 사용자의 댓글은 불러오지 않는다.") + void readCommentWithBlockedUser() { + RestAssured.given(spec).log().all() + .when().get("/comments/{recipeId}", 1L) + .then().log().all() + .body("size()", is(COMMENT_COUNT_OF_FIRST_RECIPE - 1)); } @Test diff --git a/backend/src/test/java/net/pengcook/comment/service/CommentServiceTest.java b/backend/src/test/java/net/pengcook/comment/service/CommentServiceTest.java index 4b98f089..bcf20de0 100644 --- a/backend/src/test/java/net/pengcook/comment/service/CommentServiceTest.java +++ b/backend/src/test/java/net/pengcook/comment/service/CommentServiceTest.java @@ -23,7 +23,7 @@ @Sql(scripts = "/data/comment.sql") class CommentServiceTest { - private static final int INITIAL_COMMENT_COUNT = 3; + private static final int INITIAL_COMMENT_COUNT = 4; @Autowired private CommentService commentService; @@ -38,7 +38,9 @@ void readComments() { new CommentOfRecipeResponse(1L, 2L, "loki.jpg", "loki", LocalDateTime.of(2024, 1, 1, 0, 0, 0), "great", false), new CommentOfRecipeResponse(2L, 1L, "ela.jpg", "ela", LocalDateTime.of(2024, 1, 2, 0, 0, 0), - "thank you", true) + "thank you", true), + new CommentOfRecipeResponse(4L, 3L, "ato.jpg", "ato", LocalDateTime.of(2024, 1, 3, 0, 0, 0), + "haha", false) ); List actual = commentService.readComments(1L, userInfo); @@ -92,7 +94,7 @@ void deleteCommentWhenNotCommentOwner() { void deleteCommentsByRecipe() { commentService.deleteCommentsByRecipe(1L); - assertThat(commentRepository.count()).isEqualTo(INITIAL_COMMENT_COUNT - 2); + assertThat(commentRepository.count()).isEqualTo(INITIAL_COMMENT_COUNT - 3); } @Test diff --git a/backend/src/test/resources/data/comment.sql b/backend/src/test/resources/data/comment.sql index 14a7f750..e1b767a6 100644 --- a/backend/src/test/resources/data/comment.sql +++ b/backend/src/test/resources/data/comment.sql @@ -13,12 +13,17 @@ TRUNCATE TABLE comment; ALTER TABLE comment ALTER COLUMN id RESTART; +TRUNCATE TABLE user_block; +ALTER TABLE user_block + ALTER COLUMN id RESTART; + SET REFERENTIAL_INTEGRITY TRUE; INSERT INTO users (email, username, nickname, image, region) VALUES ('ela@pengcook.net', 'ela', '엘라', 'ela.jpg', 'KOREA'), - ('loki@pengcook.net', 'loki', '로키', 'loki.jpg', 'KOREA'); + ('loki@pengcook.net', 'loki', '로키', 'loki.jpg', 'KOREA'), + ('ato@pengcook.net', 'ato', '아토', 'ato.jpg', 'KOREA'); INSERT INTO recipe (title, author_id, cooking_time, thumbnail, difficulty, like_count, comment_count, description, created_at) VALUES ('김밥', 1, '01:00:00', '김밥이미지.jpg', 8, 1, 0, '김밥 조리법', '2024-07-02 13:00:00'), @@ -27,4 +32,8 @@ VALUES ('김밥', 1, '01:00:00', '김밥이미지.jpg', 8, 1, 0, '김밥 조리 INSERT INTO comment (user_id, recipe_id, message, created_at) VALUES ('2', '1', 'great', '2024-01-01'), ('1', '1', 'thank you','2024-01-02'), - ('2', '2', 'good', '2024-05-05'); + ('2', '2', 'good', '2024-05-05'), + ('3', '1', 'haha', '2024-01-03'); + +INSERT INTO user_block (blocker_id, blockee_id) +values (2, 3);