From 009f49d8283d0fbdfc7866aea5d31378008ad411 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Fri, 19 Jul 2024 09:43:56 +0900 Subject: [PATCH 01/23] =?UTF-8?q?feat:=20RoomQuestion=EC=97=90=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EC=9D=BC=EC=9E=90=20=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ddangkong/domain/AuditingEntity.java | 19 +++++++++++++++++++ .../ddangkong/domain/room/RoomQuestion.java | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/ddangkong/domain/AuditingEntity.java diff --git a/backend/src/main/java/ddangkong/domain/AuditingEntity.java b/backend/src/main/java/ddangkong/domain/AuditingEntity.java new file mode 100644 index 000000000..7d1bdc567 --- /dev/null +++ b/backend/src/main/java/ddangkong/domain/AuditingEntity.java @@ -0,0 +1,19 @@ +package ddangkong.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import java.time.LocalDateTime; +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +@Getter +public class AuditingEntity { + + @CreatedDate + @Column(updatable = false, nullable = false) + private LocalDateTime createdAt; +} diff --git a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java index 5972d879a..7315b3495 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java +++ b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java @@ -1,5 +1,6 @@ package ddangkong.domain.room; +import ddangkong.domain.AuditingEntity; import ddangkong.domain.question.BalanceQuestion; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -19,7 +20,7 @@ @Getter @EqualsAndHashCode @ToString -public class RoomQuestion { +public class RoomQuestion extends AuditingEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) From 5d970fb14f684ba226f3904ae99161739e7a975e Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Fri, 19 Jul 2024 09:45:51 +0900 Subject: [PATCH 02/23] =?UTF-8?q?feat:=20RoomQuestion,=20BalanceOption?= =?UTF-8?q?=EC=9D=98=20Repository=20=EA=B5=AC=ED=98=84=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 서비스 계층 구현시 사용할 레포지토리 구현 --- .../option/BalanceOptionRepository.java | 13 +++++++ .../room/RoomQuestionRepository.java | 12 +++++++ .../room/RoomQuestionRepositoryTest.java | 26 ++++++++++++++ backend/src/test/resources/init-test.sql | 36 +++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java create mode 100644 backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java create mode 100644 backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java create mode 100644 backend/src/test/resources/init-test.sql diff --git a/backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java b/backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java new file mode 100644 index 000000000..ad9462d68 --- /dev/null +++ b/backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java @@ -0,0 +1,13 @@ +package ddangkong.repository.option; + +import ddangkong.domain.option.BalanceOption; +import ddangkong.domain.question.BalanceQuestion; +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface BalanceOptionRepository extends JpaRepository { + + List findByBalanceQuestion(BalanceQuestion balanceQuestion); +} diff --git a/backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java b/backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java new file mode 100644 index 000000000..7d73f2b95 --- /dev/null +++ b/backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java @@ -0,0 +1,12 @@ +package ddangkong.repository.room; + +import ddangkong.domain.room.RoomQuestion; +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface RoomQuestionRepository extends JpaRepository { + + Optional findTopByRoomIdOrderByCreatedAtDesc(Long roomId); +} diff --git a/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java b/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java new file mode 100644 index 000000000..8b16d17d4 --- /dev/null +++ b/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java @@ -0,0 +1,26 @@ +package ddangkong.repository.room; + +import static org.assertj.core.api.Assertions.assertThat; + +import ddangkong.domain.room.RoomQuestion; +import ddangkong.repository.BaseRepositoryTest; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +class RoomQuestionRepositoryTest extends BaseRepositoryTest { + + @Autowired + private RoomQuestionRepository roomQuestionRepository; + + @Nested + class 방의_최신_질문_조회 { + + @Test + void 방의_가장_최신의_질문을_조회할_수_있다() { + RoomQuestion actual = roomQuestionRepository.findTopByRoomIdOrderByCreatedAtDesc(1L).get(); + + assertThat(actual.getId()).isEqualTo(1L); + } + } +} diff --git a/backend/src/test/resources/init-test.sql b/backend/src/test/resources/init-test.sql new file mode 100644 index 000000000..e9477e90c --- /dev/null +++ b/backend/src/test/resources/init-test.sql @@ -0,0 +1,36 @@ +SET REFERENTIAL_INTEGRITY FALSE; + +TRUNCATE TABLE member; +TRUNCATE TABLE balance_option; +TRUNCATE TABLE balance_question; +TRUNCATE TABLE balance_vote; +TRUNCATE TABLE room; +TRUNCATE TABLE room_question; + +ALTER TABLE member ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE balance_option ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE balance_question ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE balance_vote ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE room ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE room_question ALTER COLUMN ID RESTART WITH 1; + +INSERT INTO room() VALUES (); + +INSERT INTO member(nickname, room_id) VALUES ('mohamedeu al katan', 1); +INSERT INTO member(nickname, room_id) VALUES ('deundeun ', 1); +INSERT INTO member(nickname, room_id) VALUES ('rupi', 1); +INSERT INTO member(nickname, room_id) VALUES ('rapper lee', 1); + +INSERT INTO room_question(room_id, balance_question_id, created_at) VALUES (1, 1, '2024-07-18 20:00:00.000'); + +INSERT INTO balance_question(category, content) VALUES ('EXAMPLE', '똥 맛 카레 vs 카레 맛 똥'); + +INSERT INTO balance_option(content, balance_question_id) VALUES ('똥 맛 카레', 1); +INSERT INTO balance_option(content, balance_question_id) VALUES ('카레 맛 똥', 1); + +INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 1); +INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 2); +INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 3); +INSERT INTO balance_vote(balance_option_id, member_id) VALUES (2, 4); + +SET REFERENTIAL_INTEGRITY TRUE; From c4ae03ec3801b7b0351126a9f69f95734c0fcb0c Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Fri, 19 Jul 2024 09:50:56 +0900 Subject: [PATCH 03/23] =?UTF-8?q?feat:=20=EB=B0=A9=20=EC=A7=88=EB=AC=B8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=EC=84=9C=EB=B2=84=EC=8A=A4=20=EA=B3=84?= =?UTF-8?q?=EC=B8=B5=20=EA=B5=AC=ED=98=84=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/BusinessLogicException.java | 8 +++ .../exception/GlobalExceptionHandler.java | 20 ++++++- .../exception/ViolateDataException.java | 8 +++ .../question/BalanceQuestionService.java | 54 +++++++++++++++++++ .../repository/BaseRepositoryTest.java | 9 ++++ .../ddangkong/service/BaseServiceTest.java | 11 ++++ .../question/BalanceQuestionServiceTest.java | 44 +++++++++++++++ 7 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java create mode 100644 backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java create mode 100644 backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java create mode 100644 backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java create mode 100644 backend/src/test/java/ddangkong/service/BaseServiceTest.java create mode 100644 backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java diff --git a/backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java b/backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java new file mode 100644 index 000000000..85ef4f8d0 --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java @@ -0,0 +1,8 @@ +package ddangkong.controller.exception; + +public class BusinessLogicException extends RuntimeException { + + public BusinessLogicException(String message) { + super(message); + } +} diff --git a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java index 0d2c4df6b..3a084fcf6 100644 --- a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java +++ b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java @@ -12,6 +12,8 @@ @Slf4j public class GlobalExceptionHandler { + private static final String SERVER_ERROR_MESSAGE = "서버 오류가 발생했습니다. 관리자에게 문의하세요."; + @ExceptionHandler public ErrorResponse handleBindingException(BindException e) { log.warn(e.getMessage()); @@ -26,11 +28,27 @@ public ErrorResponse handleConstraintViolationException(ConstraintViolationExcep return new ErrorResponse(e.getConstraintViolations()); } + @ExceptionHandler + @ResponseStatus(HttpStatus.BAD_REQUEST) + public ErrorResponse handleBusinessLogicException(BusinessLogicException e) { + log.warn(e.getMessage()); + + return new ErrorResponse(e.getMessage()); + } + + @ExceptionHandler + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + public ErrorResponse handleViolateDataException(ViolateDataException e) { + log.warn(e.getMessage()); + + return new ErrorResponse(SERVER_ERROR_MESSAGE); + } + @ExceptionHandler @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ErrorResponse handleException(Exception e) { log.error(e.getMessage()); - return new ErrorResponse("서버 오류가 발생했습니다. 관리자에게 문의하세요."); + return new ErrorResponse(SERVER_ERROR_MESSAGE); } } diff --git a/backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java b/backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java new file mode 100644 index 000000000..661eb660f --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java @@ -0,0 +1,8 @@ +package ddangkong.controller.exception; + +public class ViolateDataException extends RuntimeException { + + public ViolateDataException(String message) { + super(message); + } +} diff --git a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java new file mode 100644 index 000000000..35359203e --- /dev/null +++ b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java @@ -0,0 +1,54 @@ +package ddangkong.service.question; + +import ddangkong.controller.exception.BusinessLogicException; +import ddangkong.controller.exception.ViolateDataException; +import ddangkong.controller.question.dto.BalanceQuestionResponse; +import ddangkong.domain.option.BalanceOption; +import ddangkong.domain.question.BalanceQuestion; +import ddangkong.repository.option.BalanceOptionRepository; +import ddangkong.repository.room.RoomQuestionRepository; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@RequiredArgsConstructor +public class BalanceQuestionService { + + private static final int BALANCE_OPTION_SIZE = 2; + + private final RoomQuestionRepository roomQuestionRepository; + + private final BalanceOptionRepository balanceOptionRepository; + + @Transactional(readOnly = true) + public BalanceQuestionResponse findRecentBalanceQuestion(Long roomId) { + BalanceQuestion balanceQuestion = findRecentQuestion(roomId); + List balanceOptions = findBalanceOptions(balanceQuestion); + + return BalanceQuestionResponse.builder() + .question(balanceQuestion) + .firstOption(balanceOptions.get(0)) + .secondOption(balanceOptions.get(1)) + .build(); + } + + private BalanceQuestion findRecentQuestion(Long roomId) { + return roomQuestionRepository.findTopByRoomIdOrderByCreatedAtDesc(roomId) + .orElseThrow(() -> new BusinessLogicException("해당 방의 질문이 존재하지 않습니다.")) + .getBalanceQuestion(); + } + + private List findBalanceOptions(BalanceQuestion balanceQuestion) { + List balanceOptions = balanceOptionRepository.findByBalanceQuestion(balanceQuestion); + validateBalanceOptions(balanceOptions); + return balanceOptions; + } + + private void validateBalanceOptions(List balanceOptions) { + if (balanceOptions.size() != BALANCE_OPTION_SIZE) { + throw new ViolateDataException("밸런스 게임의 선택지가 %d개입니다".formatted(balanceOptions.size())); + } + } +} diff --git a/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java b/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java new file mode 100644 index 000000000..68a87e24c --- /dev/null +++ b/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java @@ -0,0 +1,9 @@ +package ddangkong.repository; + +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.jdbc.Sql; + +@DataJpaTest +@Sql(scripts = "/init-test.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) +public abstract class BaseRepositoryTest { +} diff --git a/backend/src/test/java/ddangkong/service/BaseServiceTest.java b/backend/src/test/java/ddangkong/service/BaseServiceTest.java new file mode 100644 index 000000000..6521e486e --- /dev/null +++ b/backend/src/test/java/ddangkong/service/BaseServiceTest.java @@ -0,0 +1,11 @@ +package ddangkong.service; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.Sql.ExecutionPhase; + +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@Sql(scripts = "/init-test.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) +public abstract class BaseServiceTest { +} diff --git a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java new file mode 100644 index 000000000..ec1c19452 --- /dev/null +++ b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java @@ -0,0 +1,44 @@ +package ddangkong.service.question; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import ddangkong.controller.exception.BusinessLogicException; +import ddangkong.controller.option.dto.BalanceOptionResponse; +import ddangkong.controller.question.dto.BalanceQuestionResponse; +import ddangkong.domain.question.Category; +import ddangkong.service.BaseServiceTest; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +class BalanceQuestionServiceTest extends BaseServiceTest { + + private static final Long PROGRESS_ROOM_ID = 1L; + private static final Long NOT_EXIST_ROOM_ID = 2L; + private static final BalanceQuestionResponse BALANCE_QUESTION_RESPONSE = new BalanceQuestionResponse( + 1L, Category.EXAMPLE, "똥 맛 카레 vs 카레 맛 똥", + new BalanceOptionResponse(1L, "똥 맛 카레"), + new BalanceOptionResponse(2L, "카레 맛 똥")); + + @Autowired + private BalanceQuestionService balanceQuestionService; + + @Nested + class 방의_최신_질문_조회 { + + @Test + void 방의_최신_질문을_조회할_수_있다() { + BalanceQuestionResponse actual = balanceQuestionService.findRecentBalanceQuestion(PROGRESS_ROOM_ID); + + assertThat(actual).isEqualTo(BALANCE_QUESTION_RESPONSE); + } + + @Test + void 방이_없을_경우_예외를_던진다() { + assertThatThrownBy(() -> balanceQuestionService.findRecentBalanceQuestion(NOT_EXIST_ROOM_ID)) + .isInstanceOf(BusinessLogicException.class) + .hasMessage("해당 방의 질문이 존재하지 않습니다."); + } + } +} From c1867d36af14eaa391a0281452fd887d97b4f9d9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Fri, 19 Jul 2024 09:51:34 +0900 Subject: [PATCH 04/23] =?UTF-8?q?chore:=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20Rest-Assured=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/build.gradle b/backend/build.gradle index 0a1b9a392..e57115b8e 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -43,6 +43,7 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' + testImplementation 'io.rest-assured:rest-assured:5.3.1' } tasks.named('test') { From 81b9d14e1e11c93aa7625f72828abe939f1de3fd Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Fri, 19 Jul 2024 09:52:45 +0900 Subject: [PATCH 05/23] =?UTF-8?q?feat:=20=EB=B0=A9=20=EC=A7=88=EB=AC=B8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20API=20=EA=B5=AC=ED=98=84=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../option/dto/BalanceOptionResponse.java | 12 +++++++ .../question/BalanceQuestionController.java | 22 ++++++++++++ .../question/dto/BalanceQuestionResponse.java | 24 +++++++++++++ .../controller/BaseControllerTest.java | 21 ++++++++++++ .../BalanceQuestionControllerTest.java | 34 +++++++++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java create mode 100644 backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java create mode 100644 backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java create mode 100644 backend/src/test/java/ddangkong/controller/BaseControllerTest.java create mode 100644 backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java diff --git a/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java b/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java new file mode 100644 index 000000000..33e746ecf --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java @@ -0,0 +1,12 @@ +package ddangkong.controller.option.dto; + +import ddangkong.domain.option.BalanceOption; + +public record BalanceOptionResponse( + Long optionId, + String content +) { + public static BalanceOptionResponse from(BalanceOption balanceOption) { + return new BalanceOptionResponse(balanceOption.getId(), balanceOption.getContent()); + } +} diff --git a/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java b/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java new file mode 100644 index 000000000..08897e6d8 --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java @@ -0,0 +1,22 @@ +package ddangkong.controller.question; + +import ddangkong.controller.question.dto.BalanceQuestionResponse; +import ddangkong.service.question.BalanceQuestionService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +@RequiredArgsConstructor +public class BalanceQuestionController { + + private final BalanceQuestionService balanceQuestionService; + + @GetMapping("/balances/rooms/{roomId}/question") + public BalanceQuestionResponse getBalanceQuestion(@PathVariable Long roomId) { + return balanceQuestionService.findRecentBalanceQuestion(roomId); + } +} diff --git a/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java b/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java new file mode 100644 index 000000000..e021dab80 --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java @@ -0,0 +1,24 @@ +package ddangkong.controller.question.dto; + +import ddangkong.controller.option.dto.BalanceOptionResponse; +import ddangkong.domain.option.BalanceOption; +import ddangkong.domain.question.BalanceQuestion; +import ddangkong.domain.question.Category; +import lombok.Builder; + +public record BalanceQuestionResponse( + Long questionId, + Category category, + String title, + BalanceOptionResponse firstOption, + BalanceOptionResponse secondOption +) { + @Builder + private BalanceQuestionResponse(BalanceQuestion question, BalanceOption firstOption, BalanceOption secondOption) { + this(question.getId(), + question.getCategory(), + question.getContent(), + BalanceOptionResponse.from(firstOption), + BalanceOptionResponse.from(secondOption)); + } +} diff --git a/backend/src/test/java/ddangkong/controller/BaseControllerTest.java b/backend/src/test/java/ddangkong/controller/BaseControllerTest.java new file mode 100644 index 000000000..54a162c63 --- /dev/null +++ b/backend/src/test/java/ddangkong/controller/BaseControllerTest.java @@ -0,0 +1,21 @@ +package ddangkong.controller; + + +import io.restassured.RestAssured; +import org.junit.jupiter.api.BeforeEach; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.test.context.jdbc.Sql; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@Sql(scripts = "/init-test.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) +public abstract class BaseControllerTest { + + @LocalServerPort + private int port; + + @BeforeEach + void setUp() { + RestAssured.port = port; + } +} diff --git a/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java b/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java new file mode 100644 index 000000000..d09922bc9 --- /dev/null +++ b/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java @@ -0,0 +1,34 @@ +package ddangkong.controller.question; + +import static org.assertj.core.api.Assertions.assertThat; + +import ddangkong.controller.BaseControllerTest; +import ddangkong.controller.option.dto.BalanceOptionResponse; +import ddangkong.controller.question.dto.BalanceQuestionResponse; +import ddangkong.domain.question.Category; +import io.restassured.RestAssured; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class BalanceQuestionControllerTest extends BaseControllerTest { + + private static final BalanceQuestionResponse EXPECTED_RESPONSE = new BalanceQuestionResponse( + 1L, Category.EXAMPLE, "똥 맛 카레 vs 카레 맛 똥", + new BalanceOptionResponse(1L, "똥 맛 카레"), + new BalanceOptionResponse(2L, "카레 맛 똥")); + + @Nested + class 방의_질문_조회 { + + @Test + void 현재_방의_질문을_조회할_수_있다() { + BalanceQuestionResponse actual = RestAssured.given().log().all() + .when().get("/api/balances/rooms/1/question") + .then().log().all() + .statusCode(200) + .extract().as(BalanceQuestionResponse.class); + + assertThat(actual).isEqualTo(EXPECTED_RESPONSE); + } + } +} From 62a14a930826acba54c101a9be87d95ac40c2748 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 14:31:34 +0900 Subject: [PATCH 06/23] =?UTF-8?q?build:=20rest-assured=EC=9D=84=20?= =?UTF-8?q?=EC=B5=9C=EC=8B=A0=20=EB=B2=84=EC=A0=84(5.5.0)=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/build.gradle b/backend/build.gradle index e57115b8e..7d6c86e2a 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -43,7 +43,7 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation 'io.rest-assured:rest-assured:5.3.1' + testImplementation 'io.rest-assured:rest-assured:5.5.0' } tasks.named('test') { From 0a4501b0237f86b79b6a6f41ba6693c6f074828a Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 14:44:48 +0900 Subject: [PATCH 07/23] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9D=BC=EB=B6=80=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=8F=20=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit init-test.sql에서 데이터 입력 시 한 번에 입력하도록 수정 --- .../BalanceQuestionControllerTest.java | 6 ++--- .../room/RoomQuestionRepositoryTest.java | 2 +- .../question/BalanceQuestionServiceTest.java | 6 ++--- backend/src/test/resources/init-test.sql | 22 +++++++++---------- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java b/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java index d09922bc9..96aa89c0f 100644 --- a/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java @@ -13,9 +13,9 @@ class BalanceQuestionControllerTest extends BaseControllerTest { private static final BalanceQuestionResponse EXPECTED_RESPONSE = new BalanceQuestionResponse( - 1L, Category.EXAMPLE, "똥 맛 카레 vs 카레 맛 똥", - new BalanceOptionResponse(1L, "똥 맛 카레"), - new BalanceOptionResponse(2L, "카레 맛 똥")); + 1L, Category.EXAMPLE, "민초 vs 반민초", + new BalanceOptionResponse(1L, "민초"), + new BalanceOptionResponse(2L, "반민초")); @Nested class 방의_질문_조회 { diff --git a/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java b/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java index 8b16d17d4..9313697eb 100644 --- a/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java +++ b/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java @@ -20,7 +20,7 @@ class 방의_최신_질문_조회 { void 방의_가장_최신의_질문을_조회할_수_있다() { RoomQuestion actual = roomQuestionRepository.findTopByRoomIdOrderByCreatedAtDesc(1L).get(); - assertThat(actual.getId()).isEqualTo(1L); + assertThat(actual.getId()).isEqualTo(2L); } } } diff --git a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java index ec1c19452..a50efb52f 100644 --- a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java +++ b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java @@ -17,9 +17,9 @@ class BalanceQuestionServiceTest extends BaseServiceTest { private static final Long PROGRESS_ROOM_ID = 1L; private static final Long NOT_EXIST_ROOM_ID = 2L; private static final BalanceQuestionResponse BALANCE_QUESTION_RESPONSE = new BalanceQuestionResponse( - 1L, Category.EXAMPLE, "똥 맛 카레 vs 카레 맛 똥", - new BalanceOptionResponse(1L, "똥 맛 카레"), - new BalanceOptionResponse(2L, "카레 맛 똥")); + 1L, Category.EXAMPLE, "민초 vs 반민초", + new BalanceOptionResponse(1L, "민초"), + new BalanceOptionResponse(2L, "반민초")); @Autowired private BalanceQuestionService balanceQuestionService; diff --git a/backend/src/test/resources/init-test.sql b/backend/src/test/resources/init-test.sql index e9477e90c..71dbf94a8 100644 --- a/backend/src/test/resources/init-test.sql +++ b/backend/src/test/resources/init-test.sql @@ -16,21 +16,19 @@ ALTER TABLE room_question ALTER COLUMN ID RESTART WITH 1; INSERT INTO room() VALUES (); -INSERT INTO member(nickname, room_id) VALUES ('mohamedeu al katan', 1); -INSERT INTO member(nickname, room_id) VALUES ('deundeun ', 1); -INSERT INTO member(nickname, room_id) VALUES ('rupi', 1); -INSERT INTO member(nickname, room_id) VALUES ('rapper lee', 1); +INSERT INTO member(nickname, room_id) +VALUES ('mohamedeu al katan', 1), ('deundeun ', 1), ('rupi', 1), ('rapper lee', 1); -INSERT INTO room_question(room_id, balance_question_id, created_at) VALUES (1, 1, '2024-07-18 20:00:00.000'); +INSERT INTO room_question(room_id, balance_question_id, created_at) +VALUES (1, 2, '2024-07-18 19:50:00.000'), (1, 1, '2024-07-18 20:00:00.000'); -INSERT INTO balance_question(category, content) VALUES ('EXAMPLE', '똥 맛 카레 vs 카레 맛 똥'); +INSERT INTO balance_question(category, content) +VALUES ('EXAMPLE', '민초 vs 반민초'), ('EXAMPLE', '월 200 백수 vs 월 500 직장인'); -INSERT INTO balance_option(content, balance_question_id) VALUES ('똥 맛 카레', 1); -INSERT INTO balance_option(content, balance_question_id) VALUES ('카레 맛 똥', 1); +INSERT INTO balance_option(content, balance_question_id) +VALUES ('민초', 1), ('반민초', 1), ('월 200 백수', 2), ('월 200 직장인', 2); -INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 1); -INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 2); -INSERT INTO balance_vote(balance_option_id, member_id) VALUES (1, 3); -INSERT INTO balance_vote(balance_option_id, member_id) VALUES (2, 4); +INSERT INTO balance_vote(balance_option_id, member_id) +VALUES (4, 1), (4, 2), (4, 3), (4, 4), (1, 1), (1, 2), (1, 3), (2, 4); SET REFERENTIAL_INTEGRITY TRUE; From da4ed13968fef9b16f71a1d9b419e6ffc7c5dcf2 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 14:51:41 +0900 Subject: [PATCH 08/23] =?UTF-8?q?test:=20=EC=9D=BC=EB=B6=80=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=EC=9D=98=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=EA=B0=92=20=EB=AA=85=EC=8B=9C=ED=95=9C=20=EA=B2=83=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20ServiceTest=EC=97=90=EC=84=9C=20Mock=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EC=82=AC=EC=9A=A9=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/ddangkong/controller/BaseControllerTest.java | 2 +- .../src/test/java/ddangkong/service/BaseServiceTest.java | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/backend/src/test/java/ddangkong/controller/BaseControllerTest.java b/backend/src/test/java/ddangkong/controller/BaseControllerTest.java index 54a162c63..c7516b209 100644 --- a/backend/src/test/java/ddangkong/controller/BaseControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/BaseControllerTest.java @@ -8,7 +8,7 @@ import org.springframework.test.context.jdbc.Sql; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@Sql(scripts = "/init-test.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) +@Sql(scripts = "/init-test.sql") public abstract class BaseControllerTest { @LocalServerPort diff --git a/backend/src/test/java/ddangkong/service/BaseServiceTest.java b/backend/src/test/java/ddangkong/service/BaseServiceTest.java index 6521e486e..614232a77 100644 --- a/backend/src/test/java/ddangkong/service/BaseServiceTest.java +++ b/backend/src/test/java/ddangkong/service/BaseServiceTest.java @@ -1,11 +1,9 @@ package ddangkong.service; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.test.context.jdbc.Sql; -import org.springframework.test.context.jdbc.Sql.ExecutionPhase; -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -@Sql(scripts = "/init-test.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) +@SpringBootTest +@Sql(scripts = "/init-test.sql") public abstract class BaseServiceTest { } From f57c30ce0d9f7a543d0f292374555ba108013d70 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 14:52:18 +0900 Subject: [PATCH 09/23] =?UTF-8?q?style:=20test=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B0=9C=ED=96=89=20=EB=B0=8F=20=EB=93=A4=EC=97=AC=EC=93=B0?= =?UTF-8?q?=EA=B8=B0=20=EB=A7=9E=EC=B6=A4=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/ddangkong/repository/BaseRepositoryTest.java | 1 + .../ddangkong/service/question/BalanceQuestionServiceTest.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java b/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java index 68a87e24c..5aa0a768b 100644 --- a/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java +++ b/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java @@ -6,4 +6,5 @@ @DataJpaTest @Sql(scripts = "/init-test.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD) public abstract class BaseRepositoryTest { + } diff --git a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java index a50efb52f..4045a5194 100644 --- a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java +++ b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java @@ -17,7 +17,7 @@ class BalanceQuestionServiceTest extends BaseServiceTest { private static final Long PROGRESS_ROOM_ID = 1L; private static final Long NOT_EXIST_ROOM_ID = 2L; private static final BalanceQuestionResponse BALANCE_QUESTION_RESPONSE = new BalanceQuestionResponse( - 1L, Category.EXAMPLE, "민초 vs 반민초", + 1L, Category.EXAMPLE, "민초 vs 반민초", new BalanceOptionResponse(1L, "민초"), new BalanceOptionResponse(2L, "반민초")); From 8566753b4d349540a2c5b4bd7cde3e1c983b1f79 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 15:01:01 +0900 Subject: [PATCH 10/23] =?UTF-8?q?refactor:=20=EC=9A=A9=EB=8F=84=EB=A5=BC?= =?UTF-8?q?=20=EB=82=98=ED=83=80=EB=82=B4=EA=B8=B0=20=EC=9C=84=ED=95=B4=20?= =?UTF-8?q?AuditingEntity=20=EC=97=90=EC=84=9C=20BaseEntity=EB=A1=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddangkong/domain/{AuditingEntity.java => BaseEntity.java} | 2 +- backend/src/main/java/ddangkong/domain/room/RoomQuestion.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename backend/src/main/java/ddangkong/domain/{AuditingEntity.java => BaseEntity.java} (94%) diff --git a/backend/src/main/java/ddangkong/domain/AuditingEntity.java b/backend/src/main/java/ddangkong/domain/BaseEntity.java similarity index 94% rename from backend/src/main/java/ddangkong/domain/AuditingEntity.java rename to backend/src/main/java/ddangkong/domain/BaseEntity.java index 7d1bdc567..e50b10073 100644 --- a/backend/src/main/java/ddangkong/domain/AuditingEntity.java +++ b/backend/src/main/java/ddangkong/domain/BaseEntity.java @@ -11,7 +11,7 @@ @MappedSuperclass @EntityListeners(AuditingEntityListener.class) @Getter -public class AuditingEntity { +public class BaseEntity { @CreatedDate @Column(updatable = false, nullable = false) diff --git a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java index 7315b3495..10c2df169 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java +++ b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java @@ -1,6 +1,6 @@ package ddangkong.domain.room; -import ddangkong.domain.AuditingEntity; +import ddangkong.domain.BaseEntity; import ddangkong.domain.question.BalanceQuestion; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -20,7 +20,7 @@ @Getter @EqualsAndHashCode @ToString -public class RoomQuestion extends AuditingEntity { +public class RoomQuestion extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) From 935ff1edd61c5b469d9d5ce6458560e41d508398 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 15:07:21 +0900 Subject: [PATCH 11/23] =?UTF-8?q?refactor:=20Repository=20=EB=A5=BC=20doma?= =?UTF-8?q?in=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= =?UTF-8?q?=20=EB=B0=8F=20=ED=95=84=EC=9A=94=EC=97=86=EB=8A=94=20=EC=97=90?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=A0=9C=EA=B1=B0=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../option/BalanceOptionRepository.java | 5 +---- .../room => domain/question}/RoomQuestionRepository.java | 4 +--- .../ddangkong/service/question/BalanceQuestionService.java | 4 ++-- .../ddangkong/{repository => domain}/BaseRepositoryTest.java | 2 +- .../room => domain/question}/RoomQuestionRepositoryTest.java | 4 ++-- 5 files changed, 7 insertions(+), 12 deletions(-) rename backend/src/main/java/ddangkong/{repository => domain}/option/BalanceOptionRepository.java (67%) rename backend/src/main/java/ddangkong/{repository/room => domain/question}/RoomQuestionRepository.java (75%) rename backend/src/test/java/ddangkong/{repository => domain}/BaseRepositoryTest.java (90%) rename backend/src/test/java/ddangkong/{repository/room => domain/question}/RoomQuestionRepositoryTest.java (89%) diff --git a/backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java b/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java similarity index 67% rename from backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java rename to backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java index ad9462d68..7209a1a78 100644 --- a/backend/src/main/java/ddangkong/repository/option/BalanceOptionRepository.java +++ b/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java @@ -1,12 +1,9 @@ -package ddangkong.repository.option; +package ddangkong.domain.option; -import ddangkong.domain.option.BalanceOption; import ddangkong.domain.question.BalanceQuestion; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -@Repository public interface BalanceOptionRepository extends JpaRepository { List findByBalanceQuestion(BalanceQuestion balanceQuestion); diff --git a/backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java b/backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java similarity index 75% rename from backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java rename to backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java index 7d73f2b95..0006cf241 100644 --- a/backend/src/main/java/ddangkong/repository/room/RoomQuestionRepository.java +++ b/backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java @@ -1,11 +1,9 @@ -package ddangkong.repository.room; +package ddangkong.domain.question; import ddangkong.domain.room.RoomQuestion; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -@Repository public interface RoomQuestionRepository extends JpaRepository { Optional findTopByRoomIdOrderByCreatedAtDesc(Long roomId); diff --git a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java index 35359203e..ca787596c 100644 --- a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java +++ b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java @@ -4,9 +4,9 @@ import ddangkong.controller.exception.ViolateDataException; import ddangkong.controller.question.dto.BalanceQuestionResponse; import ddangkong.domain.option.BalanceOption; +import ddangkong.domain.option.BalanceOptionRepository; import ddangkong.domain.question.BalanceQuestion; -import ddangkong.repository.option.BalanceOptionRepository; -import ddangkong.repository.room.RoomQuestionRepository; +import ddangkong.domain.question.RoomQuestionRepository; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java b/backend/src/test/java/ddangkong/domain/BaseRepositoryTest.java similarity index 90% rename from backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java rename to backend/src/test/java/ddangkong/domain/BaseRepositoryTest.java index 5aa0a768b..92a080765 100644 --- a/backend/src/test/java/ddangkong/repository/BaseRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/BaseRepositoryTest.java @@ -1,4 +1,4 @@ -package ddangkong.repository; +package ddangkong.domain; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.jdbc.Sql; diff --git a/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java b/backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java similarity index 89% rename from backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java rename to backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java index 9313697eb..bd15ed56f 100644 --- a/backend/src/test/java/ddangkong/repository/room/RoomQuestionRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java @@ -1,9 +1,9 @@ -package ddangkong.repository.room; +package ddangkong.domain.question; import static org.assertj.core.api.Assertions.assertThat; +import ddangkong.domain.BaseRepositoryTest; import ddangkong.domain.room.RoomQuestion; -import ddangkong.repository.BaseRepositoryTest; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; From 458cd54beb2224e5950366687cf8f62a88896ee7 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 15:10:27 +0900 Subject: [PATCH 12/23] =?UTF-8?q?refactor:=20=EC=A7=80=EC=97=B0=20?= =?UTF-8?q?=EB=A1=9C=EB=94=A9=EC=9D=98=20=EC=97=AC=ED=8C=8C=EB=A5=BC=20?= =?UTF-8?q?=EB=A7=89=EA=B8=B0=20=EC=9C=84=ED=95=B4,=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EC=9D=98=20@EqualsAndHashCode,=20@ToString=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/ddangkong/domain/member/Member.java | 4 ---- .../src/main/java/ddangkong/domain/option/BalanceOption.java | 4 ---- .../main/java/ddangkong/domain/question/BalanceQuestion.java | 4 ---- backend/src/main/java/ddangkong/domain/room/Room.java | 4 ---- backend/src/main/java/ddangkong/domain/room/RoomQuestion.java | 4 ---- backend/src/main/java/ddangkong/domain/vote/BalanceVote.java | 4 ---- 6 files changed, 24 deletions(-) diff --git a/backend/src/main/java/ddangkong/domain/member/Member.java b/backend/src/main/java/ddangkong/domain/member/Member.java index 6cd46d46d..9d4e59c5a 100644 --- a/backend/src/main/java/ddangkong/domain/member/Member.java +++ b/backend/src/main/java/ddangkong/domain/member/Member.java @@ -10,16 +10,12 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class Member { @Id diff --git a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java b/backend/src/main/java/ddangkong/domain/option/BalanceOption.java index a109ce4f7..5fcc62d27 100644 --- a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java +++ b/backend/src/main/java/ddangkong/domain/option/BalanceOption.java @@ -10,16 +10,12 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class BalanceOption { @Id diff --git a/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java b/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java index 20205a73c..0b56e56dc 100644 --- a/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java +++ b/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java @@ -8,16 +8,12 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class BalanceQuestion { @Id diff --git a/backend/src/main/java/ddangkong/domain/room/Room.java b/backend/src/main/java/ddangkong/domain/room/Room.java index 77f0cb125..9f8b1bd0f 100644 --- a/backend/src/main/java/ddangkong/domain/room/Room.java +++ b/backend/src/main/java/ddangkong/domain/room/Room.java @@ -5,16 +5,12 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class Room { @Id diff --git a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java index 10c2df169..e3283839d 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java +++ b/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java @@ -10,16 +10,12 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class RoomQuestion extends BaseEntity { @Id diff --git a/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java b/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java index 08f8c85f9..ec09a2a46 100644 --- a/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java +++ b/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java @@ -10,16 +10,12 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import lombok.AccessLevel; -import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import lombok.ToString; @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -@EqualsAndHashCode -@ToString public class BalanceVote { @Id From de80d874ecf91c971b5e38cbdcd622279ed431d8 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 15:12:41 +0900 Subject: [PATCH 13/23] =?UTF-8?q?fix:=20=EC=84=9C=EB=B2=84=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=8A=B8=EB=9E=98=ED=82=B9=EC=9D=84=20=EB=AA=85?= =?UTF-8?q?=ED=99=95=ED=9E=88=20=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=B4,?= =?UTF-8?q?=20ViolateDataException=EC=9D=84=20error=20=EC=88=98=EC=A4=80?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=A1=9C=EA=B9=85=ED=95=A8=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ddangkong/controller/exception/GlobalExceptionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java index 3a084fcf6..8defc993e 100644 --- a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java +++ b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java @@ -39,7 +39,7 @@ public ErrorResponse handleBusinessLogicException(BusinessLogicException e) { @ExceptionHandler @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ErrorResponse handleViolateDataException(ViolateDataException e) { - log.warn(e.getMessage()); + log.error(e.getMessage()); return new ErrorResponse(SERVER_ERROR_MESSAGE); } From 31e35431e7157780482352876d7a836b9ba8f3c8 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sat, 20 Jul 2024 15:17:34 +0900 Subject: [PATCH 14/23] =?UTF-8?q?refactor:=20=EC=98=88=EC=99=B8=EB=A5=BC?= =?UTF-8?q?=20=EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=20=EB=8B=A8=EC=9C=84?= =?UTF-8?q?=EC=9D=98=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/exception/GlobalExceptionHandler.java | 2 ++ .../excpetion}/BusinessLogicException.java | 2 +- .../exception => service/excpetion}/ViolateDataException.java | 2 +- .../ddangkong/service/question/BalanceQuestionService.java | 4 ++-- .../service/question/BalanceQuestionServiceTest.java | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) rename backend/src/main/java/ddangkong/{controller/exception => service/excpetion}/BusinessLogicException.java (78%) rename backend/src/main/java/ddangkong/{controller/exception => service/excpetion}/ViolateDataException.java (78%) diff --git a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java index 8defc993e..27def5ca9 100644 --- a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java +++ b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java @@ -1,5 +1,7 @@ package ddangkong.controller.exception; +import ddangkong.service.excpetion.BusinessLogicException; +import ddangkong.service.excpetion.ViolateDataException; import jakarta.validation.ConstraintViolationException; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; diff --git a/backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java b/backend/src/main/java/ddangkong/service/excpetion/BusinessLogicException.java similarity index 78% rename from backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java rename to backend/src/main/java/ddangkong/service/excpetion/BusinessLogicException.java index 85ef4f8d0..d2b522cb4 100644 --- a/backend/src/main/java/ddangkong/controller/exception/BusinessLogicException.java +++ b/backend/src/main/java/ddangkong/service/excpetion/BusinessLogicException.java @@ -1,4 +1,4 @@ -package ddangkong.controller.exception; +package ddangkong.service.excpetion; public class BusinessLogicException extends RuntimeException { diff --git a/backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java b/backend/src/main/java/ddangkong/service/excpetion/ViolateDataException.java similarity index 78% rename from backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java rename to backend/src/main/java/ddangkong/service/excpetion/ViolateDataException.java index 661eb660f..48192f9b1 100644 --- a/backend/src/main/java/ddangkong/controller/exception/ViolateDataException.java +++ b/backend/src/main/java/ddangkong/service/excpetion/ViolateDataException.java @@ -1,4 +1,4 @@ -package ddangkong.controller.exception; +package ddangkong.service.excpetion; public class ViolateDataException extends RuntimeException { diff --git a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java index ca787596c..7ac45964c 100644 --- a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java +++ b/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java @@ -1,12 +1,12 @@ package ddangkong.service.question; -import ddangkong.controller.exception.BusinessLogicException; -import ddangkong.controller.exception.ViolateDataException; import ddangkong.controller.question.dto.BalanceQuestionResponse; import ddangkong.domain.option.BalanceOption; import ddangkong.domain.option.BalanceOptionRepository; import ddangkong.domain.question.BalanceQuestion; import ddangkong.domain.question.RoomQuestionRepository; +import ddangkong.service.excpetion.BusinessLogicException; +import ddangkong.service.excpetion.ViolateDataException; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java index 4045a5194..3b30e2305 100644 --- a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java +++ b/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java @@ -3,11 +3,11 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import ddangkong.controller.exception.BusinessLogicException; import ddangkong.controller.option.dto.BalanceOptionResponse; import ddangkong.controller.question.dto.BalanceQuestionResponse; import ddangkong.domain.question.Category; import ddangkong.service.BaseServiceTest; +import ddangkong.service.excpetion.BusinessLogicException; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; From 06b3dbaebf820ef7c61a64831d764212077c5908 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Sun, 21 Jul 2024 00:58:01 +0900 Subject: [PATCH 15/23] =?UTF-8?q?refactor:=20=EA=B5=AC=EB=B6=84=EC=9D=84?= =?UTF-8?q?=20=EC=89=BD=EA=B2=8C=20=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=B4?= =?UTF-8?q?=20=EC=9D=BC=EB=B6=80=20=ED=85=8C=EC=9D=B4=EB=B8=94=20=EB=B0=8F?= =?UTF-8?q?=20=EC=BB=AC=EB=9F=BC=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BalanceQuestion -> BalanceContent로 변경 - 필드명 content, title 등을 name으로 바꿈 --- .../content/BalanceContentController.java | 22 +++++++++++++ .../content/dto/BalanceContentResponse.java | 27 ++++++++++++++++ .../option/dto/BalanceOptionResponse.java | 2 +- .../question/BalanceQuestionController.java | 22 ------------- .../question/dto/BalanceQuestionResponse.java | 24 -------------- .../BalanceContent.java} | 6 ++-- .../{question => content}/Category.java | 2 +- .../domain/content/RoomContentRepository.java | 10 ++++++ .../domain/option/BalanceOption.java | 8 ++--- .../option/BalanceOptionRepository.java | 4 +-- .../question/RoomQuestionRepository.java | 10 ------ .../{RoomQuestion.java => RoomContent.java} | 8 ++--- .../BalanceContentService.java} | 32 +++++++++---------- .../BalanceContentControllerTest.java} | 14 ++++---- .../RoomContentRepositoryTest.java} | 8 ++--- .../BalanceContentServiceTest.java} | 22 ++++++------- backend/src/test/resources/init-test.sql | 16 +++++----- 17 files changed, 120 insertions(+), 117 deletions(-) create mode 100644 backend/src/main/java/ddangkong/controller/content/BalanceContentController.java create mode 100644 backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java delete mode 100644 backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java delete mode 100644 backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java rename backend/src/main/java/ddangkong/domain/{question/BalanceQuestion.java => content/BalanceContent.java} (86%) rename backend/src/main/java/ddangkong/domain/{question => content}/Category.java (56%) create mode 100644 backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java delete mode 100644 backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java rename backend/src/main/java/ddangkong/domain/room/{RoomQuestion.java => RoomContent.java} (79%) rename backend/src/main/java/ddangkong/service/{question/BalanceQuestionService.java => content/BalanceContentService.java} (60%) rename backend/src/test/java/ddangkong/controller/{question/BalanceQuestionControllerTest.java => content/BalanceContentControllerTest.java} (63%) rename backend/src/test/java/ddangkong/domain/{question/RoomQuestionRepositoryTest.java => content/RoomContentRepositoryTest.java} (68%) rename backend/src/test/java/ddangkong/service/{question/BalanceQuestionServiceTest.java => content/BalanceContentServiceTest.java} (56%) diff --git a/backend/src/main/java/ddangkong/controller/content/BalanceContentController.java b/backend/src/main/java/ddangkong/controller/content/BalanceContentController.java new file mode 100644 index 000000000..495d6752f --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/content/BalanceContentController.java @@ -0,0 +1,22 @@ +package ddangkong.controller.content; + +import ddangkong.controller.content.dto.BalanceContentResponse; +import ddangkong.service.content.BalanceContentService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +@RequiredArgsConstructor +public class BalanceContentController { + + private final BalanceContentService balanceContentService; + + @GetMapping("/balances/rooms/{roomId}/question") + public BalanceContentResponse getBalanceContent(@PathVariable Long roomId) { + return balanceContentService.findRecentBalanceContent(roomId); + } +} diff --git a/backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java b/backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java new file mode 100644 index 000000000..74c267707 --- /dev/null +++ b/backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java @@ -0,0 +1,27 @@ +package ddangkong.controller.content.dto; + +import ddangkong.controller.option.dto.BalanceOptionResponse; +import ddangkong.domain.content.BalanceContent; +import ddangkong.domain.content.Category; +import ddangkong.domain.option.BalanceOption; +import lombok.Builder; + +public record BalanceContentResponse( + Long questionId, + Category category, + String title, + BalanceOptionResponse firstOption, + BalanceOptionResponse secondOption +) { + + @Builder + private BalanceContentResponse(BalanceContent balanceContent, + BalanceOption firstOption, + BalanceOption secondOption) { + this(balanceContent.getId(), + balanceContent.getCategory(), + balanceContent.getName(), + BalanceOptionResponse.from(firstOption), + BalanceOptionResponse.from(secondOption)); + } +} diff --git a/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java b/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java index 33e746ecf..665562cda 100644 --- a/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java +++ b/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java @@ -7,6 +7,6 @@ public record BalanceOptionResponse( String content ) { public static BalanceOptionResponse from(BalanceOption balanceOption) { - return new BalanceOptionResponse(balanceOption.getId(), balanceOption.getContent()); + return new BalanceOptionResponse(balanceOption.getId(), balanceOption.getName()); } } diff --git a/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java b/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java deleted file mode 100644 index 08897e6d8..000000000 --- a/backend/src/main/java/ddangkong/controller/question/BalanceQuestionController.java +++ /dev/null @@ -1,22 +0,0 @@ -package ddangkong.controller.question; - -import ddangkong.controller.question.dto.BalanceQuestionResponse; -import ddangkong.service.question.BalanceQuestionService; -import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@RequestMapping("/api") -@RequiredArgsConstructor -public class BalanceQuestionController { - - private final BalanceQuestionService balanceQuestionService; - - @GetMapping("/balances/rooms/{roomId}/question") - public BalanceQuestionResponse getBalanceQuestion(@PathVariable Long roomId) { - return balanceQuestionService.findRecentBalanceQuestion(roomId); - } -} diff --git a/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java b/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java deleted file mode 100644 index e021dab80..000000000 --- a/backend/src/main/java/ddangkong/controller/question/dto/BalanceQuestionResponse.java +++ /dev/null @@ -1,24 +0,0 @@ -package ddangkong.controller.question.dto; - -import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.domain.option.BalanceOption; -import ddangkong.domain.question.BalanceQuestion; -import ddangkong.domain.question.Category; -import lombok.Builder; - -public record BalanceQuestionResponse( - Long questionId, - Category category, - String title, - BalanceOptionResponse firstOption, - BalanceOptionResponse secondOption -) { - @Builder - private BalanceQuestionResponse(BalanceQuestion question, BalanceOption firstOption, BalanceOption secondOption) { - this(question.getId(), - question.getCategory(), - question.getContent(), - BalanceOptionResponse.from(firstOption), - BalanceOptionResponse.from(secondOption)); - } -} diff --git a/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java b/backend/src/main/java/ddangkong/domain/content/BalanceContent.java similarity index 86% rename from backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java rename to backend/src/main/java/ddangkong/domain/content/BalanceContent.java index 0b56e56dc..bb2238210 100644 --- a/backend/src/main/java/ddangkong/domain/question/BalanceQuestion.java +++ b/backend/src/main/java/ddangkong/domain/content/BalanceContent.java @@ -1,4 +1,4 @@ -package ddangkong.domain.question; +package ddangkong.domain.content; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -14,7 +14,7 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -public class BalanceQuestion { +public class BalanceContent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -25,5 +25,5 @@ public class BalanceQuestion { private Category category; @Column(nullable = false) - private String content; + private String name; } diff --git a/backend/src/main/java/ddangkong/domain/question/Category.java b/backend/src/main/java/ddangkong/domain/content/Category.java similarity index 56% rename from backend/src/main/java/ddangkong/domain/question/Category.java rename to backend/src/main/java/ddangkong/domain/content/Category.java index fe67d4c5a..ba69a0a07 100644 --- a/backend/src/main/java/ddangkong/domain/question/Category.java +++ b/backend/src/main/java/ddangkong/domain/content/Category.java @@ -1,4 +1,4 @@ -package ddangkong.domain.question; +package ddangkong.domain.content; public enum Category { EXAMPLE, diff --git a/backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java b/backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java new file mode 100644 index 000000000..bd20d71cd --- /dev/null +++ b/backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java @@ -0,0 +1,10 @@ +package ddangkong.domain.content; + +import ddangkong.domain.room.RoomContent; +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface RoomContentRepository extends JpaRepository { + + Optional findTopByRoomIdOrderByCreatedAtDesc(Long roomId); +} diff --git a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java b/backend/src/main/java/ddangkong/domain/option/BalanceOption.java index 5fcc62d27..894e22e6b 100644 --- a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java +++ b/backend/src/main/java/ddangkong/domain/option/BalanceOption.java @@ -1,6 +1,6 @@ package ddangkong.domain.option; -import ddangkong.domain.question.BalanceQuestion; +import ddangkong.domain.content.BalanceContent; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -23,9 +23,9 @@ public class BalanceOption { private Long id; @Column(nullable = false) - private String content; + private String name; @ManyToOne(optional = false, fetch = FetchType.LAZY) - @JoinColumn(name = "balance_question_id", nullable = false) - private BalanceQuestion balanceQuestion; + @JoinColumn(name = "balance_content_id", nullable = false) + private BalanceContent balanceContent; } diff --git a/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java b/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java index 7209a1a78..7635ab607 100644 --- a/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java +++ b/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java @@ -1,10 +1,10 @@ package ddangkong.domain.option; -import ddangkong.domain.question.BalanceQuestion; +import ddangkong.domain.content.BalanceContent; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; public interface BalanceOptionRepository extends JpaRepository { - List findByBalanceQuestion(BalanceQuestion balanceQuestion); + List findByBalanceContent(BalanceContent balanceContent); } diff --git a/backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java b/backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java deleted file mode 100644 index 0006cf241..000000000 --- a/backend/src/main/java/ddangkong/domain/question/RoomQuestionRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package ddangkong.domain.question; - -import ddangkong.domain.room.RoomQuestion; -import java.util.Optional; -import org.springframework.data.jpa.repository.JpaRepository; - -public interface RoomQuestionRepository extends JpaRepository { - - Optional findTopByRoomIdOrderByCreatedAtDesc(Long roomId); -} diff --git a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java b/backend/src/main/java/ddangkong/domain/room/RoomContent.java similarity index 79% rename from backend/src/main/java/ddangkong/domain/room/RoomQuestion.java rename to backend/src/main/java/ddangkong/domain/room/RoomContent.java index e3283839d..b9508e77b 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomQuestion.java +++ b/backend/src/main/java/ddangkong/domain/room/RoomContent.java @@ -1,7 +1,7 @@ package ddangkong.domain.room; import ddangkong.domain.BaseEntity; -import ddangkong.domain.question.BalanceQuestion; +import ddangkong.domain.content.BalanceContent; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; @@ -16,7 +16,7 @@ @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter -public class RoomQuestion extends BaseEntity { +public class RoomContent extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -27,6 +27,6 @@ public class RoomQuestion extends BaseEntity { private Room room; @ManyToOne(optional = false, fetch = FetchType.LAZY) - @JoinColumn(name = "balance_question_id") - private BalanceQuestion balanceQuestion; + @JoinColumn(name = "balance_content_id") + private BalanceContent balanceContent; } diff --git a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java b/backend/src/main/java/ddangkong/service/content/BalanceContentService.java similarity index 60% rename from backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java rename to backend/src/main/java/ddangkong/service/content/BalanceContentService.java index 7ac45964c..a87ae3a40 100644 --- a/backend/src/main/java/ddangkong/service/question/BalanceQuestionService.java +++ b/backend/src/main/java/ddangkong/service/content/BalanceContentService.java @@ -1,10 +1,10 @@ -package ddangkong.service.question; +package ddangkong.service.content; -import ddangkong.controller.question.dto.BalanceQuestionResponse; +import ddangkong.controller.content.dto.BalanceContentResponse; import ddangkong.domain.option.BalanceOption; import ddangkong.domain.option.BalanceOptionRepository; -import ddangkong.domain.question.BalanceQuestion; -import ddangkong.domain.question.RoomQuestionRepository; +import ddangkong.domain.content.BalanceContent; +import ddangkong.domain.content.RoomContentRepository; import ddangkong.service.excpetion.BusinessLogicException; import ddangkong.service.excpetion.ViolateDataException; import java.util.List; @@ -14,34 +14,34 @@ @Service @RequiredArgsConstructor -public class BalanceQuestionService { +public class BalanceContentService { private static final int BALANCE_OPTION_SIZE = 2; - private final RoomQuestionRepository roomQuestionRepository; + private final RoomContentRepository roomContentRepository; private final BalanceOptionRepository balanceOptionRepository; @Transactional(readOnly = true) - public BalanceQuestionResponse findRecentBalanceQuestion(Long roomId) { - BalanceQuestion balanceQuestion = findRecentQuestion(roomId); - List balanceOptions = findBalanceOptions(balanceQuestion); + public BalanceContentResponse findRecentBalanceContent(Long roomId) { + BalanceContent balanceContent = findRecentContent(roomId); + List balanceOptions = findBalanceOptions(balanceContent); - return BalanceQuestionResponse.builder() - .question(balanceQuestion) + return BalanceContentResponse.builder() + .balanceContent(balanceContent) .firstOption(balanceOptions.get(0)) .secondOption(balanceOptions.get(1)) .build(); } - private BalanceQuestion findRecentQuestion(Long roomId) { - return roomQuestionRepository.findTopByRoomIdOrderByCreatedAtDesc(roomId) + private BalanceContent findRecentContent(Long roomId) { + return roomContentRepository.findTopByRoomIdOrderByCreatedAtDesc(roomId) .orElseThrow(() -> new BusinessLogicException("해당 방의 질문이 존재하지 않습니다.")) - .getBalanceQuestion(); + .getBalanceContent(); } - private List findBalanceOptions(BalanceQuestion balanceQuestion) { - List balanceOptions = balanceOptionRepository.findByBalanceQuestion(balanceQuestion); + private List findBalanceOptions(BalanceContent balanceContent) { + List balanceOptions = balanceOptionRepository.findByBalanceContent(balanceContent); validateBalanceOptions(balanceOptions); return balanceOptions; } diff --git a/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java b/backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java similarity index 63% rename from backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java rename to backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java index 96aa89c0f..99107635a 100644 --- a/backend/src/test/java/ddangkong/controller/question/BalanceQuestionControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java @@ -1,18 +1,18 @@ -package ddangkong.controller.question; +package ddangkong.controller.content; import static org.assertj.core.api.Assertions.assertThat; import ddangkong.controller.BaseControllerTest; import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.controller.question.dto.BalanceQuestionResponse; -import ddangkong.domain.question.Category; +import ddangkong.controller.content.dto.BalanceContentResponse; +import ddangkong.domain.content.Category; import io.restassured.RestAssured; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -class BalanceQuestionControllerTest extends BaseControllerTest { +class BalanceContentControllerTest extends BaseControllerTest { - private static final BalanceQuestionResponse EXPECTED_RESPONSE = new BalanceQuestionResponse( + private static final BalanceContentResponse EXPECTED_RESPONSE = new BalanceContentResponse( 1L, Category.EXAMPLE, "민초 vs 반민초", new BalanceOptionResponse(1L, "민초"), new BalanceOptionResponse(2L, "반민초")); @@ -22,11 +22,11 @@ class 방의_질문_조회 { @Test void 현재_방의_질문을_조회할_수_있다() { - BalanceQuestionResponse actual = RestAssured.given().log().all() + BalanceContentResponse actual = RestAssured.given().log().all() .when().get("/api/balances/rooms/1/question") .then().log().all() .statusCode(200) - .extract().as(BalanceQuestionResponse.class); + .extract().as(BalanceContentResponse.class); assertThat(actual).isEqualTo(EXPECTED_RESPONSE); } diff --git a/backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java b/backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java similarity index 68% rename from backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java rename to backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java index bd15ed56f..caffa0ddd 100644 --- a/backend/src/test/java/ddangkong/domain/question/RoomQuestionRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java @@ -1,9 +1,9 @@ -package ddangkong.domain.question; +package ddangkong.domain.content; import static org.assertj.core.api.Assertions.assertThat; import ddangkong.domain.BaseRepositoryTest; -import ddangkong.domain.room.RoomQuestion; +import ddangkong.domain.room.RoomContent; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -11,14 +11,14 @@ class RoomQuestionRepositoryTest extends BaseRepositoryTest { @Autowired - private RoomQuestionRepository roomQuestionRepository; + private RoomContentRepository roomContentRepository; @Nested class 방의_최신_질문_조회 { @Test void 방의_가장_최신의_질문을_조회할_수_있다() { - RoomQuestion actual = roomQuestionRepository.findTopByRoomIdOrderByCreatedAtDesc(1L).get(); + RoomContent actual = roomContentRepository.findTopByRoomIdOrderByCreatedAtDesc(1L).get(); assertThat(actual.getId()).isEqualTo(2L); } diff --git a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java b/backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java similarity index 56% rename from backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java rename to backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java index 3b30e2305..f398f3fd8 100644 --- a/backend/src/test/java/ddangkong/service/question/BalanceQuestionServiceTest.java +++ b/backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java @@ -1,42 +1,42 @@ -package ddangkong.service.question; +package ddangkong.service.content; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.controller.question.dto.BalanceQuestionResponse; -import ddangkong.domain.question.Category; +import ddangkong.controller.content.dto.BalanceContentResponse; +import ddangkong.domain.content.Category; import ddangkong.service.BaseServiceTest; import ddangkong.service.excpetion.BusinessLogicException; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -class BalanceQuestionServiceTest extends BaseServiceTest { +class BalanceContentServiceTest extends BaseServiceTest { private static final Long PROGRESS_ROOM_ID = 1L; private static final Long NOT_EXIST_ROOM_ID = 2L; - private static final BalanceQuestionResponse BALANCE_QUESTION_RESPONSE = new BalanceQuestionResponse( + private static final BalanceContentResponse BALANCE_CONTENT_RESPONSE = new BalanceContentResponse( 1L, Category.EXAMPLE, "민초 vs 반민초", new BalanceOptionResponse(1L, "민초"), new BalanceOptionResponse(2L, "반민초")); @Autowired - private BalanceQuestionService balanceQuestionService; + private BalanceContentService balanceContentService; @Nested - class 방의_최신_질문_조회 { + class 방의_최신_내용_조회 { @Test - void 방의_최신_질문을_조회할_수_있다() { - BalanceQuestionResponse actual = balanceQuestionService.findRecentBalanceQuestion(PROGRESS_ROOM_ID); + void 방의_최신_내용을_조회할_수_있다() { + BalanceContentResponse actual = balanceContentService.findRecentBalanceContent(PROGRESS_ROOM_ID); - assertThat(actual).isEqualTo(BALANCE_QUESTION_RESPONSE); + assertThat(actual).isEqualTo(BALANCE_CONTENT_RESPONSE); } @Test void 방이_없을_경우_예외를_던진다() { - assertThatThrownBy(() -> balanceQuestionService.findRecentBalanceQuestion(NOT_EXIST_ROOM_ID)) + assertThatThrownBy(() -> balanceContentService.findRecentBalanceContent(NOT_EXIST_ROOM_ID)) .isInstanceOf(BusinessLogicException.class) .hasMessage("해당 방의 질문이 존재하지 않습니다."); } diff --git a/backend/src/test/resources/init-test.sql b/backend/src/test/resources/init-test.sql index 71dbf94a8..90b21797b 100644 --- a/backend/src/test/resources/init-test.sql +++ b/backend/src/test/resources/init-test.sql @@ -2,30 +2,30 @@ SET REFERENTIAL_INTEGRITY FALSE; TRUNCATE TABLE member; TRUNCATE TABLE balance_option; -TRUNCATE TABLE balance_question; +TRUNCATE TABLE balance_content; TRUNCATE TABLE balance_vote; TRUNCATE TABLE room; -TRUNCATE TABLE room_question; +TRUNCATE TABLE room_content; ALTER TABLE member ALTER COLUMN ID RESTART WITH 1; ALTER TABLE balance_option ALTER COLUMN ID RESTART WITH 1; -ALTER TABLE balance_question ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE balance_content ALTER COLUMN ID RESTART WITH 1; ALTER TABLE balance_vote ALTER COLUMN ID RESTART WITH 1; ALTER TABLE room ALTER COLUMN ID RESTART WITH 1; -ALTER TABLE room_question ALTER COLUMN ID RESTART WITH 1; +ALTER TABLE room_content ALTER COLUMN ID RESTART WITH 1; INSERT INTO room() VALUES (); INSERT INTO member(nickname, room_id) -VALUES ('mohamedeu al katan', 1), ('deundeun ', 1), ('rupi', 1), ('rapper lee', 1); +VALUES ('mohamedeu al katan', 1), ('deundeun', 1), ('rupi', 1), ('rapper lee', 1); -INSERT INTO room_question(room_id, balance_question_id, created_at) +INSERT INTO room_content(room_id, balance_content_id, created_at) VALUES (1, 2, '2024-07-18 19:50:00.000'), (1, 1, '2024-07-18 20:00:00.000'); -INSERT INTO balance_question(category, content) +INSERT INTO balance_content(category, name) VALUES ('EXAMPLE', '민초 vs 반민초'), ('EXAMPLE', '월 200 백수 vs 월 500 직장인'); -INSERT INTO balance_option(content, balance_question_id) +INSERT INTO balance_option(name, balance_content_id) VALUES ('민초', 1), ('반민초', 1), ('월 200 백수', 2), ('월 200 직장인', 2); INSERT INTO balance_vote(balance_option_id, member_id) From 9e061d63b1be84f57738f1b1abf0b51279899344 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 13:10:46 +0900 Subject: [PATCH 16/23] =?UTF-8?q?fix:=20RoomContentRepository=EB=A5=BC=20r?= =?UTF-8?q?oom=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/{content => room}/RoomContentRepository.java | 2 +- .../ddangkong/service/content/BalanceContentService.java | 2 +- .../domain/{content => room}/RoomContentRepositoryTest.java | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) rename backend/src/main/java/ddangkong/domain/{content => room}/RoomContentRepository.java (89%) rename backend/src/test/java/ddangkong/domain/{content => room}/RoomContentRepositoryTest.java (81%) diff --git a/backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java b/backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java similarity index 89% rename from backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java rename to backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java index bd20d71cd..7f5c967bb 100644 --- a/backend/src/main/java/ddangkong/domain/content/RoomContentRepository.java +++ b/backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java @@ -1,4 +1,4 @@ -package ddangkong.domain.content; +package ddangkong.domain.room; import ddangkong.domain.room.RoomContent; import java.util.Optional; diff --git a/backend/src/main/java/ddangkong/service/content/BalanceContentService.java b/backend/src/main/java/ddangkong/service/content/BalanceContentService.java index a87ae3a40..90fec0e10 100644 --- a/backend/src/main/java/ddangkong/service/content/BalanceContentService.java +++ b/backend/src/main/java/ddangkong/service/content/BalanceContentService.java @@ -4,7 +4,7 @@ import ddangkong.domain.option.BalanceOption; import ddangkong.domain.option.BalanceOptionRepository; import ddangkong.domain.content.BalanceContent; -import ddangkong.domain.content.RoomContentRepository; +import ddangkong.domain.room.RoomContentRepository; import ddangkong.service.excpetion.BusinessLogicException; import ddangkong.service.excpetion.ViolateDataException; import java.util.List; diff --git a/backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java b/backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java similarity index 81% rename from backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java rename to backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java index caffa0ddd..a03a157ab 100644 --- a/backend/src/test/java/ddangkong/domain/content/RoomContentRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java @@ -1,14 +1,13 @@ -package ddangkong.domain.content; +package ddangkong.domain.room; import static org.assertj.core.api.Assertions.assertThat; import ddangkong.domain.BaseRepositoryTest; -import ddangkong.domain.room.RoomContent; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -class RoomQuestionRepositoryTest extends BaseRepositoryTest { +class RoomContentRepositoryTest extends BaseRepositoryTest { @Autowired private RoomContentRepository roomContentRepository; From 246538aa1ee2709efb8a0c20028fc8ac8ab73372 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:20:33 +0900 Subject: [PATCH 17/23] =?UTF-8?q?fix:=20=EC=84=9C=EB=B2=84=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=8B=9C,=20=EC=97=90=EB=9F=AC=20=EC=8A=A4?= =?UTF-8?q?=ED=83=9D=20=ED=8A=B8=EB=A0=88=EC=9D=B4=EC=8A=A4=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD,=20=EC=9D=BC=EB=B6=80=20`@ResponseStatus`=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/exception/GlobalExceptionHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java index 27def5ca9..1814c07e4 100644 --- a/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java +++ b/backend/src/main/java/ddangkong/controller/exception/GlobalExceptionHandler.java @@ -17,6 +17,7 @@ public class GlobalExceptionHandler { private static final String SERVER_ERROR_MESSAGE = "서버 오류가 발생했습니다. 관리자에게 문의하세요."; @ExceptionHandler + @ResponseStatus(HttpStatus.BAD_REQUEST) public ErrorResponse handleBindingException(BindException e) { log.warn(e.getMessage()); @@ -24,6 +25,7 @@ public ErrorResponse handleBindingException(BindException e) { } @ExceptionHandler + @ResponseStatus(HttpStatus.BAD_REQUEST) public ErrorResponse handleConstraintViolationException(ConstraintViolationException e) { log.warn(e.getMessage()); @@ -41,7 +43,7 @@ public ErrorResponse handleBusinessLogicException(BusinessLogicException e) { @ExceptionHandler @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ErrorResponse handleViolateDataException(ViolateDataException e) { - log.error(e.getMessage()); + log.error(e.getMessage(), e); return new ErrorResponse(SERVER_ERROR_MESSAGE); } @@ -49,7 +51,7 @@ public ErrorResponse handleViolateDataException(ViolateDataException e) { @ExceptionHandler @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ErrorResponse handleException(Exception e) { - log.error(e.getMessage()); + log.error(e.getMessage(), e); return new ErrorResponse(SERVER_ERROR_MESSAGE); } From b042859dd1aa64cd292e897cd17ad396462d0eac Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:27:44 +0900 Subject: [PATCH 18/23] =?UTF-8?q?refactor:=20balance=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/BalanceContentController.java | 6 +++--- .../content/dto/BalanceContentResponse.java | 10 +++++----- .../option/dto/BalanceOptionResponse.java | 4 ++-- .../domain/{ => balance}/content/BalanceContent.java | 2 +- .../domain/{ => balance}/content/Category.java | 2 +- .../domain/{room => balance/content}/Room.java | 2 +- .../{room => balance/content}/RoomContent.java | 3 +-- .../content}/RoomContentRepository.java | 3 +-- .../domain/{ => balance}/option/BalanceOption.java | 4 ++-- .../option/BalanceOptionRepository.java | 4 ++-- .../domain/{ => balance}/vote/BalanceVote.java | 4 ++-- .../main/java/ddangkong/domain/member/Member.java | 2 +- .../{ => balance}/content/BalanceContentService.java | 12 ++++++------ .../content/BalanceContentControllerTest.java | 8 ++++---- .../content}/RoomContentRepositoryTest.java | 2 +- .../content/BalanceContentServiceTest.java | 8 ++++---- 16 files changed, 37 insertions(+), 39 deletions(-) rename backend/src/main/java/ddangkong/controller/{ => balance}/content/BalanceContentController.java (78%) rename backend/src/main/java/ddangkong/controller/{ => balance}/content/dto/BalanceContentResponse.java (70%) rename backend/src/main/java/ddangkong/controller/{ => balance}/option/dto/BalanceOptionResponse.java (71%) rename backend/src/main/java/ddangkong/domain/{ => balance}/content/BalanceContent.java (94%) rename backend/src/main/java/ddangkong/domain/{ => balance}/content/Category.java (51%) rename backend/src/main/java/ddangkong/domain/{room => balance/content}/Room.java (90%) rename backend/src/main/java/ddangkong/domain/{room => balance/content}/RoomContent.java (91%) rename backend/src/main/java/ddangkong/domain/{room => balance/content}/RoomContentRepository.java (77%) rename backend/src/main/java/ddangkong/domain/{ => balance}/option/BalanceOption.java (89%) rename backend/src/main/java/ddangkong/domain/{ => balance}/option/BalanceOptionRepository.java (72%) rename backend/src/main/java/ddangkong/domain/{ => balance}/vote/BalanceVote.java (90%) rename backend/src/main/java/ddangkong/service/{ => balance}/content/BalanceContentService.java (84%) rename backend/src/test/java/ddangkong/controller/{ => balance}/content/BalanceContentControllerTest.java (81%) rename backend/src/test/java/ddangkong/domain/{room => balance/content}/RoomContentRepositoryTest.java (94%) rename backend/src/test/java/ddangkong/service/{ => balance}/content/BalanceContentServiceTest.java (86%) diff --git a/backend/src/main/java/ddangkong/controller/content/BalanceContentController.java b/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java similarity index 78% rename from backend/src/main/java/ddangkong/controller/content/BalanceContentController.java rename to backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java index 495d6752f..6bfaed6b0 100644 --- a/backend/src/main/java/ddangkong/controller/content/BalanceContentController.java +++ b/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java @@ -1,7 +1,7 @@ -package ddangkong.controller.content; +package ddangkong.controller.balance.content; -import ddangkong.controller.content.dto.BalanceContentResponse; -import ddangkong.service.content.BalanceContentService; +import ddangkong.controller.balance.content.dto.BalanceContentResponse; +import ddangkong.service.balance.content.BalanceContentService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; diff --git a/backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java b/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java similarity index 70% rename from backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java rename to backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java index 74c267707..c27445f9a 100644 --- a/backend/src/main/java/ddangkong/controller/content/dto/BalanceContentResponse.java +++ b/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java @@ -1,9 +1,9 @@ -package ddangkong.controller.content.dto; +package ddangkong.controller.balance.content.dto; -import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.domain.content.BalanceContent; -import ddangkong.domain.content.Category; -import ddangkong.domain.option.BalanceOption; +import ddangkong.controller.balance.option.dto.BalanceOptionResponse; +import ddangkong.domain.balance.content.BalanceContent; +import ddangkong.domain.balance.content.Category; +import ddangkong.domain.balance.option.BalanceOption; import lombok.Builder; public record BalanceContentResponse( diff --git a/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java b/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java similarity index 71% rename from backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java rename to backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java index 665562cda..0005c15d5 100644 --- a/backend/src/main/java/ddangkong/controller/option/dto/BalanceOptionResponse.java +++ b/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java @@ -1,6 +1,6 @@ -package ddangkong.controller.option.dto; +package ddangkong.controller.balance.option.dto; -import ddangkong.domain.option.BalanceOption; +import ddangkong.domain.balance.option.BalanceOption; public record BalanceOptionResponse( Long optionId, diff --git a/backend/src/main/java/ddangkong/domain/content/BalanceContent.java b/backend/src/main/java/ddangkong/domain/balance/content/BalanceContent.java similarity index 94% rename from backend/src/main/java/ddangkong/domain/content/BalanceContent.java rename to backend/src/main/java/ddangkong/domain/balance/content/BalanceContent.java index bb2238210..5fb9026c3 100644 --- a/backend/src/main/java/ddangkong/domain/content/BalanceContent.java +++ b/backend/src/main/java/ddangkong/domain/balance/content/BalanceContent.java @@ -1,4 +1,4 @@ -package ddangkong.domain.content; +package ddangkong.domain.balance.content; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/backend/src/main/java/ddangkong/domain/content/Category.java b/backend/src/main/java/ddangkong/domain/balance/content/Category.java similarity index 51% rename from backend/src/main/java/ddangkong/domain/content/Category.java rename to backend/src/main/java/ddangkong/domain/balance/content/Category.java index ba69a0a07..07a510c27 100644 --- a/backend/src/main/java/ddangkong/domain/content/Category.java +++ b/backend/src/main/java/ddangkong/domain/balance/content/Category.java @@ -1,4 +1,4 @@ -package ddangkong.domain.content; +package ddangkong.domain.balance.content; public enum Category { EXAMPLE, diff --git a/backend/src/main/java/ddangkong/domain/room/Room.java b/backend/src/main/java/ddangkong/domain/balance/content/Room.java similarity index 90% rename from backend/src/main/java/ddangkong/domain/room/Room.java rename to backend/src/main/java/ddangkong/domain/balance/content/Room.java index 9f8b1bd0f..7dd029e80 100644 --- a/backend/src/main/java/ddangkong/domain/room/Room.java +++ b/backend/src/main/java/ddangkong/domain/balance/content/Room.java @@ -1,4 +1,4 @@ -package ddangkong.domain.room; +package ddangkong.domain.balance.content; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; diff --git a/backend/src/main/java/ddangkong/domain/room/RoomContent.java b/backend/src/main/java/ddangkong/domain/balance/content/RoomContent.java similarity index 91% rename from backend/src/main/java/ddangkong/domain/room/RoomContent.java rename to backend/src/main/java/ddangkong/domain/balance/content/RoomContent.java index b9508e77b..3f99b1f84 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomContent.java +++ b/backend/src/main/java/ddangkong/domain/balance/content/RoomContent.java @@ -1,7 +1,6 @@ -package ddangkong.domain.room; +package ddangkong.domain.balance.content; import ddangkong.domain.BaseEntity; -import ddangkong.domain.content.BalanceContent; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; diff --git a/backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java b/backend/src/main/java/ddangkong/domain/balance/content/RoomContentRepository.java similarity index 77% rename from backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java rename to backend/src/main/java/ddangkong/domain/balance/content/RoomContentRepository.java index 7f5c967bb..ea9f4ce27 100644 --- a/backend/src/main/java/ddangkong/domain/room/RoomContentRepository.java +++ b/backend/src/main/java/ddangkong/domain/balance/content/RoomContentRepository.java @@ -1,6 +1,5 @@ -package ddangkong.domain.room; +package ddangkong.domain.balance.content; -import ddangkong.domain.room.RoomContent; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java b/backend/src/main/java/ddangkong/domain/balance/option/BalanceOption.java similarity index 89% rename from backend/src/main/java/ddangkong/domain/option/BalanceOption.java rename to backend/src/main/java/ddangkong/domain/balance/option/BalanceOption.java index 894e22e6b..bc65918d6 100644 --- a/backend/src/main/java/ddangkong/domain/option/BalanceOption.java +++ b/backend/src/main/java/ddangkong/domain/balance/option/BalanceOption.java @@ -1,6 +1,6 @@ -package ddangkong.domain.option; +package ddangkong.domain.balance.option; -import ddangkong.domain.content.BalanceContent; +import ddangkong.domain.balance.content.BalanceContent; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java b/backend/src/main/java/ddangkong/domain/balance/option/BalanceOptionRepository.java similarity index 72% rename from backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java rename to backend/src/main/java/ddangkong/domain/balance/option/BalanceOptionRepository.java index 7635ab607..10d886be5 100644 --- a/backend/src/main/java/ddangkong/domain/option/BalanceOptionRepository.java +++ b/backend/src/main/java/ddangkong/domain/balance/option/BalanceOptionRepository.java @@ -1,6 +1,6 @@ -package ddangkong.domain.option; +package ddangkong.domain.balance.option; -import ddangkong.domain.content.BalanceContent; +import ddangkong.domain.balance.content.BalanceContent; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java b/backend/src/main/java/ddangkong/domain/balance/vote/BalanceVote.java similarity index 90% rename from backend/src/main/java/ddangkong/domain/vote/BalanceVote.java rename to backend/src/main/java/ddangkong/domain/balance/vote/BalanceVote.java index ec09a2a46..981d37155 100644 --- a/backend/src/main/java/ddangkong/domain/vote/BalanceVote.java +++ b/backend/src/main/java/ddangkong/domain/balance/vote/BalanceVote.java @@ -1,7 +1,7 @@ -package ddangkong.domain.vote; +package ddangkong.domain.balance.vote; +import ddangkong.domain.balance.option.BalanceOption; import ddangkong.domain.member.Member; -import ddangkong.domain.option.BalanceOption; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; diff --git a/backend/src/main/java/ddangkong/domain/member/Member.java b/backend/src/main/java/ddangkong/domain/member/Member.java index 9d4e59c5a..efedc670b 100644 --- a/backend/src/main/java/ddangkong/domain/member/Member.java +++ b/backend/src/main/java/ddangkong/domain/member/Member.java @@ -1,6 +1,6 @@ package ddangkong.domain.member; -import ddangkong.domain.room.Room; +import ddangkong.domain.balance.content.Room; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/backend/src/main/java/ddangkong/service/content/BalanceContentService.java b/backend/src/main/java/ddangkong/service/balance/content/BalanceContentService.java similarity index 84% rename from backend/src/main/java/ddangkong/service/content/BalanceContentService.java rename to backend/src/main/java/ddangkong/service/balance/content/BalanceContentService.java index 90fec0e10..a3a4b6114 100644 --- a/backend/src/main/java/ddangkong/service/content/BalanceContentService.java +++ b/backend/src/main/java/ddangkong/service/balance/content/BalanceContentService.java @@ -1,10 +1,10 @@ -package ddangkong.service.content; +package ddangkong.service.balance.content; -import ddangkong.controller.content.dto.BalanceContentResponse; -import ddangkong.domain.option.BalanceOption; -import ddangkong.domain.option.BalanceOptionRepository; -import ddangkong.domain.content.BalanceContent; -import ddangkong.domain.room.RoomContentRepository; +import ddangkong.controller.balance.content.dto.BalanceContentResponse; +import ddangkong.domain.balance.content.BalanceContent; +import ddangkong.domain.balance.content.RoomContentRepository; +import ddangkong.domain.balance.option.BalanceOption; +import ddangkong.domain.balance.option.BalanceOptionRepository; import ddangkong.service.excpetion.BusinessLogicException; import ddangkong.service.excpetion.ViolateDataException; import java.util.List; diff --git a/backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java similarity index 81% rename from backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java rename to backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java index 99107635a..b38df8c00 100644 --- a/backend/src/test/java/ddangkong/controller/content/BalanceContentControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java @@ -1,11 +1,11 @@ -package ddangkong.controller.content; +package ddangkong.controller.balance.content; import static org.assertj.core.api.Assertions.assertThat; import ddangkong.controller.BaseControllerTest; -import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.controller.content.dto.BalanceContentResponse; -import ddangkong.domain.content.Category; +import ddangkong.controller.balance.content.dto.BalanceContentResponse; +import ddangkong.controller.balance.option.dto.BalanceOptionResponse; +import ddangkong.domain.balance.content.Category; import io.restassured.RestAssured; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; diff --git a/backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java b/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java similarity index 94% rename from backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java rename to backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java index a03a157ab..fc940a0da 100644 --- a/backend/src/test/java/ddangkong/domain/room/RoomContentRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java @@ -1,4 +1,4 @@ -package ddangkong.domain.room; +package ddangkong.domain.balance.content; import static org.assertj.core.api.Assertions.assertThat; diff --git a/backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java similarity index 86% rename from backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java rename to backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java index f398f3fd8..d673cab38 100644 --- a/backend/src/test/java/ddangkong/service/content/BalanceContentServiceTest.java +++ b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java @@ -1,11 +1,11 @@ -package ddangkong.service.content; +package ddangkong.service.balance.content; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import ddangkong.controller.option.dto.BalanceOptionResponse; -import ddangkong.controller.content.dto.BalanceContentResponse; -import ddangkong.domain.content.Category; +import ddangkong.controller.balance.content.dto.BalanceContentResponse; +import ddangkong.controller.balance.option.dto.BalanceOptionResponse; +import ddangkong.domain.balance.content.Category; import ddangkong.service.BaseServiceTest; import ddangkong.service.excpetion.BusinessLogicException; import org.junit.jupiter.api.Nested; From 3d5b963d8820bbfce8258d12dac64838cd0a53f4 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:33:02 +0900 Subject: [PATCH 19/23] =?UTF-8?q?fix:=20API=20=EB=AA=85=EC=84=B8=EC=84=9C?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=98=EC=98=81=ED=95=98=EC=97=AC=20Response=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/content/dto/BalanceContentResponse.java | 4 ++-- .../controller/balance/option/dto/BalanceOptionResponse.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java b/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java index c27445f9a..66543da91 100644 --- a/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java +++ b/backend/src/main/java/ddangkong/controller/balance/content/dto/BalanceContentResponse.java @@ -7,9 +7,9 @@ import lombok.Builder; public record BalanceContentResponse( - Long questionId, + Long contentId, Category category, - String title, + String question, BalanceOptionResponse firstOption, BalanceOptionResponse secondOption ) { diff --git a/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java b/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java index 0005c15d5..a2c0f7883 100644 --- a/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java +++ b/backend/src/main/java/ddangkong/controller/balance/option/dto/BalanceOptionResponse.java @@ -4,7 +4,7 @@ public record BalanceOptionResponse( Long optionId, - String content + String name ) { public static BalanceOptionResponse from(BalanceOption balanceOption) { return new BalanceOptionResponse(balanceOption.getId(), balanceOption.getName()); From 112e91b93c2bf3d991fc2994671bad26eb6f4328 Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:47:26 +0900 Subject: [PATCH 20/23] =?UTF-8?q?feat:=20BalanceContentController=20roomId?= =?UTF-8?q?=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/content/BalanceContentController.java | 5 ++++- .../balance/content/BalanceContentControllerTest.java | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java b/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java index 6bfaed6b0..2a040f5aa 100644 --- a/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java +++ b/backend/src/main/java/ddangkong/controller/balance/content/BalanceContentController.java @@ -2,7 +2,9 @@ import ddangkong.controller.balance.content.dto.BalanceContentResponse; import ddangkong.service.balance.content.BalanceContentService; +import jakarta.validation.constraints.Positive; import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -10,13 +12,14 @@ @RestController @RequestMapping("/api") +@Validated @RequiredArgsConstructor public class BalanceContentController { private final BalanceContentService balanceContentService; @GetMapping("/balances/rooms/{roomId}/question") - public BalanceContentResponse getBalanceContent(@PathVariable Long roomId) { + public BalanceContentResponse getBalanceContent(@PathVariable @Positive Long roomId) { return balanceContentService.findRecentBalanceContent(roomId); } } diff --git a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java index b38df8c00..b7a6fdc78 100644 --- a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java @@ -30,5 +30,13 @@ class 방의_질문_조회 { assertThat(actual).isEqualTo(EXPECTED_RESPONSE); } + + @Test + void 방의_식별자가_음수인_경우_예외를_던진다() { + RestAssured.given().log().all() + .when().get("/api/balances/rooms/-1/question") + .then().log().all() + .statusCode(400); + } } } From 39691e10c2e08737f6688f84bd4b0a3a483f32cc Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:48:36 +0900 Subject: [PATCH 21/23] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EB=AA=85=ED=99=95=ED=95=98=EA=B2=8C=20=EC=84=A4?= =?UTF-8?q?=EB=AA=85=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=B4,=20Nested=20cl?= =?UTF-8?q?ass=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../balance/content/BalanceContentControllerTest.java | 2 +- .../service/balance/content/BalanceContentServiceTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java index b7a6fdc78..16fe63bb7 100644 --- a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java @@ -18,7 +18,7 @@ class BalanceContentControllerTest extends BaseControllerTest { new BalanceOptionResponse(2L, "반민초")); @Nested - class 방의_질문_조회 { + class 현재_방의_내용_조회 { @Test void 현재_방의_질문을_조회할_수_있다() { diff --git a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java index d673cab38..ec13bc3ba 100644 --- a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java +++ b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java @@ -25,7 +25,7 @@ class BalanceContentServiceTest extends BaseServiceTest { private BalanceContentService balanceContentService; @Nested - class 방의_최신_내용_조회 { + class 현재_방의_내용_조회 { @Test void 방의_최신_내용을_조회할_수_있다() { From b7ba2f49c6af9395a539c919d8fea537672fb61d Mon Sep 17 00:00:00 2001 From: "DESKTOP-E5VRH4Q\\cnddk" Date: Mon, 22 Jul 2024 17:53:24 +0900 Subject: [PATCH 22/23] =?UTF-8?q?test:=20given,=20when,=20then=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EC=B6=94=EA=B0=80=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/BalanceContentControllerTest.java | 13 ++++++++----- .../balance/content/RoomContentRepositoryTest.java | 7 ++++++- .../balance/content/BalanceContentServiceTest.java | 3 +++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java index 16fe63bb7..67d24b7d6 100644 --- a/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java +++ b/backend/src/test/java/ddangkong/controller/balance/content/BalanceContentControllerTest.java @@ -12,27 +12,30 @@ class BalanceContentControllerTest extends BaseControllerTest { - private static final BalanceContentResponse EXPECTED_RESPONSE = new BalanceContentResponse( - 1L, Category.EXAMPLE, "민초 vs 반민초", - new BalanceOptionResponse(1L, "민초"), - new BalanceOptionResponse(2L, "반민초")); - @Nested class 현재_방의_내용_조회 { + private static final BalanceContentResponse EXPECTED_RESPONSE = new BalanceContentResponse( + 1L, Category.EXAMPLE, "민초 vs 반민초", + new BalanceOptionResponse(1L, "민초"), + new BalanceOptionResponse(2L, "반민초")); + @Test void 현재_방의_질문을_조회할_수_있다() { + // when BalanceContentResponse actual = RestAssured.given().log().all() .when().get("/api/balances/rooms/1/question") .then().log().all() .statusCode(200) .extract().as(BalanceContentResponse.class); + // then assertThat(actual).isEqualTo(EXPECTED_RESPONSE); } @Test void 방의_식별자가_음수인_경우_예외를_던진다() { + // when & then RestAssured.given().log().all() .when().get("/api/balances/rooms/-1/question") .then().log().all() diff --git a/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java b/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java index fc940a0da..67af2b4ec 100644 --- a/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java +++ b/backend/src/test/java/ddangkong/domain/balance/content/RoomContentRepositoryTest.java @@ -17,8 +17,13 @@ class 방의_최신_질문_조회 { @Test void 방의_가장_최신의_질문을_조회할_수_있다() { - RoomContent actual = roomContentRepository.findTopByRoomIdOrderByCreatedAtDesc(1L).get(); + // given + Long recentContentId = 1L; + // when + RoomContent actual = roomContentRepository.findTopByRoomIdOrderByCreatedAtDesc(recentContentId).get(); + + // then assertThat(actual.getId()).isEqualTo(2L); } } diff --git a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java index ec13bc3ba..9831c7668 100644 --- a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java +++ b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java @@ -29,13 +29,16 @@ class 현재_방의_내용_조회 { @Test void 방의_최신_내용을_조회할_수_있다() { + // when BalanceContentResponse actual = balanceContentService.findRecentBalanceContent(PROGRESS_ROOM_ID); + // then assertThat(actual).isEqualTo(BALANCE_CONTENT_RESPONSE); } @Test void 방이_없을_경우_예외를_던진다() { + // when & then assertThatThrownBy(() -> balanceContentService.findRecentBalanceContent(NOT_EXIST_ROOM_ID)) .isInstanceOf(BusinessLogicException.class) .hasMessage("해당 방의 질문이 존재하지 않습니다."); From 2cc24729c20aa2356ea3ca57c6b435a39c3c0677 Mon Sep 17 00:00:00 2001 From: leegwichan Date: Mon, 22 Jul 2024 23:30:54 +0900 Subject: [PATCH 23/23] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EB=B3=80=EA=B2=BD=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 테스트가 어떤 도메인인지 드러나도록 변경 --- .../service/balance/content/BalanceContentServiceTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java index 9831c7668..fc87fda26 100644 --- a/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java +++ b/backend/src/test/java/ddangkong/service/balance/content/BalanceContentServiceTest.java @@ -25,10 +25,10 @@ class BalanceContentServiceTest extends BaseServiceTest { private BalanceContentService balanceContentService; @Nested - class 현재_방의_내용_조회 { + class 현재_방의_밸런스_게임_내용_조회 { @Test - void 방의_최신_내용을_조회할_수_있다() { + void 방의_최신_밸런스_게임_내용을_조회할_수_있다() { // when BalanceContentResponse actual = balanceContentService.findRecentBalanceContent(PROGRESS_ROOM_ID);