From 16e9f8a4c6c67d7c9590dc8cf80c1e4f0a27fe1e Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 16:11:11 +0900 Subject: [PATCH 01/25] =?UTF-8?q?refactor:=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EA=B7=B8=EB=A3=B9=EC=97=90=20memberId=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=ED=9A=8C=EC=9B=90=20=EC=A2=85=EB=A5=98=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reviewgroup/domain/GroupAccessCode.java | 2 +- .../reviewgroup/domain/ReviewGroup.java | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/reviewme/reviewgroup/domain/GroupAccessCode.java b/backend/src/main/java/reviewme/reviewgroup/domain/GroupAccessCode.java index 25764e63d..f76dab6de 100644 --- a/backend/src/main/java/reviewme/reviewgroup/domain/GroupAccessCode.java +++ b/backend/src/main/java/reviewme/reviewgroup/domain/GroupAccessCode.java @@ -17,7 +17,7 @@ public class GroupAccessCode { private static final Pattern PATTERN = Pattern.compile("^[a-zA-Z0-9]{4,20}$"); - @Column(name = "group_access_code", nullable = false) + @Column(name = "group_access_code", nullable = true) private String code; public GroupAccessCode(String code) { diff --git a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java index 6e95967bd..9550b6303 100644 --- a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java +++ b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java @@ -30,6 +30,12 @@ public class ReviewGroup { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @Column(name = "member_id", nullable = true) + private Long memberId; + + @Column(name = "template_id", nullable = false) + private long templateId; + @Column(name = "reviewee", nullable = false) private String reviewee; @@ -42,18 +48,26 @@ public class ReviewGroup { @Embedded private GroupAccessCode groupAccessCode; - @Column(name = "template_id", nullable = false) - private long templateId; - public ReviewGroup(String reviewee, String projectName, String reviewRequestCode, String groupAccessCode, - long templateId) { + public ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode, + String groupAccessCode) { validateRevieweeLength(reviewee); validateProjectNameLength(projectName); + this.memberId = memberId; + this.templateId = templateId; this.reviewee = reviewee; this.projectName = projectName; this.reviewRequestCode = reviewRequestCode; this.groupAccessCode = new GroupAccessCode(groupAccessCode); - this.templateId = templateId; + } + + public ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode) { + this(memberId, templateId, reviewee, projectName, reviewRequestCode, null); + } + + public ReviewGroup(long templateId, String reviewee, String projectName, String reviewRequestCode, + String groupAccessCode) { + this(null, templateId, reviewee, projectName, reviewRequestCode, groupAccessCode); } private void validateRevieweeLength(String reviewee) { From 33c7a10407ad1458788e129bfe8d50b7b471abc0 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 16:12:13 +0900 Subject: [PATCH 02/25] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=EC=84=B8=EC=85=98=20=EC=9C=A0=EB=AC=B4=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=A5=B8=20=EB=A6=AC=EB=B7=B0=20=EA=B7=B8=EB=A3=B9=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EB=B6=84=EA=B8=B0=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReviewGroupController.java | 13 ++++-- .../service/ReviewGroupService.java | 41 +++++++++++++++---- .../GroupAccessCodeNullException.java | 11 +++++ 3 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 backend/src/main/java/reviewme/reviewgroup/service/exception/GroupAccessCodeNullException.java diff --git a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java index fa82ba70d..7e2e86cbd 100644 --- a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java +++ b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.SessionAttribute; import reviewme.reviewgroup.service.ReviewGroupLookupService; import reviewme.reviewgroup.service.ReviewGroupService; import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; @@ -33,10 +34,16 @@ public ResponseEntity getReviewGroupSummary(@RequestParam S @PostMapping("/v2/groups") public ResponseEntity createReviewGroup( - @Valid @RequestBody ReviewGroupCreationRequest request + @Valid @RequestBody ReviewGroupCreationRequest request, + // TODO: 회원 세션 임시 사용 방식, 이후 리졸버를 통해 객체로 받아와야 함 + @SessionAttribute(name = "member", required = false) Long memberId ) { - // 회원 세션 추후 추가해야 함 - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request); + ReviewGroupCreationResponse response; + if (memberId != null) { + response = reviewGroupService.createReviewGroupForMember(request, memberId); + } else { + response = reviewGroupService.createReviewGroupForGuest(request); + } return ResponseEntity.ok(response); } diff --git a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java index fb09f6cb0..9f693fb97 100644 --- a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java +++ b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java @@ -8,6 +8,7 @@ import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; import reviewme.reviewgroup.service.dto.ReviewGroupCreationRequest; import reviewme.reviewgroup.service.dto.ReviewGroupCreationResponse; +import reviewme.reviewgroup.service.exception.GroupAccessCodeNullException; import reviewme.reviewgroup.service.exception.ReviewGroupNotFoundByReviewRequestCodeException; import reviewme.reviewgroup.service.exception.ReviewGroupUnauthorizedException; import reviewme.template.domain.Template; @@ -26,25 +27,49 @@ public class ReviewGroupService { private final TemplateRepository templateRepository; @Transactional - public ReviewGroupCreationResponse createReviewGroup(ReviewGroupCreationRequest request) { - // 회원, 비회원 분기 처리 필요 - String reviewRequestCode; - do { - reviewRequestCode = randomCodeGenerator.generate(REVIEW_REQUEST_CODE_LENGTH); - } while (reviewGroupRepository.existsByReviewRequestCode(reviewRequestCode)); + public ReviewGroupCreationResponse createReviewGroupForMember(ReviewGroupCreationRequest request, long memberId) { + String reviewRequestCode = generateReviewRequestCode(); Template template = templateRepository.findById(DEFAULT_TEMPLATE_ID) .orElseThrow(() -> new TemplateNotFoundException(DEFAULT_TEMPLATE_ID)); ReviewGroup reviewGroup = reviewGroupRepository.save( new ReviewGroup( - request.revieweeName(), request.projectName(), reviewRequestCode, request.groupAccessCode(), - template.getId() + memberId, template.getId(), request.revieweeName(), request.projectName(), reviewRequestCode ) ); return new ReviewGroupCreationResponse(reviewGroup.getReviewRequestCode()); } + @Transactional + public ReviewGroupCreationResponse createReviewGroupForGuest(ReviewGroupCreationRequest request) { + String reviewRequestCode = generateReviewRequestCode(); + + if (request.groupAccessCode() == null) { + throw new GroupAccessCodeNullException(); + } + + Template template = templateRepository.findById(DEFAULT_TEMPLATE_ID) + .orElseThrow(() -> new TemplateNotFoundException(DEFAULT_TEMPLATE_ID)); + + ReviewGroup reviewGroup = reviewGroupRepository.save( + new ReviewGroup( + template.getId(), request.revieweeName(), request.projectName(), reviewRequestCode, + request.groupAccessCode() + ) + ); + return new ReviewGroupCreationResponse(reviewGroup.getReviewRequestCode()); + } + + public String generateReviewRequestCode() { + String reviewRequestCode; + do { + reviewRequestCode = randomCodeGenerator.generate(REVIEW_REQUEST_CODE_LENGTH); + } while (reviewGroupRepository.existsByReviewRequestCode(reviewRequestCode)); + + return reviewRequestCode; + } + @Transactional(readOnly = true) public void checkGroupAccessCode(CheckValidAccessRequest request) { ReviewGroup reviewGroup = reviewGroupRepository.findByReviewRequestCode(request.reviewRequestCode()) diff --git a/backend/src/main/java/reviewme/reviewgroup/service/exception/GroupAccessCodeNullException.java b/backend/src/main/java/reviewme/reviewgroup/service/exception/GroupAccessCodeNullException.java new file mode 100644 index 000000000..265c93e4a --- /dev/null +++ b/backend/src/main/java/reviewme/reviewgroup/service/exception/GroupAccessCodeNullException.java @@ -0,0 +1,11 @@ +package reviewme.reviewgroup.service.exception; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class GroupAccessCodeNullException extends NullPointerException{ + public GroupAccessCodeNullException() { + super("비회원 리뷰 그룹 생성은 그룹 액세스 코드를 필수로 입력해야 해요."); + log.info("Non-member review group creation failed: Group access code is required"); + } +} From a7d5b7896afa4b56368be51c499fb28358e5c965 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 17:15:53 +0900 Subject: [PATCH 03/25] =?UTF-8?q?refactor:=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EA=B7=B8=EB=A3=B9=EC=9D=98=20=EA=B7=B8=EB=A3=B9=EC=95=A1?= =?UTF-8?q?=EC=84=B8=EC=8A=A4=EC=BD=94=EB=93=9C=20null=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reviewme/reviewgroup/domain/ReviewGroup.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java index 9550b6303..b831006be 100644 --- a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java +++ b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java @@ -49,7 +49,7 @@ public class ReviewGroup { private GroupAccessCode groupAccessCode; - public ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode, + private ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode, String groupAccessCode) { validateRevieweeLength(reviewee); validateProjectNameLength(projectName); @@ -58,7 +58,11 @@ public ReviewGroup(Long memberId, long templateId, String reviewee, String proje this.reviewee = reviewee; this.projectName = projectName; this.reviewRequestCode = reviewRequestCode; - this.groupAccessCode = new GroupAccessCode(groupAccessCode); + if (groupAccessCode != null) { + this.groupAccessCode = new GroupAccessCode(groupAccessCode); + } else { + this.groupAccessCode = null; + } } public ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode) { @@ -85,10 +89,10 @@ private void validateProjectNameLength(String projectName) { } public boolean matchesGroupAccessCode(String code) { - return groupAccessCode.matches(code); + return groupAccessCode != null && groupAccessCode.matches(code); } public String getGroupAccessCode() { - return groupAccessCode.getCode(); + return groupAccessCode != null ? groupAccessCode.getCode() : null; } } From 5e4090e39d310e44ba6cea8f6d5ae2b54f392102 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 17:31:13 +0900 Subject: [PATCH 04/25] =?UTF-8?q?refactor:=20=ED=99=95=EC=A0=95=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=80=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReviewGroupController.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java index 7e2e86cbd..f2d5d598a 100644 --- a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java +++ b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java @@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.SessionAttribute; import reviewme.reviewgroup.service.ReviewGroupLookupService; import reviewme.reviewgroup.service.ReviewGroupService; import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; @@ -34,17 +33,25 @@ public ResponseEntity getReviewGroupSummary(@RequestParam S @PostMapping("/v2/groups") public ResponseEntity createReviewGroup( - @Valid @RequestBody ReviewGroupCreationRequest request, - // TODO: 회원 세션 임시 사용 방식, 이후 리졸버를 통해 객체로 받아와야 함 - @SessionAttribute(name = "member", required = false) Long memberId + @Valid @RequestBody ReviewGroupCreationRequest request + /* + TODO: 회원 세션 임시 사용 방식, 이후 리졸버를 통해 객체로 받아와야 함 + @Nullable Member member + */ ) { + /* + TODO: 회원 세션 유무에 따른 분기처리 로직 ReviewGroupCreationResponse response; - if (memberId != null) { - response = reviewGroupService.createReviewGroupForMember(request, memberId); + if (member != null) { + response = reviewGroupService.createReviewGroupForMember(request, member.getId()); } else { response = reviewGroupService.createReviewGroupForGuest(request); } return ResponseEntity.ok(response); + */ + + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); + return ResponseEntity.ok(response); } @PostMapping("/v2/groups/check") From 198b6cd69b995fc250679db7ad8c1ff546419b62 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 17:39:19 +0900 Subject: [PATCH 05/25] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?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 --- .../java/reviewme/api/ReviewGroupApiTest.java | 6 +- .../reviewme/fixture/ReviewGroupFixture.java | 4 +- .../reviewme/reviewgroup/ReviewGroupTest.java | 33 +++++++--- .../service/ReviewGroupLookupServiceTest.java | 4 +- .../service/ReviewGroupServiceTest.java | 61 ++++++++++++++++++- 5 files changed, 92 insertions(+), 16 deletions(-) diff --git a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java index 7de76c4b0..7488004c0 100644 --- a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java +++ b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java @@ -31,7 +31,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 비회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class))) + BDDMockito.given(reviewGroupService.createReviewGroupForGuest(any(ReviewGroupCreationRequest.class))) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); String request = """ @@ -68,7 +68,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class))) + BDDMockito.given(reviewGroupService.createReviewGroupForGuest(any(ReviewGroupCreationRequest.class))) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); CookieDescriptor[] cookieDescriptors = { @@ -110,7 +110,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 리뷰_요청_코드로_회원이_만든_리뷰_그룹_정보를_반환한다() { BDDMockito.given(reviewGroupLookupService.getReviewGroupSummary(anyString())) - .willReturn(new ReviewGroupResponse(1L,"아루", "리뷰미")); + .willReturn(new ReviewGroupResponse(1L, "아루", "리뷰미")); ParameterDescriptor[] parameterDescriptors = { parameterWithName("reviewRequestCode").description("리뷰 요청 코드") diff --git a/backend/src/test/java/reviewme/fixture/ReviewGroupFixture.java b/backend/src/test/java/reviewme/fixture/ReviewGroupFixture.java index d134bf3d0..08be28402 100644 --- a/backend/src/test/java/reviewme/fixture/ReviewGroupFixture.java +++ b/backend/src/test/java/reviewme/fixture/ReviewGroupFixture.java @@ -5,11 +5,11 @@ public class ReviewGroupFixture { public static ReviewGroup 리뷰_그룹(String reviewRequestCode, String groupAccessCode) { - return new ReviewGroup("revieweeName", "projectName", reviewRequestCode, groupAccessCode, 1L); + return new ReviewGroup(1L, "revieweeName", "projectName", reviewRequestCode, groupAccessCode); } public static ReviewGroup 템플릿_지정_리뷰_그룹(long templateId) { - return new ReviewGroup("reviewee", "project", "requestCode", "accessCode", templateId); + return new ReviewGroup(templateId, "reviewee", "project", "requestCode", "accessCode"); } public static ReviewGroup 리뷰_그룹() { diff --git a/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java b/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java index d67b5f849..7988a389e 100644 --- a/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java @@ -11,8 +11,9 @@ class ReviewGroupTest { @Test - void 정상_생성된다() { + void 회원id로_생성한다() { // given + long memberId = 1L; int maxLength = 50; int minLength = 1; String minLengthName = "*".repeat(minLength); @@ -20,9 +21,27 @@ class ReviewGroupTest { // when, then assertAll( - () -> assertThatCode(() -> new ReviewGroup(minLengthName, "project", "reviewCode", "groupCode", 1L)) + () -> assertThatCode(() -> new ReviewGroup(memberId, 1L, minLengthName, "project", "reviewCode")) .doesNotThrowAnyException(), - () -> assertThatCode(() -> new ReviewGroup(maxLengthName, "project", "reviewCode", "groupCode", 1L)) + () -> assertThatCode(() -> new ReviewGroup(memberId, 1L, maxLengthName, "project", "reviewCode")) + .doesNotThrowAnyException() + ); + } + + @Test + void 그룹액세스코드로_생성한다() { + // given + int maxLength = 50; + int minLength = 1; + String minLengthName = "*".repeat(minLength); + String maxLengthName = "*".repeat(maxLength); + String groupAccessCode = "groupAccessCode"; + + // when, then + assertAll( + () -> assertThatCode(() -> new ReviewGroup(1L, minLengthName, "project", "reviewCode", groupAccessCode)) + .doesNotThrowAnyException(), + () -> assertThatCode(() -> new ReviewGroup(1L, maxLengthName, "project", "reviewCode", groupAccessCode)) .doesNotThrowAnyException() ); } @@ -37,9 +56,9 @@ class ReviewGroupTest { // when, then assertAll( - () -> assertThatCode(() -> new ReviewGroup(insufficientName, "project", "reviewCode", "groupCode", 1L)) + () -> assertThatCode(() -> new ReviewGroup(1L, insufficientName, "project", "reviewCode", "groupCode")) .isInstanceOf(BadRequestException.class), - () -> assertThatThrownBy(() -> new ReviewGroup(exceedName, "project", "reviewCode", "groupCode", 1L)) + () -> assertThatThrownBy(() -> new ReviewGroup(1L, exceedName, "project", "reviewCode", "groupCode")) .isInstanceOf(BadRequestException.class) ); } @@ -54,9 +73,9 @@ class ReviewGroupTest { // when, then assertAll( - () -> assertThatThrownBy(() -> new ReviewGroup("reviwee", insufficientName, "reviewCode", "groupCode", 1L)) + () -> assertThatThrownBy(() -> new ReviewGroup(1L, "reviwee", insufficientName, "reviewCode", "groupCode")) .isInstanceOf(BadRequestException.class), - () -> assertThatThrownBy(() -> new ReviewGroup("reviwee", exceedName, "reviewCode", "groupCode", 1L)) + () -> assertThatThrownBy(() -> new ReviewGroup(1L, "reviwee", exceedName, "reviewCode", "groupCode")) .isInstanceOf(BadRequestException.class) ); } diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupLookupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupLookupServiceTest.java index 4c553a9a3..78e5f63ab 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupLookupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupLookupServiceTest.java @@ -25,11 +25,11 @@ class ReviewGroupLookupServiceTest { void 리뷰_요청_코드로_리뷰_그룹을_조회한다() { // given ReviewGroup reviewGroup = reviewGroupRepository.save(new ReviewGroup( + 1L, "ted", "review-me", "reviewRequestCode", - "groupAccessCode", - 1L + "groupAccessCode" )); // when diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index af46b2070..101128a80 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -48,7 +48,64 @@ class ReviewGroupServiceTest { private TemplateRepository templateRepository; @Test - void 코드가_중복되는_경우_다시_생성한다() { + void 회원의_리뷰_그룹을_생성한다() { + // given + Question question = 서술형_필수_질문(); + Section section = 항상_보이는_섹션(List.of(question)); + templateRepository.save(new Template(List.of(section))); + given(randomCodeGenerator.generate(anyInt())) + .willReturn("reviewRequestCode"); + + String revieweeName = "ted"; + String projectName = "reviewme"; + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, null); + long memberId = 1L; + + // when + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); + + // then + ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) + .orElseThrow(); + + assertAll( + () -> assertThat(expected.getReviewee()).isEqualTo(revieweeName), + () -> assertThat(expected.getProjectName()).isEqualTo(projectName), + () -> assertThat(expected.getGroupAccessCode()).isNull(), + () -> assertThat(expected.getMemberId()).isEqualTo(memberId) + ); + } + + @Test + void 비회원의_리뷰_그룹을_생성한다() { + // given + Question question = 서술형_필수_질문(); + Section section = 항상_보이는_섹션(List.of(question)); + templateRepository.save(new Template(List.of(section))); + given(randomCodeGenerator.generate(anyInt())) + .willReturn("reviewRequestCode"); + + String revieweeName = "ted"; + String projectName = "reviewme"; + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, "groupAccessCode"); + + // when + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); + + // then + ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) + .orElseThrow(); + + assertAll( + () -> assertThat(expected.getReviewee()).isEqualTo(revieweeName), + () -> assertThat(expected.getProjectName()).isEqualTo(projectName), + () -> assertThat(expected.getGroupAccessCode()).isNotNull(), + () -> assertThat(expected.getMemberId()).isNull() + ); + } + + @Test + void 리뷰_요청_코드가_중복되는_경우_다시_생성한다() { // given Question question = 서술형_필수_질문(); Section section = 항상_보이는_섹션(List.of(question)); @@ -62,7 +119,7 @@ class ReviewGroupServiceTest { ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); // when - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request); + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); // then assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); From 8adcc226bc1782914f3bd09553b7397e9c184bbd Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 11 Feb 2025 00:00:36 +0900 Subject: [PATCH 06/25] =?UTF-8?q?test:=20ReviewGroupServiceTest=20?= =?UTF-8?q?=EC=97=90=EC=84=9C=EB=A7=8C=20assertAll=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ReviewGroupServiceTest.java | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index 101128a80..3411ff798 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -2,7 +2,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.BDDMockito.given; @@ -68,12 +67,10 @@ class ReviewGroupServiceTest { ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) .orElseThrow(); - assertAll( - () -> assertThat(expected.getReviewee()).isEqualTo(revieweeName), - () -> assertThat(expected.getProjectName()).isEqualTo(projectName), - () -> assertThat(expected.getGroupAccessCode()).isNull(), - () -> assertThat(expected.getMemberId()).isEqualTo(memberId) - ); + assertThat(expected.getReviewee()).isEqualTo(revieweeName); + assertThat(expected.getProjectName()).isEqualTo(projectName); + assertThat(expected.getGroupAccessCode()).isNull(); + assertThat(expected.getMemberId()).isEqualTo(memberId); } @Test @@ -87,7 +84,8 @@ class ReviewGroupServiceTest { String revieweeName = "ted"; String projectName = "reviewme"; - ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, "groupAccessCode"); + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, + "groupAccessCode"); // when ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); @@ -95,13 +93,10 @@ class ReviewGroupServiceTest { // then ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) .orElseThrow(); - - assertAll( - () -> assertThat(expected.getReviewee()).isEqualTo(revieweeName), - () -> assertThat(expected.getProjectName()).isEqualTo(projectName), - () -> assertThat(expected.getGroupAccessCode()).isNotNull(), - () -> assertThat(expected.getMemberId()).isNull() - ); + assertThat(expected.getReviewee()).isEqualTo(revieweeName); + assertThat(expected.getProjectName()).isEqualTo(projectName); + assertThat(expected.getGroupAccessCode()).isNotNull(); + assertThat(expected.getMemberId()).isNull(); } @Test @@ -137,11 +132,9 @@ class ReviewGroupServiceTest { CheckValidAccessRequest wrongRequest = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode + "!"); // when - assertAll( - () -> assertDoesNotThrow(() -> reviewGroupService.checkGroupAccessCode(request)), - () -> assertThatThrownBy(() -> reviewGroupService.checkGroupAccessCode(wrongRequest)) - .isInstanceOf(ReviewGroupUnauthorizedException.class) - ); + assertDoesNotThrow(() -> reviewGroupService.checkGroupAccessCode(request)); + assertThatThrownBy(() -> reviewGroupService.checkGroupAccessCode(wrongRequest)) + .isInstanceOf(ReviewGroupUnauthorizedException.class); } @Test From f61f833e919459fd8d5d98229cc4e6980a60daad Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 11 Feb 2025 00:04:17 +0900 Subject: [PATCH 07/25] =?UTF-8?q?test:=20ReviewGroupServiceTest=20?= =?UTF-8?q?=EC=9E=90=EC=B2=B4=EB=A5=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ReviewGroupServiceTest.java | 324 +++++++++--------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index 3411ff798..5c075fe86 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -1,162 +1,162 @@ -package reviewme.reviewgroup.service; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.times; -import static reviewme.fixture.QuestionFixture.서술형_필수_질문; -import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; -import static reviewme.fixture.SectionFixture.항상_보이는_섹션; - -import java.util.List; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; -import reviewme.reviewgroup.domain.ReviewGroup; -import reviewme.reviewgroup.repository.ReviewGroupRepository; -import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; -import reviewme.reviewgroup.service.dto.ReviewGroupCreationRequest; -import reviewme.reviewgroup.service.dto.ReviewGroupCreationResponse; -import reviewme.reviewgroup.service.exception.ReviewGroupNotFoundByReviewRequestCodeException; -import reviewme.reviewgroup.service.exception.ReviewGroupUnauthorizedException; -import reviewme.support.ServiceTest; -import reviewme.template.domain.Question; -import reviewme.template.domain.Section; -import reviewme.template.domain.Template; -import reviewme.template.repository.TemplateRepository; - -@ServiceTest -@ExtendWith(MockitoExtension.class) -class ReviewGroupServiceTest { - - @MockBean - private RandomCodeGenerator randomCodeGenerator; - - @Autowired - private ReviewGroupService reviewGroupService; - - @Autowired - private ReviewGroupRepository reviewGroupRepository; - - @Autowired - private TemplateRepository templateRepository; - - @Test - void 회원의_리뷰_그룹을_생성한다() { - // given - Question question = 서술형_필수_질문(); - Section section = 항상_보이는_섹션(List.of(question)); - templateRepository.save(new Template(List.of(section))); - given(randomCodeGenerator.generate(anyInt())) - .willReturn("reviewRequestCode"); - - String revieweeName = "ted"; - String projectName = "reviewme"; - ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, null); - long memberId = 1L; - - // when - ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); - - // then - ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) - .orElseThrow(); - - assertThat(expected.getReviewee()).isEqualTo(revieweeName); - assertThat(expected.getProjectName()).isEqualTo(projectName); - assertThat(expected.getGroupAccessCode()).isNull(); - assertThat(expected.getMemberId()).isEqualTo(memberId); - } - - @Test - void 비회원의_리뷰_그룹을_생성한다() { - // given - Question question = 서술형_필수_질문(); - Section section = 항상_보이는_섹션(List.of(question)); - templateRepository.save(new Template(List.of(section))); - given(randomCodeGenerator.generate(anyInt())) - .willReturn("reviewRequestCode"); - - String revieweeName = "ted"; - String projectName = "reviewme"; - ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, - "groupAccessCode"); - - // when - ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); - - // then - ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) - .orElseThrow(); - assertThat(expected.getReviewee()).isEqualTo(revieweeName); - assertThat(expected.getProjectName()).isEqualTo(projectName); - assertThat(expected.getGroupAccessCode()).isNotNull(); - assertThat(expected.getMemberId()).isNull(); - } - - @Test - void 리뷰_요청_코드가_중복되는_경우_다시_생성한다() { - // given - Question question = 서술형_필수_질문(); - Section section = 항상_보이는_섹션(List.of(question)); - templateRepository.save(new Template(List.of(section))); - - reviewGroupRepository.save(리뷰_그룹("0000", "1111")); - given(randomCodeGenerator.generate(anyInt())) - .willReturn("0000") // ReviewRequestCode - .willReturn("AAAA"); - - ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); - - // when - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); - - // then - assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); - then(randomCodeGenerator).should(times(2)).generate(anyInt()); - } - - @Test - void 리뷰_요청_코드와_리뷰_확인_코드가_일치하는지_확인한다() { - // given - String reviewRequestCode = "reviewRequestCode"; - String groupAccessCode = "groupAccessCode"; - reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, groupAccessCode)); - - CheckValidAccessRequest request = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode); - CheckValidAccessRequest wrongRequest = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode + "!"); - - // when - assertDoesNotThrow(() -> reviewGroupService.checkGroupAccessCode(request)); - assertThatThrownBy(() -> reviewGroupService.checkGroupAccessCode(wrongRequest)) - .isInstanceOf(ReviewGroupUnauthorizedException.class); - } - - @Test - void 리뷰_요청_코드로_리뷰_그룹을_반환한다() { - // given - String reviewRequestCode = "reviewRequestCode"; - ReviewGroup savedReviewGroup = reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, "groupAccessCode")); - - // when - ReviewGroup actual = reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode); - - // then - assertThat(actual).isEqualTo(savedReviewGroup); - } - - @Test - void 리뷰_요청_코드로_리뷰_그룹을_찾을_수_없는_경우_예외가_발생한다() { - // given - String reviewRequestCode = "reviewRequestCode"; - - // when, then - assertThatThrownBy(() -> reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode)) - .isInstanceOf(ReviewGroupNotFoundByReviewRequestCodeException.class); - } -} +//package reviewme.reviewgroup.service; +// +//import static org.assertj.core.api.Assertions.assertThat; +//import static org.assertj.core.api.Assertions.assertThatThrownBy; +//import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +//import static org.mockito.ArgumentMatchers.anyInt; +//import static org.mockito.BDDMockito.given; +//import static org.mockito.BDDMockito.then; +//import static org.mockito.Mockito.times; +//import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +//import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; +//import static reviewme.fixture.SectionFixture.항상_보이는_섹션; +// +//import java.util.List; +//import org.junit.jupiter.api.Test; +//import org.junit.jupiter.api.extension.ExtendWith; +//import org.mockito.junit.jupiter.MockitoExtension; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.test.mock.mockito.MockBean; +//import reviewme.reviewgroup.domain.ReviewGroup; +//import reviewme.reviewgroup.repository.ReviewGroupRepository; +//import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; +//import reviewme.reviewgroup.service.dto.ReviewGroupCreationRequest; +//import reviewme.reviewgroup.service.dto.ReviewGroupCreationResponse; +//import reviewme.reviewgroup.service.exception.ReviewGroupNotFoundByReviewRequestCodeException; +//import reviewme.reviewgroup.service.exception.ReviewGroupUnauthorizedException; +//import reviewme.support.ServiceTest; +//import reviewme.template.domain.Question; +//import reviewme.template.domain.Section; +//import reviewme.template.domain.Template; +//import reviewme.template.repository.TemplateRepository; +// +//@ServiceTest +//@ExtendWith(MockitoExtension.class) +//class ReviewGroupServiceTest { +// +// @MockBean +// private RandomCodeGenerator randomCodeGenerator; +// +// @Autowired +// private ReviewGroupService reviewGroupService; +// +// @Autowired +// private ReviewGroupRepository reviewGroupRepository; +// +// @Autowired +// private TemplateRepository templateRepository; +// +// @Test +// void 회원의_리뷰_그룹을_생성한다() { +// // given +// Question question = 서술형_필수_질문(); +// Section section = 항상_보이는_섹션(List.of(question)); +// templateRepository.save(new Template(List.of(section))); +// given(randomCodeGenerator.generate(anyInt())) +// .willReturn("reviewRequestCode"); +// +// String revieweeName = "ted"; +// String projectName = "reviewme"; +// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, null); +// long memberId = 1L; +// +// // when +// ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); +// +// // then +// ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) +// .orElseThrow(); +// +// assertThat(expected.getReviewee()).isEqualTo(revieweeName); +// assertThat(expected.getProjectName()).isEqualTo(projectName); +// assertThat(expected.getGroupAccessCode()).isNull(); +// assertThat(expected.getMemberId()).isEqualTo(memberId); +// } +// +// @Test +// void 비회원의_리뷰_그룹을_생성한다() { +// // given +// Question question = 서술형_필수_질문(); +// Section section = 항상_보이는_섹션(List.of(question)); +// templateRepository.save(new Template(List.of(section))); +// given(randomCodeGenerator.generate(anyInt())) +// .willReturn("reviewRequestCode"); +// +// String revieweeName = "ted"; +// String projectName = "reviewme"; +// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, +// "groupAccessCode"); +// +// // when +// ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); +// +// // then +// ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) +// .orElseThrow(); +// assertThat(expected.getReviewee()).isEqualTo(revieweeName); +// assertThat(expected.getProjectName()).isEqualTo(projectName); +// assertThat(expected.getGroupAccessCode()).isNotNull(); +// assertThat(expected.getMemberId()).isNull(); +// } +// +// @Test +// void 리뷰_요청_코드가_중복되는_경우_다시_생성한다() { +// // given +// Question question = 서술형_필수_질문(); +// Section section = 항상_보이는_섹션(List.of(question)); +// templateRepository.save(new Template(List.of(section))); +// +// reviewGroupRepository.save(리뷰_그룹("0000", "1111")); +// given(randomCodeGenerator.generate(anyInt())) +// .willReturn("0000") // ReviewRequestCode +// .willReturn("AAAA"); +// +// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); +// +// // when +// ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); +// +// // then +// assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); +// then(randomCodeGenerator).should(times(2)).generate(anyInt()); +// } +// +// @Test +// void 리뷰_요청_코드와_리뷰_확인_코드가_일치하는지_확인한다() { +// // given +// String reviewRequestCode = "reviewRequestCode"; +// String groupAccessCode = "groupAccessCode"; +// reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, groupAccessCode)); +// +// CheckValidAccessRequest request = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode); +// CheckValidAccessRequest wrongRequest = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode + "!"); +// +// // when +// assertDoesNotThrow(() -> reviewGroupService.checkGroupAccessCode(request)); +// assertThatThrownBy(() -> reviewGroupService.checkGroupAccessCode(wrongRequest)) +// .isInstanceOf(ReviewGroupUnauthorizedException.class); +// } +// +// @Test +// void 리뷰_요청_코드로_리뷰_그룹을_반환한다() { +// // given +// String reviewRequestCode = "reviewRequestCode"; +// ReviewGroup savedReviewGroup = reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, "groupAccessCode")); +// +// // when +// ReviewGroup actual = reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode); +// +// // then +// assertThat(actual).isEqualTo(savedReviewGroup); +// } +// +// @Test +// void 리뷰_요청_코드로_리뷰_그룹을_찾을_수_없는_경우_예외가_발생한다() { +// // given +// String reviewRequestCode = "reviewRequestCode"; +// +// // when, then +// assertThatThrownBy(() -> reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode)) +// .isInstanceOf(ReviewGroupNotFoundByReviewRequestCodeException.class); +// } +//} From 31f1a83e2485f5c7d64feed5522a5c2882f170de Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 11 Feb 2025 00:10:44 +0900 Subject: [PATCH 08/25] =?UTF-8?q?test:=20ReviewGroupServiceTest=20?= =?UTF-8?q?=EB=A5=BC=20=EB=8C=80=EC=B6=A9=20=EB=B4=89=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ReviewGroupServiceTest.java | 305 ++++++++---------- 1 file changed, 143 insertions(+), 162 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index 5c075fe86..e4ea167be 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -1,162 +1,143 @@ -//package reviewme.reviewgroup.service; -// -//import static org.assertj.core.api.Assertions.assertThat; -//import static org.assertj.core.api.Assertions.assertThatThrownBy; -//import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -//import static org.mockito.ArgumentMatchers.anyInt; -//import static org.mockito.BDDMockito.given; -//import static org.mockito.BDDMockito.then; -//import static org.mockito.Mockito.times; -//import static reviewme.fixture.QuestionFixture.서술형_필수_질문; -//import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; -//import static reviewme.fixture.SectionFixture.항상_보이는_섹션; -// -//import java.util.List; -//import org.junit.jupiter.api.Test; -//import org.junit.jupiter.api.extension.ExtendWith; -//import org.mockito.junit.jupiter.MockitoExtension; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.boot.test.mock.mockito.MockBean; -//import reviewme.reviewgroup.domain.ReviewGroup; -//import reviewme.reviewgroup.repository.ReviewGroupRepository; -//import reviewme.reviewgroup.service.dto.CheckValidAccessRequest; -//import reviewme.reviewgroup.service.dto.ReviewGroupCreationRequest; -//import reviewme.reviewgroup.service.dto.ReviewGroupCreationResponse; -//import reviewme.reviewgroup.service.exception.ReviewGroupNotFoundByReviewRequestCodeException; -//import reviewme.reviewgroup.service.exception.ReviewGroupUnauthorizedException; -//import reviewme.support.ServiceTest; -//import reviewme.template.domain.Question; -//import reviewme.template.domain.Section; -//import reviewme.template.domain.Template; -//import reviewme.template.repository.TemplateRepository; -// -//@ServiceTest -//@ExtendWith(MockitoExtension.class) -//class ReviewGroupServiceTest { -// -// @MockBean -// private RandomCodeGenerator randomCodeGenerator; -// -// @Autowired -// private ReviewGroupService reviewGroupService; -// -// @Autowired -// private ReviewGroupRepository reviewGroupRepository; -// -// @Autowired -// private TemplateRepository templateRepository; -// -// @Test -// void 회원의_리뷰_그룹을_생성한다() { -// // given -// Question question = 서술형_필수_질문(); -// Section section = 항상_보이는_섹션(List.of(question)); -// templateRepository.save(new Template(List.of(section))); -// given(randomCodeGenerator.generate(anyInt())) -// .willReturn("reviewRequestCode"); -// -// String revieweeName = "ted"; -// String projectName = "reviewme"; -// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, null); -// long memberId = 1L; -// -// // when -// ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); -// -// // then -// ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) -// .orElseThrow(); -// -// assertThat(expected.getReviewee()).isEqualTo(revieweeName); -// assertThat(expected.getProjectName()).isEqualTo(projectName); -// assertThat(expected.getGroupAccessCode()).isNull(); -// assertThat(expected.getMemberId()).isEqualTo(memberId); -// } -// -// @Test -// void 비회원의_리뷰_그룹을_생성한다() { -// // given -// Question question = 서술형_필수_질문(); -// Section section = 항상_보이는_섹션(List.of(question)); -// templateRepository.save(new Template(List.of(section))); -// given(randomCodeGenerator.generate(anyInt())) -// .willReturn("reviewRequestCode"); -// -// String revieweeName = "ted"; -// String projectName = "reviewme"; -// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, -// "groupAccessCode"); -// -// // when -// ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); -// -// // then -// ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) -// .orElseThrow(); -// assertThat(expected.getReviewee()).isEqualTo(revieweeName); -// assertThat(expected.getProjectName()).isEqualTo(projectName); -// assertThat(expected.getGroupAccessCode()).isNotNull(); -// assertThat(expected.getMemberId()).isNull(); -// } -// -// @Test -// void 리뷰_요청_코드가_중복되는_경우_다시_생성한다() { -// // given -// Question question = 서술형_필수_질문(); -// Section section = 항상_보이는_섹션(List.of(question)); -// templateRepository.save(new Template(List.of(section))); -// -// reviewGroupRepository.save(리뷰_그룹("0000", "1111")); -// given(randomCodeGenerator.generate(anyInt())) -// .willReturn("0000") // ReviewRequestCode -// .willReturn("AAAA"); -// -// ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); -// -// // when -// ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); -// -// // then -// assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); -// then(randomCodeGenerator).should(times(2)).generate(anyInt()); -// } -// -// @Test -// void 리뷰_요청_코드와_리뷰_확인_코드가_일치하는지_확인한다() { -// // given -// String reviewRequestCode = "reviewRequestCode"; -// String groupAccessCode = "groupAccessCode"; -// reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, groupAccessCode)); -// -// CheckValidAccessRequest request = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode); -// CheckValidAccessRequest wrongRequest = new CheckValidAccessRequest(reviewRequestCode, groupAccessCode + "!"); -// -// // when -// assertDoesNotThrow(() -> reviewGroupService.checkGroupAccessCode(request)); -// assertThatThrownBy(() -> reviewGroupService.checkGroupAccessCode(wrongRequest)) -// .isInstanceOf(ReviewGroupUnauthorizedException.class); -// } -// -// @Test -// void 리뷰_요청_코드로_리뷰_그룹을_반환한다() { -// // given -// String reviewRequestCode = "reviewRequestCode"; -// ReviewGroup savedReviewGroup = reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, "groupAccessCode")); -// -// // when -// ReviewGroup actual = reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode); -// -// // then -// assertThat(actual).isEqualTo(savedReviewGroup); -// } -// -// @Test -// void 리뷰_요청_코드로_리뷰_그룹을_찾을_수_없는_경우_예외가_발생한다() { -// // given -// String reviewRequestCode = "reviewRequestCode"; -// -// // when, then -// assertThatThrownBy(() -> reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode)) -// .isInstanceOf(ReviewGroupNotFoundByReviewRequestCodeException.class); -// } -//} +package reviewme.reviewgroup.service; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.times; +import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; +import static reviewme.fixture.SectionFixture.항상_보이는_섹션; + +import java.util.List; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import reviewme.reviewgroup.domain.ReviewGroup; +import reviewme.reviewgroup.repository.ReviewGroupRepository; +import reviewme.reviewgroup.service.dto.ReviewGroupCreationRequest; +import reviewme.reviewgroup.service.dto.ReviewGroupCreationResponse; +import reviewme.reviewgroup.service.exception.ReviewGroupNotFoundByReviewRequestCodeException; +import reviewme.support.ServiceTest; +import reviewme.template.domain.Question; +import reviewme.template.domain.Section; +import reviewme.template.domain.Template; +import reviewme.template.repository.TemplateRepository; + +@ServiceTest +@ExtendWith(MockitoExtension.class) +class ReviewGroupServiceTest { + + @MockBean + private RandomCodeGenerator randomCodeGenerator; + + @Autowired + private ReviewGroupService reviewGroupService; + + @Autowired + private ReviewGroupRepository reviewGroupRepository; + + @Autowired + private TemplateRepository templateRepository; + + @Test + void 회원의_리뷰_그룹을_생성한다() { + // given + Question question = 서술형_필수_질문(); + Section section = 항상_보이는_섹션(List.of(question)); + templateRepository.save(new Template(List.of(section))); + given(randomCodeGenerator.generate(anyInt())) + .willReturn("reviewRequestCode"); + + String revieweeName = "ted"; + String projectName = "reviewme"; + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, null); + long memberId = 1L; + + // when + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); + + // then + ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) + .orElseThrow(); + + assertThat(expected.getReviewee()).isEqualTo(revieweeName); + assertThat(expected.getProjectName()).isEqualTo(projectName); + assertThat(expected.getGroupAccessCode()).isNull(); + assertThat(expected.getMemberId()).isEqualTo(memberId); + } + + @Test + void 비회원의_리뷰_그룹을_생성한다() { + // given + Question question = 서술형_필수_질문(); + Section section = 항상_보이는_섹션(List.of(question)); + templateRepository.save(new Template(List.of(section))); + given(randomCodeGenerator.generate(anyInt())) + .willReturn("reviewRequestCode"); + + String revieweeName = "ted"; + String projectName = "reviewme"; + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest(revieweeName, projectName, + "groupAccessCode"); + + // when + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); + + // then + ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) + .orElseThrow(); + assertThat(expected.getReviewee()).isEqualTo(revieweeName); + assertThat(expected.getProjectName()).isEqualTo(projectName); + assertThat(expected.getGroupAccessCode()).isNotNull(); + assertThat(expected.getMemberId()).isNull(); + } + + @Test + void 리뷰_요청_코드가_중복되는_경우_다시_생성한다() { + // given + Question question = 서술형_필수_질문(); + Section section = 항상_보이는_섹션(List.of(question)); + templateRepository.save(new Template(List.of(section))); + + reviewGroupRepository.save(리뷰_그룹("0000", "1111")); + given(randomCodeGenerator.generate(anyInt())) + .willReturn("0000") // ReviewRequestCode + .willReturn("AAAA"); + + ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); + + // when + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); + + // then + assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); + then(randomCodeGenerator).should(times(2)).generate(anyInt()); + } + + @Test + void 리뷰_요청_코드로_리뷰_그룹을_반환한다() { + // given + String reviewRequestCode = "reviewRequestCode"; + ReviewGroup savedReviewGroup = reviewGroupRepository.save(리뷰_그룹(reviewRequestCode, "groupAccessCode")); + + // when + ReviewGroup actual = reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode); + + // then + assertThat(actual).isEqualTo(savedReviewGroup); + } + + @Test + void 리뷰_요청_코드로_리뷰_그룹을_찾을_수_없는_경우_예외가_발생한다() { + // given + String reviewRequestCode = "reviewRequestCode"; + + // when, then + assertThatThrownBy(() -> reviewGroupService.getReviewGroupByReviewRequestCode(reviewRequestCode)) + .isInstanceOf(ReviewGroupNotFoundByReviewRequestCodeException.class); + } +} From b971d04259195fe4f7a05fc7f2d85688363ff59c Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 11 Feb 2025 00:13:56 +0900 Subject: [PATCH 09/25] =?UTF-8?q?test:=20assertAll=20=EB=8B=A4=EC=8B=9C=20?= =?UTF-8?q?=EB=84=A3=EC=96=B4=EB=B3=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reviewgroup/service/ReviewGroupServiceTest.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index e4ea167be..0e6ea8a69 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; @@ -64,10 +65,12 @@ class ReviewGroupServiceTest { ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) .orElseThrow(); - assertThat(expected.getReviewee()).isEqualTo(revieweeName); - assertThat(expected.getProjectName()).isEqualTo(projectName); - assertThat(expected.getGroupAccessCode()).isNull(); - assertThat(expected.getMemberId()).isEqualTo(memberId); + assertAll( + () -> assertThat(expected.getReviewee()).isEqualTo(revieweeName), + () -> assertThat(expected.getProjectName()).isEqualTo(projectName), + () -> assertThat(expected.getGroupAccessCode()).isNull(), + () -> assertThat(expected.getMemberId()).isEqualTo(memberId) + ); } @Test From 0f7e28c328294fd121aa8f45e7176590c51df48f Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 19:08:30 +0900 Subject: [PATCH 10/25] =?UTF-8?q?refactor:=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EA=B7=B8=EB=A3=B9=20=EC=84=9C=EB=B9=84=EC=8A=A4=EC=9D=98=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=B6=84=EB=A6=AC=EB=A5=BC=20?= =?UTF-8?q?=EB=8B=A4=EC=8B=9C=20=EB=B3=91=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReviewGroupController.java | 16 ++++----- .../service/ReviewGroupService.java | 36 +++++++------------ .../db/migration/V6__review_group.sql | 5 +++ .../java/reviewme/api/ReviewGroupApiTest.java | 5 +-- .../service/ReviewGroupServiceTest.java | 6 ++-- 5 files changed, 29 insertions(+), 39 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V6__review_group.sql diff --git a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java index 44ef71420..94bc3d93c 100644 --- a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java +++ b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java @@ -33,21 +33,17 @@ public ResponseEntity createReviewGroup( @Valid @RequestBody ReviewGroupCreationRequest request /* TODO: 회원 세션 임시 사용 방식, 이후 리졸버를 통해 객체로 받아와야 함 - @Nullable Member member + @Nullable @LoginMember Member member */ ) { /* TODO: 회원 세션 유무에 따른 분기처리 로직 - ReviewGroupCreationResponse response; - if (member != null) { - response = reviewGroupService.createReviewGroupForMember(request, member.getId()); - } else { - response = reviewGroupService.createReviewGroupForGuest(request); - } + Long memberId = Optional.ofNullable(member).map(Member::getId).orElse(null); + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, memberId); return ResponseEntity.ok(response); - */ - - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); + */ + long memberId = 1L; // 임시 + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, memberId); return ResponseEntity.ok(response); } diff --git a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java index c9bdb3f79..546a613a6 100644 --- a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java +++ b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java @@ -25,37 +25,25 @@ public class ReviewGroupService { private final TemplateRepository templateRepository; @Transactional - public ReviewGroupCreationResponse createReviewGroupForMember(ReviewGroupCreationRequest request, long memberId) { + public ReviewGroupCreationResponse createReviewGroup(ReviewGroupCreationRequest request, Long memberId) { String reviewRequestCode = generateReviewRequestCode(); Template template = templateRepository.findById(DEFAULT_TEMPLATE_ID) .orElseThrow(() -> new TemplateNotFoundException(DEFAULT_TEMPLATE_ID)); - ReviewGroup reviewGroup = reviewGroupRepository.save( - new ReviewGroup( - memberId, template.getId(), request.revieweeName(), request.projectName(), reviewRequestCode - ) - ); - return new ReviewGroupCreationResponse(reviewGroup.getReviewRequestCode()); - } - - @Transactional - public ReviewGroupCreationResponse createReviewGroupForGuest(ReviewGroupCreationRequest request) { - String reviewRequestCode = generateReviewRequestCode(); - - if (request.groupAccessCode() == null) { - throw new GroupAccessCodeNullException(); + ReviewGroup reviewGroup; + if (memberId != null) { + reviewGroup = new ReviewGroup(memberId, template.getId(), request.revieweeName(), request.projectName(), + reviewRequestCode); + } else { + if (request.groupAccessCode() == null) { + throw new GroupAccessCodeNullException(); + } + reviewGroup = new ReviewGroup(template.getId(), request.revieweeName(), request.projectName(), + reviewRequestCode, request.groupAccessCode()); } - Template template = templateRepository.findById(DEFAULT_TEMPLATE_ID) - .orElseThrow(() -> new TemplateNotFoundException(DEFAULT_TEMPLATE_ID)); - - ReviewGroup reviewGroup = reviewGroupRepository.save( - new ReviewGroup( - template.getId(), request.revieweeName(), request.projectName(), reviewRequestCode, - request.groupAccessCode() - ) - ); + reviewGroupRepository.save(reviewGroup); return new ReviewGroupCreationResponse(reviewGroup.getReviewRequestCode()); } diff --git a/backend/src/main/resources/db/migration/V6__review_group.sql b/backend/src/main/resources/db/migration/V6__review_group.sql new file mode 100644 index 000000000..ef1f4381d --- /dev/null +++ b/backend/src/main/resources/db/migration/V6__review_group.sql @@ -0,0 +1,5 @@ +-- 리뷰 그룹에 memberId를 추가합니다. +-- 리뷰 그룹의 group_access_code에 null을 허용합니다. + +ALTER TABLE review_group ADD COLUMN member_id NULL; +ALTER TABLE review_group MODIFY COLUMN group_access_code VARCHAR(255) NULL: diff --git a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java index 9f6313da4..8d2e38020 100644 --- a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java +++ b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java @@ -2,6 +2,7 @@ import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; @@ -30,7 +31,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 비회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroupForGuest(any(ReviewGroupCreationRequest.class))) + BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), anyLong())) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); String request = """ @@ -67,7 +68,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroupForGuest(any(ReviewGroupCreationRequest.class))) + BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), anyLong())) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); CookieDescriptor[] cookieDescriptors = { diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index 0e6ea8a69..b01b3109a 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -59,7 +59,7 @@ class ReviewGroupServiceTest { long memberId = 1L; // when - ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForMember(request, memberId); + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroup(request, memberId); // then ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) @@ -88,7 +88,7 @@ class ReviewGroupServiceTest { "groupAccessCode"); // when - ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroupForGuest(request); + ReviewGroupCreationResponse actual = reviewGroupService.createReviewGroup(request, null); // then ReviewGroup expected = reviewGroupRepository.findByReviewRequestCode(actual.reviewRequestCode()) @@ -114,7 +114,7 @@ class ReviewGroupServiceTest { ReviewGroupCreationRequest request = new ReviewGroupCreationRequest("sancho", "reviewme", "groupAccessCode"); // when - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroupForGuest(request); + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, null); // then assertThat(response).isEqualTo(new ReviewGroupCreationResponse("AAAA")); From b3e8c4e8c6336227ed4087a747e6278211a3e5e4 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 19:10:59 +0900 Subject: [PATCH 11/25] =?UTF-8?q?refactor:=20=EB=A6=AC=EB=B7=B0=EC=97=90?= =?UTF-8?q?=20=EC=9E=91=EC=84=B1=EC=9E=90id(memberId)=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/controller/ReviewController.java | 18 ++++++++++++++---- .../java/reviewme/review/domain/Review.java | 10 +++++++++- .../review/service/ReviewRegisterService.java | 4 ++-- .../review/service/mapper/ReviewMapper.java | 4 ++-- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/reviewme/review/controller/ReviewController.java b/backend/src/main/java/reviewme/review/controller/ReviewController.java index 0689e6fa0..692b902fd 100644 --- a/backend/src/main/java/reviewme/review/controller/ReviewController.java +++ b/backend/src/main/java/reviewme/review/controller/ReviewController.java @@ -18,9 +18,9 @@ import reviewme.review.service.dto.request.ReviewRegisterRequest; import reviewme.review.service.dto.response.detail.ReviewDetailResponse; import reviewme.review.service.dto.response.gathered.ReviewsGatheredBySectionResponse; +import reviewme.review.service.dto.response.list.AuthoredReviewsResponse; import reviewme.review.service.dto.response.list.ReceivedReviewPageResponse; import reviewme.review.service.dto.response.list.ReceivedReviewsSummaryResponse; -import reviewme.review.service.dto.response.list.AuthoredReviewsResponse; import reviewme.reviewgroup.controller.ReviewGroupSession; import reviewme.reviewgroup.domain.ReviewGroup; @@ -35,9 +35,19 @@ public class ReviewController { private final ReviewGatheredLookupService reviewGatheredLookupService; @PostMapping("/v2/reviews") - public ResponseEntity createReview(@Valid @RequestBody ReviewRegisterRequest request) { - // 회원 세션 추후 추가해야 함 - long savedReviewId = reviewRegisterService.registerReview(request); + public ResponseEntity createReview( + @Valid @RequestBody ReviewRegisterRequest request + /* + TODO: 회원 세션 임시 사용 방식, 이후 리졸버를 통해 객체로 받아와야 함 + @Nullable @LoginMember Member member + */ + ) { + /* + TODO: 회원 세션 유무에 따른 분기처리 로직 + Long memberId = Optional.ofNullable(member).map(Member::getId).orElse(null); + */ + long memberId = 1L; // 임시 + long savedReviewId = reviewRegisterService.registerReview(request, memberId); return ResponseEntity.created(URI.create("/reviews/" + savedReviewId)).build(); } diff --git a/backend/src/main/java/reviewme/review/domain/Review.java b/backend/src/main/java/reviewme/review/domain/Review.java index aa540e57b..eb33aac7e 100644 --- a/backend/src/main/java/reviewme/review/domain/Review.java +++ b/backend/src/main/java/reviewme/review/domain/Review.java @@ -31,6 +31,9 @@ public class Review { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @Column(name = "reviewer_id", nullable = true) + private Long reviewerId; + @Column(name = "template_id", nullable = false) private long templateId; @@ -44,13 +47,18 @@ public class Review { @Column(name = "created_at", nullable = false) private LocalDateTime createdAt; - public Review(long templateId, long reviewGroupId, List answers) { + public Review(Long reviewerId, long templateId, long reviewGroupId, List answers) { + this.reviewerId = reviewerId; this.templateId = templateId; this.reviewGroupId = reviewGroupId; this.answers = answers; this.createdAt = LocalDateTime.now(); } + public Review(long templateId, long reviewGroupId, List answers) { + this(null, templateId, reviewGroupId, answers); + } + public Set getAnsweredQuestionIds() { return answers.stream() .map(Answer::getQuestionId) diff --git a/backend/src/main/java/reviewme/review/service/ReviewRegisterService.java b/backend/src/main/java/reviewme/review/service/ReviewRegisterService.java index 87e5f8538..962f58e4d 100644 --- a/backend/src/main/java/reviewme/review/service/ReviewRegisterService.java +++ b/backend/src/main/java/reviewme/review/service/ReviewRegisterService.java @@ -18,8 +18,8 @@ public class ReviewRegisterService { private final ReviewRepository reviewRepository; @Transactional - public long registerReview(ReviewRegisterRequest request) { - Review review = reviewMapper.mapToReview(request); + public long registerReview(ReviewRegisterRequest request, Long memberId) { + Review review = reviewMapper.mapToReview(request, memberId); reviewValidator.validate(review); Review registeredReview = reviewRepository.save(review); diff --git a/backend/src/main/java/reviewme/review/service/mapper/ReviewMapper.java b/backend/src/main/java/reviewme/review/service/mapper/ReviewMapper.java index 0db3362ae..05c62e8b2 100644 --- a/backend/src/main/java/reviewme/review/service/mapper/ReviewMapper.java +++ b/backend/src/main/java/reviewme/review/service/mapper/ReviewMapper.java @@ -31,7 +31,7 @@ public class ReviewMapper { private final QuestionRepository questionRepository; private final TemplateRepository templateRepository; - public Review mapToReview(ReviewRegisterRequest request) { + public Review mapToReview(ReviewRegisterRequest request, Long memberId) { ReviewGroup reviewGroup = reviewGroupRepository.findByReviewRequestCode(request.reviewRequestCode()) .orElseThrow(() -> new ReviewGroupNotFoundByReviewRequestCodeException(request.reviewRequestCode())); Template template = templateRepository.findById(reviewGroup.getTemplateId()) @@ -40,7 +40,7 @@ public Review mapToReview(ReviewRegisterRequest request) { )); List answers = getAnswersByQuestionType(request); - return new Review(template.getId(), reviewGroup.getId(), answers); + return new Review(memberId, template.getId(), reviewGroup.getId(), answers); } private List getAnswersByQuestionType(ReviewRegisterRequest request) { From fbcb3b5c5f28a10cdfb231af8ef1c789074e484f Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 19:11:39 +0900 Subject: [PATCH 12/25] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/test/java/reviewme/api/ReviewApiTest.java | 6 +++--- .../review/service/ReviewRegisterServiceTest.java | 2 +- .../review/service/mapper/ReviewMapperTest.java | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/src/test/java/reviewme/api/ReviewApiTest.java b/backend/src/test/java/reviewme/api/ReviewApiTest.java index d6d5fd293..d9262de09 100644 --- a/backend/src/test/java/reviewme/api/ReviewApiTest.java +++ b/backend/src/test/java/reviewme/api/ReviewApiTest.java @@ -58,7 +58,7 @@ class ReviewApiTest extends ApiTest { @Test void 비회원이_리뷰를_등록한다() { - BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class))) + BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class), anyLong())) .willReturn(1L); FieldDescriptor[] requestFieldDescriptors = { @@ -85,7 +85,7 @@ class ReviewApiTest extends ApiTest { @Test void 회원이_리뷰를_등록한다() { - BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class))) + BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class), anyLong())) .willReturn(1L); CookieDescriptor[] cookieDescriptors = { @@ -118,7 +118,7 @@ class ReviewApiTest extends ApiTest { @Test void 리뷰_그룹_코드가_올바르지_않은_경우_예외가_발생한다() { - BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class))) + BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class), anyLong())) .willThrow(new ReviewGroupNotFoundByReviewRequestCodeException("ABCD1234")); FieldDescriptor[] requestFieldDescriptors = { diff --git a/backend/src/test/java/reviewme/review/service/ReviewRegisterServiceTest.java b/backend/src/test/java/reviewme/review/service/ReviewRegisterServiceTest.java index 7d65c2a17..bda34a714 100644 --- a/backend/src/test/java/reviewme/review/service/ReviewRegisterServiceTest.java +++ b/backend/src/test/java/reviewme/review/service/ReviewRegisterServiceTest.java @@ -85,7 +85,7 @@ class ReviewRegisterServiceTest { optionalTextQuestionAnswer)); // when - long registeredReviewId = reviewRegisterService.registerReview(reviewRegisterRequest); + long registeredReviewId = reviewRegisterService.registerReview(reviewRegisterRequest, null); // when, then Review review = reviewRepository.findById(registeredReviewId).orElseThrow(); diff --git a/backend/src/test/java/reviewme/review/service/mapper/ReviewMapperTest.java b/backend/src/test/java/reviewme/review/service/mapper/ReviewMapperTest.java index 4c28eafb3..bca35d393 100644 --- a/backend/src/test/java/reviewme/review/service/mapper/ReviewMapperTest.java +++ b/backend/src/test/java/reviewme/review/service/mapper/ReviewMapperTest.java @@ -57,7 +57,7 @@ class ReviewMapperTest { ); // when - Review review = reviewMapper.mapToReview(reviewRegisterRequest); + Review review = reviewMapper.mapToReview(reviewRegisterRequest, null); // then assertThat(review.getAnswersByType(TextAnswer.class)).hasSize(1); @@ -81,7 +81,7 @@ class ReviewMapperTest { ); // when - Review review = reviewMapper.mapToReview(reviewRegisterRequest); + Review review = reviewMapper.mapToReview(reviewRegisterRequest, null); // then assertThat(review.getAnswersByType(CheckboxAnswer.class)).hasSize(1); @@ -101,7 +101,7 @@ class ReviewMapperTest { ); // when - Review review = reviewMapper.mapToReview(reviewRegisterRequest); + Review review = reviewMapper.mapToReview(reviewRegisterRequest, null); // then assertThat(review.getAnswersByType(TextAnswer.class)) @@ -123,7 +123,7 @@ class ReviewMapperTest { ); // when - Review review = reviewMapper.mapToReview(reviewRegisterRequest); + Review review = reviewMapper.mapToReview(reviewRegisterRequest, null); // then assertThat(review.getAnswersByType(CheckboxAnswer.class)) @@ -144,7 +144,7 @@ class ReviewMapperTest { ); // when, then - assertThatThrownBy(() -> reviewMapper.mapToReview(reviewRegisterRequest)) + assertThatThrownBy(() -> reviewMapper.mapToReview(reviewRegisterRequest, null)) .isInstanceOf(ReviewGroupNotFoundByReviewRequestCodeException.class); } } From 8f9c2c3e2504f482973592ec6887d5b94fff3ee2 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 19:15:51 +0900 Subject: [PATCH 13/25] =?UTF-8?q?refactor:=20=EB=A6=AC=EB=B7=B0=EC=9D=98?= =?UTF-8?q?=20=ED=95=84=EB=93=9C=EB=AA=85=20=EB=B3=80=EA=B2=BD=20(reviewer?= =?UTF-8?q?Id=20->=20memberId)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/reviewme/review/domain/Review.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/reviewme/review/domain/Review.java b/backend/src/main/java/reviewme/review/domain/Review.java index eb33aac7e..cf828de88 100644 --- a/backend/src/main/java/reviewme/review/domain/Review.java +++ b/backend/src/main/java/reviewme/review/domain/Review.java @@ -31,8 +31,9 @@ public class Review { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name = "reviewer_id", nullable = true) - private Long reviewerId; + // 리뷰 작성자 id + @Column(name = "member_id", nullable = true) + private Long memberId; @Column(name = "template_id", nullable = false) private long templateId; @@ -47,8 +48,8 @@ public class Review { @Column(name = "created_at", nullable = false) private LocalDateTime createdAt; - public Review(Long reviewerId, long templateId, long reviewGroupId, List answers) { - this.reviewerId = reviewerId; + public Review(Long memberId, long templateId, long reviewGroupId, List answers) { + this.memberId = memberId; this.templateId = templateId; this.reviewGroupId = reviewGroupId; this.answers = answers; From 274627c2e7e5b0c4ecc40cf40e7e7b5dc9b73140 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Thu, 30 Jan 2025 19:18:26 +0900 Subject: [PATCH 14/25] =?UTF-8?q?flyway:=20DB=20=EC=8A=A4=ED=82=A4?= =?UTF-8?q?=EB=A7=88=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration/{V6__review_group.sql => V6__member_id_add.sql} | 3 +++ 1 file changed, 3 insertions(+) rename backend/src/main/resources/db/migration/{V6__review_group.sql => V6__member_id_add.sql} (73%) diff --git a/backend/src/main/resources/db/migration/V6__review_group.sql b/backend/src/main/resources/db/migration/V6__member_id_add.sql similarity index 73% rename from backend/src/main/resources/db/migration/V6__review_group.sql rename to backend/src/main/resources/db/migration/V6__member_id_add.sql index ef1f4381d..2bd647dd0 100644 --- a/backend/src/main/resources/db/migration/V6__review_group.sql +++ b/backend/src/main/resources/db/migration/V6__member_id_add.sql @@ -3,3 +3,6 @@ ALTER TABLE review_group ADD COLUMN member_id NULL; ALTER TABLE review_group MODIFY COLUMN group_access_code VARCHAR(255) NULL: + +-- 리뷰에 memberId를 추가합니다. +ALTER TABLE review ADD COLUMN member_id NULL; From 2ff16829d67e370fd9ab8edbab7b9655971aed5d Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 11:41:07 +0900 Subject: [PATCH 15/25] =?UTF-8?q?refactor:=20=EC=A0=91=EA=B7=BC=20?= =?UTF-8?q?=EC=A0=9C=EC=96=B4=EC=9E=90=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/reviewme/reviewgroup/service/ReviewGroupService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java index 546a613a6..4d2e29de7 100644 --- a/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java +++ b/backend/src/main/java/reviewme/reviewgroup/service/ReviewGroupService.java @@ -47,7 +47,7 @@ public ReviewGroupCreationResponse createReviewGroup(ReviewGroupCreationRequest return new ReviewGroupCreationResponse(reviewGroup.getReviewRequestCode()); } - public String generateReviewRequestCode() { + private String generateReviewRequestCode() { String reviewRequestCode; do { reviewRequestCode = randomCodeGenerator.generate(REVIEW_REQUEST_CODE_LENGTH); From 1a262870ef2927d2278645e1869b6fc60311f8e2 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 11:44:02 +0900 Subject: [PATCH 16/25] =?UTF-8?q?flyway:=20=EC=BB=AC=EB=9F=BC=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=ED=83=80=EC=9E=85=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/resources/db/migration/V6__member_id_add.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/main/resources/db/migration/V6__member_id_add.sql b/backend/src/main/resources/db/migration/V6__member_id_add.sql index 2bd647dd0..b36d88279 100644 --- a/backend/src/main/resources/db/migration/V6__member_id_add.sql +++ b/backend/src/main/resources/db/migration/V6__member_id_add.sql @@ -1,8 +1,8 @@ -- 리뷰 그룹에 memberId를 추가합니다. -- 리뷰 그룹의 group_access_code에 null을 허용합니다. -ALTER TABLE review_group ADD COLUMN member_id NULL; +ALTER TABLE review_group ADD COLUMN member_id BIGINT NULL; ALTER TABLE review_group MODIFY COLUMN group_access_code VARCHAR(255) NULL: -- 리뷰에 memberId를 추가합니다. -ALTER TABLE review ADD COLUMN member_id NULL; +ALTER TABLE review ADD COLUMN member_id BIGINT NULL; From 148fcfdf3cd98b16d4ab5fff7fa532076cf2dd5e Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 11:47:14 +0900 Subject: [PATCH 17/25] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/reviewme/reviewgroup/ReviewGroupTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java b/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java index 7988a389e..454f01125 100644 --- a/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/ReviewGroupTest.java @@ -11,7 +11,7 @@ class ReviewGroupTest { @Test - void 회원id로_생성한다() { + void 회원의_리뷰_그룹을_생성한다() { // given long memberId = 1L; int maxLength = 50; @@ -29,7 +29,7 @@ class ReviewGroupTest { } @Test - void 그룹액세스코드로_생성한다() { + void 비회원의_리뷰_그룹을_생성한다() { // given int maxLength = 50; int minLength = 1; From c049ee1eab1ed3f5babc6fbe829e339da07d6c3c Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 12:13:02 +0900 Subject: [PATCH 18/25] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=EB=A7=8C=20=EC=82=AC=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/reviewme/review/domain/Review.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/backend/src/main/java/reviewme/review/domain/Review.java b/backend/src/main/java/reviewme/review/domain/Review.java index cf828de88..32f7281fc 100644 --- a/backend/src/main/java/reviewme/review/domain/Review.java +++ b/backend/src/main/java/reviewme/review/domain/Review.java @@ -56,10 +56,6 @@ public Review(Long memberId, long templateId, long reviewGroupId, List a this.createdAt = LocalDateTime.now(); } - public Review(long templateId, long reviewGroupId, List answers) { - this(null, templateId, reviewGroupId, answers); - } - public Set getAnsweredQuestionIds() { return answers.stream() .map(Answer::getQuestionId) From b24e6f6139534a8e5ac78f27f35caee532419877 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 12:13:41 +0900 Subject: [PATCH 19/25] =?UTF-8?q?test:=20=ED=9A=8C=EC=9B=90=EA=B3=BC=20?= =?UTF-8?q?=EB=B9=84=ED=9A=8C=EC=9B=90=EC=9D=98=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20Fixture=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/reviewme/fixture/ReviewFixture.java | 16 +++++++++++ .../domain/HighlightedLinesTest.java | 8 +++--- .../repository/HighlightRepositoryTest.java | 6 ++-- .../service/HighlightServiceTest.java | 8 +++--- .../service/mapper/HighlightMapperTest.java | 4 +-- .../reviewme/review/domain/ReviewTest.java | 3 +- .../review/domain/abstraction/ReviewTest.java | 7 +++-- .../repository/AnswerRepositoryTest.java | 13 +++++---- .../repository/ReviewRepositoryTest.java | 15 +++++----- .../ReviewDetailLookupServiceTest.java | 11 ++++---- .../ReviewGatheredLookupServiceTest.java | 28 +++++++++---------- .../service/ReviewListLookupServiceTest.java | 11 ++++---- .../service/ReviewSummaryServiceTest.java | 9 +++--- .../mapper/ReviewGatherMapperTest.java | 4 +-- .../service/mapper/ReviewListMapperTest.java | 21 +++++++------- .../validator/AnswerValidatorTest.java | 5 ++-- .../validator/ReviewValidatorTest.java | 7 +++-- 17 files changed, 101 insertions(+), 75 deletions(-) create mode 100644 backend/src/test/java/reviewme/fixture/ReviewFixture.java diff --git a/backend/src/test/java/reviewme/fixture/ReviewFixture.java b/backend/src/test/java/reviewme/fixture/ReviewFixture.java new file mode 100644 index 000000000..a113ee5b8 --- /dev/null +++ b/backend/src/test/java/reviewme/fixture/ReviewFixture.java @@ -0,0 +1,16 @@ +package reviewme.fixture; + +import java.util.List; +import reviewme.review.domain.Answer; +import reviewme.review.domain.Review; + +public class ReviewFixture { + + public static Review 비회원_작성_리뷰(long templateId, long reviewGroupId, List answers) { + return new Review(null, templateId, reviewGroupId, answers); + } + + public static Review 회원_작성_리뷰(Long memberId, long templateId, long reviewGroupId, List answers) { + return new Review(memberId, templateId, reviewGroupId, answers); + } +} diff --git a/backend/src/test/java/reviewme/highlight/domain/HighlightedLinesTest.java b/backend/src/test/java/reviewme/highlight/domain/HighlightedLinesTest.java index d3e4a443c..f28081f9f 100644 --- a/backend/src/test/java/reviewme/highlight/domain/HighlightedLinesTest.java +++ b/backend/src/test/java/reviewme/highlight/domain/HighlightedLinesTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; import static org.junit.jupiter.api.Assertions.assertAll; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import java.util.List; import org.junit.jupiter.api.Test; @@ -10,7 +11,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import reviewme.highlight.domain.exception.InvalidHighlightLineIndexException; import reviewme.highlight.domain.exception.NegativeHighlightLineIndexException; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; @@ -24,7 +24,7 @@ class HighlightedLinesTest { void 답변_내용으로_하이라이트에_사용될_라인을_생성한다() { // given TextAnswer answer = new TextAnswer(1L, "123\n456\n789"); - reviewRepository.save(new Review(1L, 1L, List.of(answer))); + reviewRepository.save(비회원_작성_리뷰(1L, 1L, List.of(answer))); // when HighlightedLines highlightedLines = new HighlightedLines(answer.getContent()); @@ -41,7 +41,7 @@ class HighlightedLinesTest { void 특정_라인에_하이라이트_시작_종료_범위를_추가한다() { // given TextAnswer answer = new TextAnswer(1L, "123\n456\n78910"); - reviewRepository.save(new Review(1L, 1L, List.of(answer))); + reviewRepository.save(비회원_작성_리뷰(1L, 1L, List.of(answer))); HighlightedLines highlightedLines = new HighlightedLines(answer.getContent()); // when @@ -75,7 +75,7 @@ class HighlightedLinesTest { // given String content = "123\n456"; TextAnswer answer = new TextAnswer(1L, content); - reviewRepository.save(new Review(1L, 1L, List.of(answer))); + reviewRepository.save(비회원_작성_리뷰(1L, 1L, List.of(answer))); HighlightedLines highlightedLines = new HighlightedLines(answer.getContent()); int invalidLineIndex = (int) content.lines().count(); System.out.println(invalidLineIndex); diff --git a/backend/src/test/java/reviewme/highlight/repository/HighlightRepositoryTest.java b/backend/src/test/java/reviewme/highlight/repository/HighlightRepositoryTest.java index 528ccbfff..d877a594c 100644 --- a/backend/src/test/java/reviewme/highlight/repository/HighlightRepositoryTest.java +++ b/backend/src/test/java/reviewme/highlight/repository/HighlightRepositoryTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import java.util.ArrayList; @@ -12,7 +13,6 @@ import reviewme.highlight.domain.Highlight; import reviewme.highlight.domain.HighlightRange; import reviewme.review.domain.Answer; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; import reviewme.reviewgroup.domain.ReviewGroup; @@ -93,8 +93,8 @@ class HighlightRepositoryTest { new TextAnswer(2L, "B2"), new TextAnswer(3L, "B3") ); - reviewRepository.save(new Review(1L, reviewGroup1.getId(), answers1)); - reviewRepository.save(new Review(2L, reviewGroup2.getId(), answers2)); + reviewRepository.save(비회원_작성_리뷰(1L, reviewGroup1.getId(), answers1)); + reviewRepository.save(비회원_작성_리뷰(2L, reviewGroup2.getId(), answers2)); List answerIds = new ArrayList<>(); answerIds.addAll(answers1.stream().map(Answer::getId).toList()); diff --git a/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java b/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java index 0a3ff0c4e..790864779 100644 --- a/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java +++ b/backend/src/test/java/reviewme/highlight/service/HighlightServiceTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -16,7 +17,6 @@ import reviewme.highlight.service.dto.HighlightRequest; import reviewme.highlight.service.dto.HighlightedLineRequest; import reviewme.highlight.service.dto.HighlightsRequest; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; import reviewme.reviewgroup.domain.ReviewGroup; @@ -55,7 +55,7 @@ class HighlightServiceTest { TextAnswer textAnswer1 = new TextAnswer(question.getId(), "text answer1"); TextAnswer textAnswer2 = new TextAnswer(question.getId(), "text answer2"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(textAnswer1, textAnswer2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(textAnswer1, textAnswer2))); Highlight highlight = highlightRepository.save(new Highlight(textAnswer1.getId(), 1, new HighlightRange(1, 1))); HighlightIndexRangeRequest indexRangeRequest = new HighlightIndexRangeRequest(1, 1); @@ -79,7 +79,7 @@ class HighlightServiceTest { ReviewGroup reviewGroup = reviewGroupRepository.save(리뷰_그룹()); TextAnswer textAnswer = new TextAnswer(question.getId(), "text answer1"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(textAnswer))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(textAnswer))); highlightRepository.save(new Highlight(1, 1, new HighlightRange(1, 1))); int startIndex = 2; @@ -110,7 +110,7 @@ class HighlightServiceTest { ReviewGroup reviewGroup = reviewGroupRepository.save(리뷰_그룹()); TextAnswer textAnswer = new TextAnswer(question.getId(), "text answer1"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(textAnswer))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(textAnswer))); Highlight highlight = highlightRepository.save(new Highlight(textAnswer.getId(), 1, new HighlightRange(1, 1))); HighlightsRequest highlightsRequest = new HighlightsRequest(question.getId(), List.of()); diff --git a/backend/src/test/java/reviewme/highlight/service/mapper/HighlightMapperTest.java b/backend/src/test/java/reviewme/highlight/service/mapper/HighlightMapperTest.java index a8954cb1f..1b4abb693 100644 --- a/backend/src/test/java/reviewme/highlight/service/mapper/HighlightMapperTest.java +++ b/backend/src/test/java/reviewme/highlight/service/mapper/HighlightMapperTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -16,7 +17,6 @@ import reviewme.highlight.service.dto.HighlightRequest; import reviewme.highlight.service.dto.HighlightedLineRequest; import reviewme.highlight.service.dto.HighlightsRequest; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; import reviewme.reviewgroup.repository.ReviewGroupRepository; @@ -54,7 +54,7 @@ class HighlightMapperTest { TextAnswer textAnswer1 = new TextAnswer(question.getId(), "text answer1"); TextAnswer textAnswer2 = new TextAnswer(question.getId(), "text answer2"); - reviewRepository.save(new Review(template.getId(), reviewGroupId, List.of(textAnswer1, textAnswer2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroupId, List.of(textAnswer1, textAnswer2))); highlightRepository.save(new Highlight(1, 1, new HighlightRange(1, 1))); diff --git a/backend/src/test/java/reviewme/review/domain/ReviewTest.java b/backend/src/test/java/reviewme/review/domain/ReviewTest.java index 0793941a2..f7efae332 100644 --- a/backend/src/test/java/reviewme/review/domain/ReviewTest.java +++ b/backend/src/test/java/reviewme/review/domain/ReviewTest.java @@ -1,6 +1,7 @@ package reviewme.review.domain; import static org.assertj.core.api.Assertions.assertThat; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import java.util.List; import java.util.Set; @@ -13,7 +14,7 @@ class ReviewTest { // given TextAnswer textAnswer = new TextAnswer(1L, "답변"); CheckboxAnswer checkboxAnswer = new CheckboxAnswer(2L, List.of(1L)); - Review review = new Review(1L, 1L, List.of(textAnswer, checkboxAnswer)); + Review review = 비회원_작성_리뷰(1L, 1L, List.of(textAnswer, checkboxAnswer)); // when Set allQuestionIdsFromAnswers = review.getAnsweredQuestionIds(); diff --git a/backend/src/test/java/reviewme/review/domain/abstraction/ReviewTest.java b/backend/src/test/java/reviewme/review/domain/abstraction/ReviewTest.java index 47ead260f..963682c8c 100644 --- a/backend/src/test/java/reviewme/review/domain/abstraction/ReviewTest.java +++ b/backend/src/test/java/reviewme/review/domain/abstraction/ReviewTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import java.util.List; import java.util.Set; @@ -17,7 +18,7 @@ class ReviewTest { // given TextAnswer textAnswer = new TextAnswer(1L, "답변"); CheckboxAnswer checkboxAnswer = new CheckboxAnswer(2L, List.of(1L)); - Review review = new Review(1L, 1L, List.of(textAnswer, checkboxAnswer)); + Review review = 비회원_작성_리뷰(1L, 1L, List.of(textAnswer, checkboxAnswer)); // when Set allQuestionIdsFromAnswers = review.getAnsweredQuestionIds(); @@ -32,7 +33,7 @@ class ReviewTest { CheckboxAnswer checkboxAnswer1 = new CheckboxAnswer(1L, List.of(1L, 2L)); CheckboxAnswer checkboxAnswer2 = new CheckboxAnswer(1L, List.of(3L, 4L)); TextAnswer textAnswer = new TextAnswer(1L, "답변"); - Review review = new Review(1L, 1L, List.of(checkboxAnswer1, checkboxAnswer2, textAnswer)); + Review review = 비회원_작성_리뷰(1L, 1L, List.of(checkboxAnswer1, checkboxAnswer2, textAnswer)); // when List allQuestionIdsFromAnswers = review.getAnswersByType(CheckboxAnswer.class); @@ -49,7 +50,7 @@ class ReviewTest { TextAnswer textAnswer = new TextAnswer(textQuestionId, "답변"); CheckboxAnswer checkboxAnswer = new CheckboxAnswer(checkBoxQuestionId, List.of(1L)); - Review review = new Review(1L, 1L, List.of(textAnswer, checkboxAnswer)); + Review review = 비회원_작성_리뷰(1L, 1L, List.of(textAnswer, checkboxAnswer)); // when, then assertAll( diff --git a/backend/src/test/java/reviewme/review/repository/AnswerRepositoryTest.java b/backend/src/test/java/reviewme/review/repository/AnswerRepositoryTest.java index db0873650..a746e5216 100644 --- a/backend/src/test/java/reviewme/review/repository/AnswerRepositoryTest.java +++ b/backend/src/test/java/reviewme/review/repository/AnswerRepositoryTest.java @@ -1,6 +1,7 @@ package reviewme.review.repository; import static org.assertj.core.api.Assertions.assertThat; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import java.util.List; import java.util.Set; @@ -30,9 +31,9 @@ class AnswerRepositoryTest { TextAnswer answer2 = new TextAnswer(2L, "답2".repeat(20)); TextAnswer answer3 = new TextAnswer(2L, "답3".repeat(20)); TextAnswer answer4 = new TextAnswer(3L, "답4".repeat(20)); - reviewRepository.save(new Review(templateId, reviewGroupId, List.of(answer1))); - reviewRepository.save(new Review(templateId, reviewGroupId, List.of(answer2))); - reviewRepository.save(new Review(templateId, reviewGroupId, List.of(answer3))); + reviewRepository.save(비회원_작성_리뷰(templateId, reviewGroupId, List.of(answer1))); + reviewRepository.save(비회원_작성_리뷰(templateId, reviewGroupId, List.of(answer2))); + reviewRepository.save(비회원_작성_리뷰(templateId, reviewGroupId, List.of(answer3))); // when List actual = answerRepository.findReceivedAnswersByQuestionIds( @@ -49,7 +50,7 @@ class AnswerRepositoryTest { long reviewGroupId = 1L; TextAnswer answer1 = new TextAnswer(1L, "text answer1"); TextAnswer answer2 = new TextAnswer(1L, "text answer2"); - Review review = reviewRepository.save(new Review(1L, reviewGroupId, List.of(answer1, answer2))); + Review review = reviewRepository.save(비회원_작성_리뷰(1L, reviewGroupId, List.of(answer1, answer2))); // when Set actual = answerRepository.findIdsByReviewGroupId(reviewGroupId); @@ -67,8 +68,8 @@ class AnswerRepositoryTest { TextAnswer textAnswer1_Q2 = new TextAnswer(2L, "text answer1 by Q2"); reviewRepository.saveAll(List.of( - new Review(1L, reviewGroupId, List.of(textAnswer1_Q1, textAnswer2_Q1)), - new Review(1L, reviewGroupId, List.of(textAnswer1_Q2) + 비회원_작성_리뷰(1L, reviewGroupId, List.of(textAnswer1_Q1, textAnswer2_Q1)), + 비회원_작성_리뷰(1L, reviewGroupId, List.of(textAnswer1_Q2) ))); // when diff --git a/backend/src/test/java/reviewme/review/repository/ReviewRepositoryTest.java b/backend/src/test/java/reviewme/review/repository/ReviewRepositoryTest.java index 3a2786702..0c8428b57 100644 --- a/backend/src/test/java/reviewme/review/repository/ReviewRepositoryTest.java +++ b/backend/src/test/java/reviewme/review/repository/ReviewRepositoryTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -41,9 +42,9 @@ class ReviewRepositoryTest { ReviewGroup reviewGroup = reviewGroupRepository.save(리뷰_그룹()); Review review1 = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); Review review2 = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); // when List actual = reviewRepository.findAllByGroupId(reviewGroup.getId()); @@ -61,11 +62,11 @@ class FindByReviewGroupIdWithLimit { private final ReviewGroup reviewGroup = reviewGroupRepository.save(리뷰_그룹()); private final Review review1 = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); private final Review review2 = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); private final Review review3 = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); @Test void 페이징_크기보다_적은_수의_리뷰가_등록되었으면_그_크기만큼의_리뷰만_반환한다() { @@ -156,9 +157,9 @@ class ExistsOlderReviewInReviewGroup { ReviewGroup reviewGroup = reviewGroupRepository.save(리뷰_그룹()); Review firstReview = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); Review secondReview = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null)); + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null)); @Test void 주어진_리뷰가_가장_오래된_경우() { diff --git a/backend/src/test/java/reviewme/review/service/ReviewDetailLookupServiceTest.java b/backend/src/test/java/reviewme/review/service/ReviewDetailLookupServiceTest.java index 7e2054958..9dffc1c0d 100644 --- a/backend/src/test/java/reviewme/review/service/ReviewDetailLookupServiceTest.java +++ b/backend/src/test/java/reviewme/review/service/ReviewDetailLookupServiceTest.java @@ -7,6 +7,7 @@ import static reviewme.fixture.OptionItemFixture.선택지; import static reviewme.fixture.QuestionFixture.서술형_옵션_질문; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -56,8 +57,8 @@ class ReviewDetailLookupServiceTest { ReviewGroup reviewGroup1 = reviewGroupRepository.save(리뷰_그룹()); ReviewGroup reviewGroup2 = reviewGroupRepository.save(리뷰_그룹()); - Review review1 = reviewRepository.save(new Review(0, reviewGroup1.getId(), List.of())); - Review review2 = reviewRepository.save(new Review(0, reviewGroup2.getId(), List.of())); + Review review1 = reviewRepository.save(비회원_작성_리뷰(0, reviewGroup1.getId(), List.of())); + Review review2 = reviewRepository.save(비회원_작성_리뷰(0, reviewGroup2.getId(), List.of())); // when, then assertAll( @@ -91,7 +92,7 @@ class ReviewDetailLookupServiceTest { new CheckboxAnswer(question1.getId(), List.of(optionItem1.getId(), optionItem2.getId())) ); Review review = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), answers) + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), answers) ); // when @@ -117,7 +118,7 @@ class NotAnsweredOptionalQuestion { // given - 아무것도 응답하지 않은 리뷰 답변 저장 Review review = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), null) + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), null) ); // when @@ -143,7 +144,7 @@ class NotAnsweredOptionalQuestion { // given - 질문 하나에만 응답한 리뷰 답변 저장 TextAnswer textAnswer = new TextAnswer(question1.getId(), "답변".repeat(20)); Review review = reviewRepository.save( - new Review(template.getId(), reviewGroup.getId(), List.of(textAnswer)) + 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(textAnswer)) ); // when diff --git a/backend/src/test/java/reviewme/review/service/ReviewGatheredLookupServiceTest.java b/backend/src/test/java/reviewme/review/service/ReviewGatheredLookupServiceTest.java index ae89fc67c..6c3e8e479 100644 --- a/backend/src/test/java/reviewme/review/service/ReviewGatheredLookupServiceTest.java +++ b/backend/src/test/java/reviewme/review/service/ReviewGatheredLookupServiceTest.java @@ -5,6 +5,7 @@ import static reviewme.fixture.OptionGroupFixture.선택지_그룹; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; import static reviewme.fixture.QuestionFixture.선택형_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.ReviewGroupFixture.템플릿_지정_리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -16,7 +17,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import reviewme.review.domain.CheckboxAnswer; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; import reviewme.review.service.dto.response.gathered.ReviewsGatheredByQuestionResponse; @@ -75,8 +75,8 @@ class GatherAnswerByQuestionTest { TextAnswer answerAR2 = new TextAnswer(question2.getId(), "아루가 작성한 서술형 답변2"); TextAnswer answerTD1 = new TextAnswer(question1.getId(), "테드가 작성한 서술형 답변1"); TextAnswer answerTD2 = new TextAnswer(question2.getId(), "테드가 작성한 서술형 답변2"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerAR1, answerAR2))); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerTD1, answerTD2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerAR1, answerAR2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerTD1, answerTD2))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -106,8 +106,8 @@ class GatherAnswerByQuestionTest { TextAnswer answerAR2 = new TextAnswer(question2.getId(), "아루가 작성한 서술형 답변2"); TextAnswer answerTD1 = new TextAnswer(question1.getId(), "테드가 작성한 서술형 답변1"); TextAnswer answerTD2 = new TextAnswer(question2.getId(), "테드가 작성한 서술형 답변2"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerAR1, answerAR2))); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerTD1, answerTD2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerAR1, answerAR2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerTD1, answerTD2))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -132,8 +132,8 @@ class GatherAnswerByQuestionTest { TextAnswer answerSC1 = new TextAnswer(question1.getId(), "산초가 작성한 서술형 답변1"); TextAnswer answerSC2 = new TextAnswer(question2.getId(), "산초가 작성한 서술형 답변2"); TextAnswer answerAR = new TextAnswer(question1.getId(), "아루가 작성한 서술형 답변"); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerSC1, answerSC2))); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answerAR))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerSC1, answerSC2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answerAR))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -188,8 +188,8 @@ class GatherOptionAnswerByQuestionTest { CheckboxAnswer answer2 = new CheckboxAnswer( question1.getId(), List.of(optionItem1.getId(), optionItem2.getId()) ); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answer1))); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answer2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answer1))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answer2))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -217,8 +217,8 @@ class GatherOptionAnswerByQuestionTest { // given - 리뷰 답변 저장 CheckboxAnswer answer1 = new CheckboxAnswer(question1.getId(), List.of(optionItem1.getId())); CheckboxAnswer answer2 = new CheckboxAnswer(question1.getId(), List.of(optionItem1.getId())); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answer1))); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answer2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answer1))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answer2))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -249,7 +249,7 @@ class GatherOptionAnswerByQuestionTest { question2.getId(), optionItems.stream().map(OptionItem::getId).toList() // check all options ); - reviewRepository.save(new Review(template.getId(), reviewGroup.getId(), List.of(answer1, answer2))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(answer1, answer2))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( @@ -289,8 +289,8 @@ class GatherOptionAnswerByQuestionTest { // given - 리뷰 답변 저장 TextAnswer answerFE = new TextAnswer(question1.getId(), "프론트엔드가 작성한 서술형 답변"); TextAnswer answerBE = new TextAnswer(question1.getId(), "백엔드가 작성한 서술형 답변"); - reviewRepository.save(new Review(template.getId(), reviewGroupFE.getId(), List.of(answerFE))); - reviewRepository.save(new Review(template.getId(), reviewGroupBE.getId(), List.of(answerBE))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroupFE.getId(), List.of(answerFE))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroupBE.getId(), List.of(answerBE))); // when ReviewsGatheredBySectionResponse actual = reviewLookupService.getReceivedReviewsBySectionId( diff --git a/backend/src/test/java/reviewme/review/service/ReviewListLookupServiceTest.java b/backend/src/test/java/reviewme/review/service/ReviewListLookupServiceTest.java index 0d40839be..06582586f 100644 --- a/backend/src/test/java/reviewme/review/service/ReviewListLookupServiceTest.java +++ b/backend/src/test/java/reviewme/review/service/ReviewListLookupServiceTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import java.util.List; @@ -35,9 +36,9 @@ class ReviewListLookupServiceTest { // given - 리뷰 답변 저장 CheckboxAnswer categoryAnswer = new CheckboxAnswer(1L, List.of(1L)); - Review review1 = new Review(1L, reviewGroup.getId(), List.of(categoryAnswer)); + Review review1 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(categoryAnswer)); TextAnswer textAnswer = new TextAnswer(1L, "텍스트형 응답"); - Review review2 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review2 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); reviewRepository.saveAll(List.of(review1, review2)); // when @@ -60,9 +61,9 @@ class ReviewListLookupServiceTest { // given - 리뷰 답변 저장 TextAnswer textAnswer = new TextAnswer(1L, "텍스트형 응답"); - Review review1 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review2 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review3 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review1 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review2 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review3 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); reviewRepository.saveAll(List.of(review1, review2, review3)); // when diff --git a/backend/src/test/java/reviewme/review/service/ReviewSummaryServiceTest.java b/backend/src/test/java/reviewme/review/service/ReviewSummaryServiceTest.java index c7bbd1660..e9e2cbc86 100644 --- a/backend/src/test/java/reviewme/review/service/ReviewSummaryServiceTest.java +++ b/backend/src/test/java/reviewme/review/service/ReviewSummaryServiceTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -46,12 +47,12 @@ class ReviewSummaryServiceTest { ReviewGroup reviewGroup2 = reviewGroupRepository.save(리뷰_그룹()); List reviews = List.of( - new Review(template.getId(), reviewGroup1.getId(), List.of()), - new Review(template.getId(), reviewGroup1.getId(), List.of()), - new Review(template.getId(), reviewGroup1.getId(), List.of()) + 비회원_작성_리뷰(template.getId(), reviewGroup1.getId(), List.of()), + 비회원_작성_리뷰(template.getId(), reviewGroup1.getId(), List.of()), + 비회원_작성_리뷰(template.getId(), reviewGroup1.getId(), List.of()) ); reviewRepository.saveAll(reviews); - reviewRepository.save(new Review(template.getId(), reviewGroup2.getId(), List.of())); + reviewRepository.save(비회원_작성_리뷰(template.getId(), reviewGroup2.getId(), List.of())); // when ReceivedReviewsSummaryResponse actual = reviewSummaryService.getReviewSummary(reviewGroup1); diff --git a/backend/src/test/java/reviewme/review/service/mapper/ReviewGatherMapperTest.java b/backend/src/test/java/reviewme/review/service/mapper/ReviewGatherMapperTest.java index 1ce27dc25..449f53a8e 100644 --- a/backend/src/test/java/reviewme/review/service/mapper/ReviewGatherMapperTest.java +++ b/backend/src/test/java/reviewme/review/service/mapper/ReviewGatherMapperTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertAll; import static reviewme.fixture.QuestionFixture.서술형_옵션_질문; import static reviewme.fixture.QuestionFixture.선택형_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; import java.util.List; @@ -12,7 +13,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import reviewme.review.domain.CheckboxAnswer; -import reviewme.review.domain.Review; import reviewme.review.domain.TextAnswer; import reviewme.review.repository.ReviewRepository; import reviewme.review.service.dto.response.gathered.ReviewsGatheredByQuestionResponse; @@ -53,7 +53,7 @@ class ReviewGatherMapperTest { question2.getId(), optionItems.stream().map(OptionItem::getId).toList() // check all options ); - reviewRepository.save(new Review(template.getId(), 1L, List.of(textAnswer1, checkboxAnswer1))); + reviewRepository.save(비회원_작성_리뷰(template.getId(), 1L, List.of(textAnswer1, checkboxAnswer1))); // when ReviewsGatheredBySectionResponse actual = reviewGatherMapper.mapToReviewsGatheredBySection(Map.of( diff --git a/backend/src/test/java/reviewme/review/service/mapper/ReviewListMapperTest.java b/backend/src/test/java/reviewme/review/service/mapper/ReviewListMapperTest.java index 88820f3f2..ca0ee126e 100644 --- a/backend/src/test/java/reviewme/review/service/mapper/ReviewListMapperTest.java +++ b/backend/src/test/java/reviewme/review/service/mapper/ReviewListMapperTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertAll; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import java.util.List; @@ -34,16 +35,16 @@ class ReviewListMapperTest { // given - 리뷰 답변 저장 TextAnswer textAnswer = new TextAnswer(1L, "텍스트형 응답"); - Review review1 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review2 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review3 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review4 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review5 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review6 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review7 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review8 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review9 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); - Review review10 = new Review(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review1 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review2 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review3 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review4 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review5 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review6 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review7 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review8 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review9 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); + Review review10 = 비회원_작성_리뷰(1L, reviewGroup.getId(), List.of(textAnswer)); reviewRepository.saveAll( List.of(review1, review2, review3, review4, review5, review6, review7, review8, review9, review10)); diff --git a/backend/src/test/java/reviewme/review/service/validator/AnswerValidatorTest.java b/backend/src/test/java/reviewme/review/service/validator/AnswerValidatorTest.java index 16d528f0b..496eaf08f 100644 --- a/backend/src/test/java/reviewme/review/service/validator/AnswerValidatorTest.java +++ b/backend/src/test/java/reviewme/review/service/validator/AnswerValidatorTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -54,7 +55,7 @@ class AnswerValidatorTest { new TextAnswer(question1.getId(), "답변1"), new TextAnswer(question2.getId(), "답변2") ); - Review review = reviewRepository.save(new Review(1L, reviewGroup.getId(), answers)); + Review review = reviewRepository.save(비회원_작성_리뷰(1L, reviewGroup.getId(), answers)); Set answerIds = review.getAnsweredQuestionIds(); List firstAnswerId = List.of(answers.get(0).getId()); @@ -81,7 +82,7 @@ class AnswerValidatorTest { new TextAnswer(question1.getId(), "답변1"), new TextAnswer(question2.getId(), "답변2") ); - Review review = reviewRepository.save(new Review(1L, reviewGroup.getId(), answers)); + Review review = reviewRepository.save(비회원_작성_리뷰(1L, reviewGroup.getId(), answers)); List answerIds = review.getAnswers().stream().map(Answer::getQuestionId).toList(); List wrongAnswerIds = new ArrayList<>(answerIds); diff --git a/backend/src/test/java/reviewme/review/service/validator/ReviewValidatorTest.java b/backend/src/test/java/reviewme/review/service/validator/ReviewValidatorTest.java index df0e6ac72..71232b2f1 100644 --- a/backend/src/test/java/reviewme/review/service/validator/ReviewValidatorTest.java +++ b/backend/src/test/java/reviewme/review/service/validator/ReviewValidatorTest.java @@ -6,6 +6,7 @@ import static reviewme.fixture.OptionItemFixture.선택지; import static reviewme.fixture.QuestionFixture.서술형_옵션_질문; import static reviewme.fixture.QuestionFixture.서술형_필수_질문; +import static reviewme.fixture.ReviewFixture.비회원_작성_리뷰; import static reviewme.fixture.ReviewGroupFixture.리뷰_그룹; import static reviewme.fixture.SectionFixture.조건부로_보이는_섹션; import static reviewme.fixture.SectionFixture.항상_보이는_섹션; @@ -85,7 +86,7 @@ class ReviewValidatorTest { List.of(conditionalOptionItem.getId())); // 리뷰 생성 - Review review = new Review(template.getId(), reviewGroup.getId(), + Review review = 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(notRequiredTextAnswer, conditionalTextAnswer1, alwaysRequiredCheckAnswer, conditionalCheckAnswer1)); @@ -110,7 +111,7 @@ class ReviewValidatorTest { templateRepository.save(new Template(List.of(section2))); TextAnswer textAnswer = new TextAnswer(question2.getId(), "답변".repeat(20)); - Review review = new Review(template.getId(), reviewGroup.getId(), List.of(textAnswer)); + Review review = 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(textAnswer)); // when, then assertThatThrownBy(() -> reviewValidator.validate(review)) @@ -128,7 +129,7 @@ class ReviewValidatorTest { Template template = templateRepository.save(new Template(List.of(section))); TextAnswer optionalTextAnswer = new TextAnswer(optionalQuestion.getId(), "답변".repeat(20)); - Review review = new Review(template.getId(), reviewGroup.getId(), List.of(optionalTextAnswer)); + Review review = 비회원_작성_리뷰(template.getId(), reviewGroup.getId(), List.of(optionalTextAnswer)); // when, then assertThatThrownBy(() -> reviewValidator.validate(review)) From f3c666b88f569325f6ccf54bca8dffaa0d0661c8 Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 12:37:22 +0900 Subject: [PATCH 20/25] =?UTF-8?q?refactor:=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=EC=9D=98=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=84=EC=8B=9C=20id=EA=B0=80=20=EC=95=84?= =?UTF-8?q?=EB=8B=8C=20null=EC=9D=84=20=EC=A0=84=EB=8B=AC=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/reviewme/review/controller/ReviewController.java | 3 +-- .../reviewme/reviewgroup/controller/ReviewGroupController.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/reviewme/review/controller/ReviewController.java b/backend/src/main/java/reviewme/review/controller/ReviewController.java index 692b902fd..96b3f5db1 100644 --- a/backend/src/main/java/reviewme/review/controller/ReviewController.java +++ b/backend/src/main/java/reviewme/review/controller/ReviewController.java @@ -46,8 +46,7 @@ public ResponseEntity createReview( TODO: 회원 세션 유무에 따른 분기처리 로직 Long memberId = Optional.ofNullable(member).map(Member::getId).orElse(null); */ - long memberId = 1L; // 임시 - long savedReviewId = reviewRegisterService.registerReview(request, memberId); + long savedReviewId = reviewRegisterService.registerReview(request, null); return ResponseEntity.created(URI.create("/reviews/" + savedReviewId)).build(); } diff --git a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java index 94bc3d93c..7df9a5360 100644 --- a/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java +++ b/backend/src/main/java/reviewme/reviewgroup/controller/ReviewGroupController.java @@ -42,8 +42,7 @@ public ResponseEntity createReviewGroup( ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, memberId); return ResponseEntity.ok(response); */ - long memberId = 1L; // 임시 - ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, memberId); + ReviewGroupCreationResponse response = reviewGroupService.createReviewGroup(request, null); return ResponseEntity.ok(response); } From 2ff61f3148b205257ce22b46fbe41a3ce086fbbf Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 12:41:05 +0900 Subject: [PATCH 21/25] =?UTF-8?q?refactor:=20Review=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=EC=97=90=20@Nullable=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/reviewme/review/domain/Review.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/reviewme/review/domain/Review.java b/backend/src/main/java/reviewme/review/domain/Review.java index 32f7281fc..71c7a62af 100644 --- a/backend/src/main/java/reviewme/review/domain/Review.java +++ b/backend/src/main/java/reviewme/review/domain/Review.java @@ -19,6 +19,7 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; +import org.springframework.lang.Nullable; @Entity @Table(name = "new_review") @@ -48,7 +49,7 @@ public class Review { @Column(name = "created_at", nullable = false) private LocalDateTime createdAt; - public Review(Long memberId, long templateId, long reviewGroupId, List answers) { + public Review(@Nullable Long memberId, long templateId, long reviewGroupId, List answers) { this.memberId = memberId; this.templateId = templateId; this.reviewGroupId = reviewGroupId; From d2284c48581401b33f87fa5ef64b881e699c434b Mon Sep 17 00:00:00 2001 From: KIMGYUTAE Date: Mon, 10 Feb 2025 13:21:04 +0900 Subject: [PATCH 22/25] =?UTF-8?q?test:=20api=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=AA=A8=ED=82=B9=20=EC=84=9C=EB=B9=84?= =?UTF-8?q?=EC=8A=A4=20=EC=9D=B8=EC=9E=90=20=EC=A0=84=EB=8B=AC=20nullable?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/test/java/reviewme/api/ReviewApiTest.java | 3 ++- backend/src/test/java/reviewme/api/ReviewGroupApiTest.java | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/test/java/reviewme/api/ReviewApiTest.java b/backend/src/test/java/reviewme/api/ReviewApiTest.java index d9262de09..9cc6f3227 100644 --- a/backend/src/test/java/reviewme/api/ReviewApiTest.java +++ b/backend/src/test/java/reviewme/api/ReviewApiTest.java @@ -3,6 +3,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.nullable; import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -118,7 +119,7 @@ class ReviewApiTest extends ApiTest { @Test void 리뷰_그룹_코드가_올바르지_않은_경우_예외가_발생한다() { - BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class), anyLong())) + BDDMockito.given(reviewRegisterService.registerReview(any(ReviewRegisterRequest.class), nullable(Long.class))) .willThrow(new ReviewGroupNotFoundByReviewRequestCodeException("ABCD1234")); FieldDescriptor[] requestFieldDescriptors = { diff --git a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java index 8d2e38020..763fc13b3 100644 --- a/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java +++ b/backend/src/test/java/reviewme/api/ReviewGroupApiTest.java @@ -2,8 +2,8 @@ import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.nullable; import static org.springframework.restdocs.cookies.CookieDocumentation.cookieWithName; import static org.springframework.restdocs.cookies.CookieDocumentation.requestCookies; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; @@ -31,7 +31,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 비회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), anyLong())) + BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), nullable(Long.class))) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); String request = """ @@ -68,7 +68,7 @@ class ReviewGroupApiTest extends ApiTest { @Test void 회원용_리뷰_그룹을_생성한다() { - BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), anyLong())) + BDDMockito.given(reviewGroupService.createReviewGroup(any(ReviewGroupCreationRequest.class), nullable(Long.class))) .willReturn(new ReviewGroupCreationResponse("ABCD1234")); CookieDescriptor[] cookieDescriptors = { From e839a4939ef66ce472350bb7b3c4c6f0a5f58b01 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Mon, 10 Feb 2025 23:02:45 +0900 Subject: [PATCH 23/25] =?UTF-8?q?chore:=20sql=20=EB=AC=B8=EB=B2=95=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/resources/db/migration/V6__member_id_add.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/resources/db/migration/V6__member_id_add.sql b/backend/src/main/resources/db/migration/V6__member_id_add.sql index b36d88279..15f717020 100644 --- a/backend/src/main/resources/db/migration/V6__member_id_add.sql +++ b/backend/src/main/resources/db/migration/V6__member_id_add.sql @@ -2,7 +2,7 @@ -- 리뷰 그룹의 group_access_code에 null을 허용합니다. ALTER TABLE review_group ADD COLUMN member_id BIGINT NULL; -ALTER TABLE review_group MODIFY COLUMN group_access_code VARCHAR(255) NULL: +ALTER TABLE review_group MODIFY COLUMN group_access_code VARCHAR(255) NULL; -- 리뷰에 memberId를 추가합니다. ALTER TABLE review ADD COLUMN member_id BIGINT NULL; From 45811097afb63a7e21bd25c665f0a39424b89555 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Mon, 10 Feb 2025 23:27:28 +0900 Subject: [PATCH 24/25] =?UTF-8?q?chore:=20mockito=20extension=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reviewme/reviewgroup/service/ReviewGroupServiceTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java index b01b3109a..ab8252004 100644 --- a/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java +++ b/backend/src/test/java/reviewme/reviewgroup/service/ReviewGroupServiceTest.java @@ -13,8 +13,6 @@ import java.util.List; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.MockBean; import reviewme.reviewgroup.domain.ReviewGroup; @@ -29,7 +27,6 @@ import reviewme.template.repository.TemplateRepository; @ServiceTest -@ExtendWith(MockitoExtension.class) class ReviewGroupServiceTest { @MockBean From 7dc30c63945e4ef9d57d52ed26354c0f3e46f023 Mon Sep 17 00:00:00 2001 From: nayonsoso Date: Tue, 11 Feb 2025 00:34:18 +0900 Subject: [PATCH 25/25] =?UTF-8?q?refactor:=20nullable=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/reviewme/reviewgroup/domain/ReviewGroup.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java index b831006be..a6abbc297 100644 --- a/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java +++ b/backend/src/main/java/reviewme/reviewgroup/domain/ReviewGroup.java @@ -1,5 +1,6 @@ package reviewme.reviewgroup.domain; +import jakarta.annotation.Nullable; import jakarta.persistence.Column; import jakarta.persistence.Embedded; import jakarta.persistence.Entity; @@ -49,8 +50,8 @@ public class ReviewGroup { private GroupAccessCode groupAccessCode; - private ReviewGroup(Long memberId, long templateId, String reviewee, String projectName, String reviewRequestCode, - String groupAccessCode) { + private ReviewGroup(@Nullable Long memberId, long templateId, String reviewee, String projectName, + String reviewRequestCode, String groupAccessCode) { validateRevieweeLength(reviewee); validateProjectNameLength(projectName); this.memberId = memberId;