diff --git a/src/main/java/com/somemore/center/dto/response/CenterForCommunityResponseDto.java b/src/main/java/com/somemore/center/dto/response/CenterForCommunityResponseDto.java
deleted file mode 100644
index 37a0683f4..000000000
--- a/src/main/java/com/somemore/center/dto/response/CenterForCommunityResponseDto.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.somemore.center.dto.response;
-
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import com.somemore.center.domain.Center;
-import com.somemore.community.dto.response.WriterDetailDto;
-import com.somemore.volunteer.domain.Tier;
-
-import java.util.UUID;
-
-@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
-public record CenterForCommunityResponseDto(
- UUID id,
- String name,
- String imgUrl,
- Tier tier
-) implements WriterDetailDto {
-
- public static CenterForCommunityResponseDto fromEntity(Center center) {
- return new CenterForCommunityResponseDto(
- center.getId(),
- center.getName(),
- center.getImgUrl(),
- null
- );
- }
-}
-
diff --git a/src/main/java/com/somemore/center/repository/CenterRepository.java b/src/main/java/com/somemore/center/repository/CenterRepository.java
index 406a01126..946553a08 100644
--- a/src/main/java/com/somemore/center/repository/CenterRepository.java
+++ b/src/main/java/com/somemore/center/repository/CenterRepository.java
@@ -14,6 +14,5 @@ default boolean doesNotExistById(UUID id) {
return !existsById(id);
}
Optional
findCenterById(UUID id);
- String findNameById(UUID id);
void deleteAllInBatch();
}
diff --git a/src/main/java/com/somemore/center/repository/CenterRepositoryImpl.java b/src/main/java/com/somemore/center/repository/CenterRepositoryImpl.java
index 4fb68911d..67224b14f 100644
--- a/src/main/java/com/somemore/center/repository/CenterRepositoryImpl.java
+++ b/src/main/java/com/somemore/center/repository/CenterRepositoryImpl.java
@@ -1,8 +1,6 @@
package com.somemore.center.repository;
-import com.querydsl.jpa.impl.JPAQueryFactory;
import com.somemore.center.domain.Center;
-import com.somemore.center.domain.QCenter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
@@ -14,7 +12,6 @@
public class CenterRepositoryImpl implements CenterRepository {
private final CenterJpaRepository centerJpaRepository;
- private final JPAQueryFactory queryFactory;
@Override
public Center save(Center center) {
@@ -31,17 +28,6 @@ public Optional findCenterById(UUID id) {
return centerJpaRepository.findCenterById(id);
}
- @Override
- public String findNameById(UUID id) {
- QCenter center = QCenter.center;
-
- return queryFactory
- .select(center.name)
- .from(center)
- .where(center.id.eq(id))
- .fetchOne();
- }
-
@Override
public void deleteAllInBatch() {
centerJpaRepository.deleteAllInBatch();
diff --git a/src/main/java/com/somemore/center/service/query/CenterQueryService.java b/src/main/java/com/somemore/center/service/query/CenterQueryService.java
index c208052b9..29f0cfc4e 100644
--- a/src/main/java/com/somemore/center/service/query/CenterQueryService.java
+++ b/src/main/java/com/somemore/center/service/query/CenterQueryService.java
@@ -1,7 +1,6 @@
package com.somemore.center.service.query;
import com.somemore.center.domain.Center;
-import com.somemore.center.dto.response.CenterForCommunityResponseDto;
import com.somemore.center.dto.response.CenterProfileResponseDto;
import com.somemore.center.dto.response.PreferItemResponseDto;
import com.somemore.center.repository.CenterRepository;
@@ -45,15 +44,4 @@ private Center getCenterById(UUID centerId) {
return centerRepository.findCenterById(centerId)
.orElseThrow(() -> new BadRequestException(NOT_EXISTS_CENTER.getMessage()));
}
-
- @Override
- public String getNameById(UUID id) {
- return centerRepository.findNameById(id);
- }
-
- @Override
- public CenterForCommunityResponseDto getCenterDetailForCommunity(UUID id) {
- Center center = getCenterById(id);
- return CenterForCommunityResponseDto.fromEntity(center);
- }
}
diff --git a/src/main/java/com/somemore/center/usecase/query/CenterQueryUseCase.java b/src/main/java/com/somemore/center/usecase/query/CenterQueryUseCase.java
index 68aafc007..7c12cb28c 100644
--- a/src/main/java/com/somemore/center/usecase/query/CenterQueryUseCase.java
+++ b/src/main/java/com/somemore/center/usecase/query/CenterQueryUseCase.java
@@ -1,6 +1,5 @@
package com.somemore.center.usecase.query;
-import com.somemore.center.dto.response.CenterForCommunityResponseDto;
import com.somemore.center.dto.response.CenterProfileResponseDto;
import java.util.UUID;
@@ -9,6 +8,4 @@ public interface CenterQueryUseCase {
CenterProfileResponseDto getCenterProfileByCenterId(UUID centerId);
void validateCenterExists(UUID centerId);
- String getNameById(UUID id);
- CenterForCommunityResponseDto getCenterDetailForCommunity(UUID id);
}
diff --git a/src/main/java/com/somemore/community/domain/CommunityBoardView.java b/src/main/java/com/somemore/community/domain/CommunityBoardView.java
new file mode 100644
index 000000000..01cbd31a9
--- /dev/null
+++ b/src/main/java/com/somemore/community/domain/CommunityBoardView.java
@@ -0,0 +1,6 @@
+package com.somemore.community.domain;
+
+public record CommunityBoardView(
+ CommunityBoard communityBoard,
+ String writerNickname) {
+}
diff --git a/src/main/java/com/somemore/community/dto/response/CommunityBoardGetDetailResponseDto.java b/src/main/java/com/somemore/community/dto/response/CommunityBoardGetDetailResponseDto.java
index c14231a3c..b9a0f69f4 100644
--- a/src/main/java/com/somemore/community/dto/response/CommunityBoardGetDetailResponseDto.java
+++ b/src/main/java/com/somemore/community/dto/response/CommunityBoardGetDetailResponseDto.java
@@ -5,26 +5,27 @@
import com.somemore.community.domain.CommunityBoard;
import java.time.LocalDateTime;
+import java.util.UUID;
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public record CommunityBoardGetDetailResponseDto(
Long id,
+ UUID writerId,
String title,
String content,
String imageUrl,
LocalDateTime createdAt,
- LocalDateTime updatedAt,
- WriterDetailDto writerDetailDto
+ LocalDateTime updatedAt
) {
- public static CommunityBoardGetDetailResponseDto fromEntity(CommunityBoard board, WriterDetailDto writer) {
+ public static CommunityBoardGetDetailResponseDto fromEntity(CommunityBoard board) {
return new CommunityBoardGetDetailResponseDto(
board.getId(),
+ board.getWriterId(),
board.getTitle(),
board.getContent(),
board.getImgUrl(),
board.getCreatedAt(),
- board.getUpdatedAt(),
- writer
+ board.getUpdatedAt()
);
}
}
\ No newline at end of file
diff --git a/src/main/java/com/somemore/community/dto/response/CommunityBoardGetResponseDto.java b/src/main/java/com/somemore/community/dto/response/CommunityBoardGetResponseDto.java
index 112b59e08..30f5400c8 100644
--- a/src/main/java/com/somemore/community/dto/response/CommunityBoardGetResponseDto.java
+++ b/src/main/java/com/somemore/community/dto/response/CommunityBoardGetResponseDto.java
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import com.somemore.community.domain.CommunityBoard;
+import com.somemore.community.domain.CommunityBoardView;
import java.time.LocalDateTime;
@@ -13,12 +13,12 @@ public record CommunityBoardGetResponseDto(
String writerNickname,
LocalDateTime createdAt
) {
- public static CommunityBoardGetResponseDto fromEntity(CommunityBoard board, String writerNickname) {
+ public static CommunityBoardGetResponseDto fromEntity(CommunityBoardView board) {
return new CommunityBoardGetResponseDto(
- board.getId(),
- board.getTitle(),
- writerNickname,
- board.getCreatedAt()
+ board.communityBoard().getId(),
+ board.communityBoard().getTitle(),
+ board.writerNickname(),
+ board.communityBoard().getCreatedAt()
);
}
}
diff --git a/src/main/java/com/somemore/community/dto/response/WriterDetailDto.java b/src/main/java/com/somemore/community/dto/response/WriterDetailDto.java
deleted file mode 100644
index ee32de949..000000000
--- a/src/main/java/com/somemore/community/dto/response/WriterDetailDto.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.somemore.community.dto.response;
-
-import com.somemore.volunteer.domain.Tier;
-
-import java.util.UUID;
-
-public interface WriterDetailDto {
- UUID id();
- String name();
- String imgUrl();
- Tier tier();
-}
diff --git a/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java b/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java
index ccb3a9d07..f7df7bbd5 100644
--- a/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java
+++ b/src/main/java/com/somemore/community/repository/CommunityBoardRepository.java
@@ -1,6 +1,7 @@
package com.somemore.community.repository;
import com.somemore.community.domain.CommunityBoard;
+import com.somemore.community.domain.CommunityBoardView;
import java.util.List;
import java.util.Optional;
@@ -9,7 +10,7 @@
public interface CommunityBoardRepository {
CommunityBoard save(CommunityBoard communityBoard);
Optional findById(Long id);
- List getCommunityBoards();
- List findByWriterId(UUID writerId);
+ List getCommunityBoards();
+ List findByWriterId(UUID writerId);
void deleteAllInBatch();
}
diff --git a/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java b/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java
index 8393474bc..26ec5360e 100644
--- a/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java
+++ b/src/main/java/com/somemore/community/repository/CommunityRepositoryImpl.java
@@ -1,8 +1,12 @@
package com.somemore.community.repository;
+import com.querydsl.core.types.Projections;
+import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.somemore.community.domain.CommunityBoard;
+import com.somemore.community.domain.CommunityBoardView;
import com.somemore.community.domain.QCommunityBoard;
+import com.somemore.volunteer.domain.QVolunteer;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
@@ -34,29 +38,34 @@ public Optional findById(Long id) {
}
@Override
- public List getCommunityBoards() {
- QCommunityBoard communityBoard = QCommunityBoard.communityBoard;
-
- return queryFactory
- .selectFrom(communityBoard)
- .where(communityBoard.deleted.eq(false))
- .orderBy(communityBoard.createdAt.desc())
+ public List getCommunityBoards() {
+ return getCommunityBoardsQuery()
+ .where(QCommunityBoard.communityBoard.deleted.eq(false))
.fetch();
}
@Override
- public List findByWriterId(UUID writerId) {
+ public List findByWriterId(UUID writerId) {
+ return getCommunityBoardsQuery()
+ .where(QCommunityBoard.communityBoard.writerId.eq(writerId)
+ .and(QCommunityBoard.communityBoard.deleted.eq(false)))
+ .fetch();
+ }
+
+ private JPAQuery getCommunityBoardsQuery() {
QCommunityBoard communityBoard = QCommunityBoard.communityBoard;
+ QVolunteer volunteer = QVolunteer.volunteer;
return queryFactory
- .selectFrom(communityBoard)
- .where(communityBoard.writerId.eq(writerId)
- .and(communityBoard.deleted.eq(false))
- )
- .orderBy(communityBoard.createdAt.desc())
- .fetch();
+ .select(Projections.constructor(CommunityBoardView.class,
+ communityBoard,
+ volunteer.nickname))
+ .from(communityBoard)
+ .join(volunteer).on(communityBoard.writerId.eq(volunteer.id))
+ .orderBy(communityBoard.createdAt.desc());
}
+
@Override
public void deleteAllInBatch() {
communityBoardJpaRepository.deleteAllInBatch();
diff --git a/src/main/java/com/somemore/community/service/CommunityBoardQueryService.java b/src/main/java/com/somemore/community/service/CommunityBoardQueryService.java
index aca97f3f7..e451949ff 100644
--- a/src/main/java/com/somemore/community/service/CommunityBoardQueryService.java
+++ b/src/main/java/com/somemore/community/service/CommunityBoardQueryService.java
@@ -1,79 +1,51 @@
package com.somemore.community.service;
-import com.somemore.center.usecase.query.CenterQueryUseCase;
import com.somemore.community.domain.CommunityBoard;
+import com.somemore.community.domain.CommunityBoardView;
import com.somemore.community.dto.response.CommunityBoardGetDetailResponseDto;
import com.somemore.community.dto.response.CommunityBoardGetResponseDto;
-import com.somemore.community.dto.response.WriterDetailDto;
import com.somemore.community.repository.CommunityBoardRepository;
import com.somemore.community.usecase.CommunityBoardQueryUseCase;
import com.somemore.global.exception.BadRequestException;
-import com.somemore.volunteer.dto.response.VolunteerForCommunityResponseDto;
-import com.somemore.volunteer.usecase.FindVolunteerIdUseCase;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.UUID;
+import java.util.function.Function;
import static com.somemore.global.exception.ExceptionMessage.NOT_EXISTS_COMMUNITY_BOARD;
-
@RequiredArgsConstructor
@Transactional(readOnly = true)
@Service
public class CommunityBoardQueryService implements CommunityBoardQueryUseCase {
private final CommunityBoardRepository communityBoardRepository;
- private final CenterQueryUseCase centerQueryUseCase;
- private final FindVolunteerIdUseCase findVolunteerIdUseCase;
@Override
public List getCommunityBoards() {
- List boards = communityBoardRepository.getCommunityBoards();
-
- return boards.stream()
- .map(board -> {
- String writerNickname = getWriterNickname(board.getWriterId());
- return CommunityBoardGetResponseDto.fromEntity(board, writerNickname);
- })
- .toList();
+ List boards = communityBoardRepository.getCommunityBoards();
+ return mapEntitiesToDtos(boards, CommunityBoardGetResponseDto::fromEntity);
}
@Override
public List getCommunityBoardsByWriterId(UUID writerId) {
- List boards = communityBoardRepository.findByWriterId(writerId);
- String writerNickname = getWriterNickname(writerId);
-
- return boards.stream()
- .map(board -> CommunityBoardGetResponseDto.fromEntity(board, writerNickname))
- .toList();
+ List boards = communityBoardRepository.findByWriterId(writerId);
+ return mapEntitiesToDtos(boards, CommunityBoardGetResponseDto::fromEntity);
}
@Override
public CommunityBoardGetDetailResponseDto getCommunityBoardDetail(Long id) {
CommunityBoard board = communityBoardRepository.findById(id)
.orElseThrow(() -> new BadRequestException(NOT_EXISTS_COMMUNITY_BOARD.getMessage()));
-
- return CommunityBoardGetDetailResponseDto.fromEntity(board, getWriterDetail(board.getWriterId()));
+ return CommunityBoardGetDetailResponseDto.fromEntity(board);
}
- private String getWriterNickname(UUID writerId) {
- String nickname = findVolunteerIdUseCase.getNicknameById(writerId);
-
- if (nickname == null) {
- nickname = centerQueryUseCase.getNameById(writerId);
- }
- return nickname;
- }
-
- private WriterDetailDto getWriterDetail(UUID writerId) {
- VolunteerForCommunityResponseDto volunteer = findVolunteerIdUseCase.getVolunteerDetailForCommunity(writerId);
-
- if (volunteer == null) {
- return centerQueryUseCase.getCenterDetailForCommunity(writerId);
- }
- return volunteer;
+ private List mapEntitiesToDtos(List entities, Function mapper) {
+ return entities.stream()
+ .map(mapper)
+ .toList();
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/somemore/volunteer/dto/response/VolunteerForCommunityResponseDto.java b/src/main/java/com/somemore/volunteer/dto/response/VolunteerForCommunityResponseDto.java
deleted file mode 100644
index 662d6fe07..000000000
--- a/src/main/java/com/somemore/volunteer/dto/response/VolunteerForCommunityResponseDto.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.somemore.volunteer.dto.response;
-
-import com.fasterxml.jackson.databind.PropertyNamingStrategies;
-import com.fasterxml.jackson.databind.annotation.JsonNaming;
-import com.somemore.community.dto.response.WriterDetailDto;
-import com.somemore.volunteer.domain.Tier;
-import com.somemore.volunteer.domain.Volunteer;
-
-import java.util.UUID;
-
-@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
-public record VolunteerForCommunityResponseDto(
- UUID id,
- String name,
- String imgUrl,
- Tier tier
-) implements WriterDetailDto {
-
- public static VolunteerForCommunityResponseDto fromEntity(Volunteer volunteer) {
- return new VolunteerForCommunityResponseDto(
- volunteer.getId(),
- volunteer.getNickname(),
- volunteer.getImgUrl(),
- volunteer.getTier()
- );
- }
-}
-
diff --git a/src/main/java/com/somemore/volunteer/repository/VolunteerDetailRepository.java b/src/main/java/com/somemore/volunteer/repository/VolunteerDetailRepository.java
index 7dcb9f3c1..82e8f96f7 100644
--- a/src/main/java/com/somemore/volunteer/repository/VolunteerDetailRepository.java
+++ b/src/main/java/com/somemore/volunteer/repository/VolunteerDetailRepository.java
@@ -7,6 +7,5 @@
import java.util.UUID;
public interface VolunteerDetailRepository extends JpaRepository {
-
Optional findByVolunteerId(UUID volunteerId);
}
diff --git a/src/main/java/com/somemore/volunteer/repository/VolunteerJpaRepository.java b/src/main/java/com/somemore/volunteer/repository/VolunteerJpaRepository.java
index 16e5105da..f7261b45d 100644
--- a/src/main/java/com/somemore/volunteer/repository/VolunteerJpaRepository.java
+++ b/src/main/java/com/somemore/volunteer/repository/VolunteerJpaRepository.java
@@ -4,9 +4,7 @@
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
-import java.util.UUID;
public interface VolunteerJpaRepository extends JpaRepository {
- Volunteer findById(UUID id);
Optional findByOauthId(String oauthId);
}
diff --git a/src/main/java/com/somemore/volunteer/repository/VolunteerRepository.java b/src/main/java/com/somemore/volunteer/repository/VolunteerRepository.java
index bcc37359d..03c29cad3 100644
--- a/src/main/java/com/somemore/volunteer/repository/VolunteerRepository.java
+++ b/src/main/java/com/somemore/volunteer/repository/VolunteerRepository.java
@@ -9,7 +9,6 @@
@Repository
public interface VolunteerRepository {
Volunteer save(Volunteer volunteer);
- Volunteer findById(UUID id);
String findNicknameById(UUID id);
Optional findByOauthId(String oauthId);
void deleteAllInBatch();
diff --git a/src/main/java/com/somemore/volunteer/repository/VolunteerRepositoryImpl.java b/src/main/java/com/somemore/volunteer/repository/VolunteerRepositoryImpl.java
index bb19af698..b47f5afbc 100644
--- a/src/main/java/com/somemore/volunteer/repository/VolunteerRepositoryImpl.java
+++ b/src/main/java/com/somemore/volunteer/repository/VolunteerRepositoryImpl.java
@@ -21,11 +21,6 @@ public Volunteer save(Volunteer volunteer) {
return volunteerJpaRepository.save(volunteer);
}
- @Override
- public Volunteer findById(UUID id) {
- return volunteerJpaRepository.findById(id);
- }
-
@Override
public String findNicknameById(UUID id) {
QVolunteer volunteer = QVolunteer.volunteer;
diff --git a/src/main/java/com/somemore/volunteer/service/FindVolunteerIdService.java b/src/main/java/com/somemore/volunteer/service/FindVolunteerIdService.java
index 7825aa367..eab4b0d2b 100644
--- a/src/main/java/com/somemore/volunteer/service/FindVolunteerIdService.java
+++ b/src/main/java/com/somemore/volunteer/service/FindVolunteerIdService.java
@@ -1,7 +1,5 @@
package com.somemore.volunteer.service;
-import com.somemore.volunteer.domain.Volunteer;
-import com.somemore.volunteer.dto.response.VolunteerForCommunityResponseDto;
import com.somemore.volunteer.repository.VolunteerRepository;
import com.somemore.volunteer.usecase.FindVolunteerIdUseCase;
import jakarta.persistence.EntityNotFoundException;
@@ -31,11 +29,4 @@ public UUID findVolunteerIdByOAuthId(String oAuthId) {
public String getNicknameById(UUID id) {
return volunteerRepository.findNicknameById(id);
}
-
- @Override
- public VolunteerForCommunityResponseDto getVolunteerDetailForCommunity(UUID id) {
- Volunteer volunteer = volunteerRepository.findById(id);
-
- return VolunteerForCommunityResponseDto.fromEntity(volunteer);
- }
}
diff --git a/src/main/java/com/somemore/volunteer/usecase/FindVolunteerIdUseCase.java b/src/main/java/com/somemore/volunteer/usecase/FindVolunteerIdUseCase.java
index e23eaa20f..47050b561 100644
--- a/src/main/java/com/somemore/volunteer/usecase/FindVolunteerIdUseCase.java
+++ b/src/main/java/com/somemore/volunteer/usecase/FindVolunteerIdUseCase.java
@@ -1,11 +1,8 @@
package com.somemore.volunteer.usecase;
-import com.somemore.volunteer.dto.response.VolunteerForCommunityResponseDto;
-
import java.util.UUID;
public interface FindVolunteerIdUseCase {
UUID findVolunteerIdByOAuthId(String oAuthId);
String getNicknameById(UUID id);
- VolunteerForCommunityResponseDto getVolunteerDetailForCommunity(UUID id);
}
diff --git a/src/test/java/com/somemore/center/repository/CenterRepositoryTest.java b/src/test/java/com/somemore/center/repository/CenterRepositoryTest.java
index b6573a8d7..142685832 100644
--- a/src/test/java/com/somemore/center/repository/CenterRepositoryTest.java
+++ b/src/test/java/com/somemore/center/repository/CenterRepositoryTest.java
@@ -81,26 +81,4 @@ void notExistsById() {
//then
assertThat(isExist).isFalse();
}
-
- @DisplayName("센터의 id로 name을 조회한다. (Repository)")
- @Test
- void findNameById() {
- //given
- Center center = Center.create(
- "기본 기관 이름",
- "010-1234-5678",
- "http://example.com/image.jpg",
- "기관 소개 내용",
- "http://example.com",
- "account123",
- "password123"
- );
- centerRepository.save(center);
-
- //when
- String centerName = centerRepository.findNameById(center.getId());
-
- //then
- assertThat(centerName).isEqualTo("기본 기관 이름");
- }
}
diff --git a/src/test/java/com/somemore/center/service/query/CenterQueryServiceTest.java b/src/test/java/com/somemore/center/service/query/CenterQueryServiceTest.java
index 0ff4ae5ef..2cff5e618 100644
--- a/src/test/java/com/somemore/center/service/query/CenterQueryServiceTest.java
+++ b/src/test/java/com/somemore/center/service/query/CenterQueryServiceTest.java
@@ -118,30 +118,4 @@ void validateExistingCenter() {
// then
assertThatCode(callable).doesNotThrowAnyException();
}
-
- @DisplayName("센터의 id로 name을 조회한다.")
- @Test
- void getNameById() {
-
- //given
- Center center = Center.create(
- "기본 기관 이름",
- "010-1234-5678",
- "http://example.com/image.jpg",
- "기관 소개 내용",
- "http://example.com",
- "account123",
- "password123"
- );
-
- Center savedCenter = centerRepository.save(center);
-
- //when
- String name = centerQueryService.getNameById(savedCenter.getId());
-
- //then
- assertThat(name).isEqualTo("기본 기관 이름");
-
- }
-
}
diff --git a/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java b/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java
index b908f2db8..f39083074 100644
--- a/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java
+++ b/src/test/java/com/somemore/community/repository/CommunityRepositoryTest.java
@@ -1,7 +1,11 @@
package com.somemore.community.repository;
import com.somemore.IntegrationTestSupport;
+import com.somemore.auth.oauth.OAuthProvider;
import com.somemore.community.domain.CommunityBoard;
+import com.somemore.community.domain.CommunityBoardView;
+import com.somemore.volunteer.domain.Volunteer;
+import com.somemore.volunteer.repository.VolunteerRepository;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +22,8 @@ class CommunityRepositoryTest extends IntegrationTestSupport {
@Autowired
private CommunityBoardRepository communityBoardRepository;
+ @Autowired
+ private VolunteerRepository volunteerRepository;
@DisplayName("커뮤니티 게시글 id로 커뮤니티 상세 정보를 조회할 수 있다. (Repository)")
@Test
@@ -68,48 +74,62 @@ void getCommunityBoardByDeletedId() {
@Test
void getCommunityBoards() {
//given
+ String oAuthId = "example-oauth-id";
+ Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
+ volunteerRepository.save(volunteer);
+
CommunityBoard communityBoard1 = CommunityBoard.builder()
.title("테스트 커뮤니티 게시글 제목1")
.content("테스트 커뮤니티 게시글 내용1")
.imgUrl("http://community.example.com/123")
- .writerId(UUID.randomUUID())
+ .writerId(volunteer.getId())
.build();
CommunityBoard communityBoard2 = CommunityBoard.builder()
.title("테스트 커뮤니티 게시글 제목2")
.content("테스트 커뮤니티 게시글 내용2")
.imgUrl("http://community.example.com/12")
- .writerId(UUID.randomUUID())
+ .writerId(volunteer.getId())
.build();
communityBoardRepository.save(communityBoard1);
communityBoardRepository.save(communityBoard2);
//when
- List communityBoards = communityBoardRepository.getCommunityBoards();
+ List communityBoards = communityBoardRepository.getCommunityBoards();
//then
assertThat(communityBoards).hasSize(2);
- assertThat(communityBoards.get(0)).isEqualTo(communityBoard2);
- assertThat(communityBoards.get(1)).isEqualTo(communityBoard1);
+ assertThat(communityBoards.getFirst().communityBoard().getId()).isEqualTo(communityBoard2.getId());
+ assertThat(communityBoards.getFirst().communityBoard().getTitle()).isEqualTo(communityBoard2.getTitle());
+ assertThat(communityBoards.getFirst().writerNickname()).isEqualTo(volunteer.getNickname());
+ assertThat(communityBoards.getFirst().communityBoard().getCreatedAt()).isEqualTo(communityBoard2.getCreatedAt());
+ assertThat(communityBoards.getLast().communityBoard().getId()).isEqualTo(communityBoard1.getId());
+ assertThat(communityBoards.getLast().communityBoard().getTitle()).isEqualTo(communityBoard1.getTitle());
+ assertThat(communityBoards.getLast().writerNickname()).isEqualTo(volunteer.getNickname());
+ assertThat(communityBoards.getLast().communityBoard().getCreatedAt()).isEqualTo(communityBoard1.getCreatedAt());
}
@DisplayName("저장된 커뮤니티 게시글 리스트를 작성자별로 조회할 수 있다. (Repository)")
@Test
void getCommunityBoardsByWriterId() {
//given
+ String oAuthId = "example-oauth-id";
+ Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
+ volunteerRepository.save(volunteer);
+
CommunityBoard communityBoard1 = CommunityBoard.builder()
.title("테스트 커뮤니티 게시글 제목1")
.content("테스트 커뮤니티 게시글 내용1")
.imgUrl("http://community.example.com/123")
- .writerId(UUID.randomUUID())
+ .writerId(volunteer.getId())
.build();
CommunityBoard communityBoard2 = CommunityBoard.builder()
.title("테스트 커뮤니티 게시글 제목2")
.content("테스트 커뮤니티 게시글 내용2")
.imgUrl("http://community.example.com/12")
- .writerId(communityBoard1.getWriterId())
+ .writerId(volunteer.getId())
.build();
CommunityBoard communityBoard3 = CommunityBoard.builder()
@@ -124,11 +144,17 @@ void getCommunityBoardsByWriterId() {
communityBoardRepository.save(communityBoard3);
//when
- List communityBoards = communityBoardRepository.findByWriterId(communityBoard1.getWriterId());
+ List communityBoards = communityBoardRepository.findByWriterId(volunteer.getId());
//then
assertThat(communityBoards).hasSize(2);
- assertThat(communityBoards.get(0)).isEqualTo(communityBoard2);
- assertThat(communityBoards.get(1)).isEqualTo(communityBoard1);
+ assertThat(communityBoards.getFirst().communityBoard().getId()).isEqualTo(communityBoard2.getId());
+ assertThat(communityBoards.getFirst().communityBoard().getTitle()).isEqualTo(communityBoard2.getTitle());
+ assertThat(communityBoards.getFirst().writerNickname()).isEqualTo(volunteer.getNickname());
+ assertThat(communityBoards.getFirst().communityBoard().getCreatedAt()).isEqualTo(communityBoard2.getCreatedAt());
+ assertThat(communityBoards.getLast().communityBoard().getId()).isEqualTo(communityBoard1.getId());
+ assertThat(communityBoards.getLast().communityBoard().getTitle()).isEqualTo(communityBoard1.getTitle());
+ assertThat(communityBoards.getLast().writerNickname()).isEqualTo(volunteer.getNickname());
+ assertThat(communityBoards.getLast().communityBoard().getCreatedAt()).isEqualTo(communityBoard1.getCreatedAt());
}
}
diff --git a/src/test/java/com/somemore/community/service/CommunityBoardQueryServiceTest.java b/src/test/java/com/somemore/community/service/CommunityBoardQueryServiceTest.java
index 0f3aaf55a..3d82d4281 100644
--- a/src/test/java/com/somemore/community/service/CommunityBoardQueryServiceTest.java
+++ b/src/test/java/com/somemore/community/service/CommunityBoardQueryServiceTest.java
@@ -2,7 +2,6 @@
import com.somemore.IntegrationTestSupport;
import com.somemore.auth.oauth.OAuthProvider;
-import com.somemore.center.domain.Center;
import com.somemore.center.repository.CenterRepository;
import com.somemore.community.domain.CommunityBoard;
import com.somemore.community.dto.request.CommunityBoardCreateRequestDto;
@@ -17,12 +16,14 @@
import com.somemore.volunteer.repository.VolunteerRepository;
import org.assertj.core.api.ThrowableAssert;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.Optional;
+import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -42,32 +43,12 @@ class CommunityBoardQueryServiceTest extends IntegrationTestSupport {
@Autowired
CommunityBoardQueryService communityBoardQueryService;
- @AfterEach
- void tearDown() {
- communityBoardRepository.deleteAllInBatch();
- }
-
- @DisplayName("저장된 커뮤니티 게시글 리스트를 조회한다.")
- @Test
- void getAllCommunityBoards() {
-
- //given
- String oAuthId = "example-oauth-id";
- Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
-
- Volunteer savedVolunteer = volunteerRepository.save(volunteer);
-
- Center center = Center.create(
- "기본 기관 이름",
- "010-1234-5678",
- "http://example.com/image.jpg",
- "기관 소개 내용",
- "http://example.com",
- "account123",
- "password123"
- );
- Center savedCenter = centerRepository.save(center);
+ private UUID writerId1;
+ private Long communityId1, communityId2;
+ private String imgUrl, nickName1, nickName2;
+ @BeforeEach
+ void setUp() {
CommunityBoardCreateRequestDto dto1 = CommunityBoardCreateRequestDto.builder()
.title("커뮤니티 테스트 제목1")
.content("커뮤니티 테스트 내용1")
@@ -78,12 +59,37 @@ void getAllCommunityBoards() {
.content("커뮤니티 테스트 내용2")
.build();
+ String oAuthId = "example-oauth-id";
+ Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
+
+ volunteerRepository.save(volunteer);
+
+ String oAuthId2 = "example-oauth-id";
+ Volunteer volunteer2 = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId2);
+
+ volunteerRepository.save(volunteer2);
- String imgUrl1 = "https://image.test.url/123";
+ writerId1 = volunteer.getId();
+ UUID writerId2 = volunteer2.getId();
+ nickName1 = volunteer.getNickname();
+ nickName2 = volunteer2.getNickname();
+ imgUrl = "https://image.test.url/123";
- Long communityId1 = createCommunityBoardUseCase.createCommunityBoard(dto1, savedCenter.getId(), null);
- Long communityId2 = createCommunityBoardUseCase.createCommunityBoard(dto2, savedVolunteer.getId(), imgUrl1);
+ communityId1 = createCommunityBoardUseCase.createCommunityBoard(dto1, writerId1, imgUrl);
+ communityId2 = createCommunityBoardUseCase.createCommunityBoard(dto2, writerId2, null);
+ }
+
+ @AfterEach
+ void tearDown() {
+ communityBoardRepository.deleteAllInBatch();
+ }
+
+ @DisplayName("저장된 커뮤니티 게시글 리스트를 조회한다.")
+ @Test
+ void getAllCommunityBoards() {
+
+ //given
// when
List dtos = communityBoardQueryService.getCommunityBoards();
@@ -91,21 +97,20 @@ void getAllCommunityBoards() {
Optional communityBoard1 = communityBoardRepository.findById(communityId1);
Optional communityBoard2 = communityBoardRepository.findById(communityId2);
-
assertThat(dtos)
.isNotNull()
.hasSize(2);
CommunityBoardGetResponseDto board1 = dtos.getLast();
assertThat(board1.id()).isEqualTo(communityId1);
- assertThat(board1.writerNickname()).isEqualTo(savedCenter.getName());
- assertThat(board1.title()).isEqualTo(dto1.title());
+ assertThat(board1.title()).isEqualTo(communityBoard1.get().getTitle());
+ assertThat(board1.writerNickname()).isEqualTo(nickName1);
assertThat(board1.createdAt()).isEqualTo(communityBoard1.get().getCreatedAt());
CommunityBoardGetResponseDto board2 = dtos.getFirst();
assertThat(board2.id()).isEqualTo(communityId2);
- assertThat(board2.writerNickname()).isEqualTo(savedVolunteer.getNickname());
- assertThat(board2.title()).isEqualTo(dto2.title());
+ assertThat(board2.title()).isEqualTo(communityBoard2.get().getTitle());
+ assertThat(board2.writerNickname()).isEqualTo(nickName2);
assertThat(board2.createdAt()).isEqualTo(communityBoard2.get().getCreatedAt());
}
@@ -114,48 +119,21 @@ void getAllCommunityBoards() {
void getCommunityBoardsByWriter() {
//given
- String oAuthId = "example-oauth-id";
- Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
-
- Volunteer savedVolunteer = volunteerRepository.save(volunteer);
-
- CommunityBoardCreateRequestDto dto1 = CommunityBoardCreateRequestDto.builder()
- .title("커뮤니티 테스트 제목1")
- .content("커뮤니티 테스트 내용1")
- .build();
-
- CommunityBoardCreateRequestDto dto2 = CommunityBoardCreateRequestDto.builder()
- .title("커뮤니티 테스트 제목2")
- .content("커뮤니티 테스트 내용2")
- .build();
-
- String imgUrl1 = "https://image.test.url/123";
-
- Long communityId1 = createCommunityBoardUseCase.createCommunityBoard(dto1, savedVolunteer.getId(), null);
- Long communityId2 = createCommunityBoardUseCase.createCommunityBoard(dto2, savedVolunteer.getId(), imgUrl1);
-
//when
- List dtos = communityBoardQueryService.getCommunityBoardsByWriterId(volunteer.getId());
+ List dtos = communityBoardQueryService.getCommunityBoardsByWriterId(writerId1);
//then
Optional communityBoard1 = communityBoardRepository.findById(communityId1);
- Optional communityBoard2 = communityBoardRepository.findById(communityId2);
assertThat(dtos)
.isNotNull()
- .hasSize(2);
+ .hasSize(1);
- CommunityBoardGetResponseDto board1 = dtos.getLast();
+ CommunityBoardGetResponseDto board1 = dtos.getFirst();
assertThat(board1.id()).isEqualTo(communityId1);
- assertThat(board1.writerNickname()).isEqualTo(savedVolunteer.getNickname());
- assertThat(board1.title()).isEqualTo(dto1.title());
+ assertThat(board1.title()).isEqualTo(communityBoard1.get().getTitle());
+ assertThat(board1.writerNickname()).isEqualTo(nickName1);
assertThat(board1.createdAt()).isEqualTo(communityBoard1.get().getCreatedAt());
-
- CommunityBoardGetResponseDto board2 = dtos.getFirst();
- assertThat(board2.id()).isEqualTo(communityId2);
- assertThat(board2.writerNickname()).isEqualTo(savedVolunteer.getNickname());
- assertThat(board2.title()).isEqualTo(dto2.title());
- assertThat(board2.createdAt()).isEqualTo(communityBoard2.get().getCreatedAt());
}
@DisplayName("커뮤니티 게시글의 상세 정보를 조회한다.")
@@ -163,34 +141,16 @@ void getCommunityBoardsByWriter() {
void getCommunityBoardDetail() {
//given
- String oAuthId = "example-oauth-id";
- Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
-
- Volunteer savedVolunteer = volunteerRepository.save(volunteer);
-
- CommunityBoardCreateRequestDto dto1 = CommunityBoardCreateRequestDto.builder()
- .title("커뮤니티 테스트 제목")
- .content("커뮤니티 테스트 내용")
- .build();
-
- String imgUrl = "https://image.test.url/123";
-
- Long communityId1 = createCommunityBoardUseCase.createCommunityBoard(dto1, savedVolunteer.getId(), imgUrl);
-
//when
CommunityBoardGetDetailResponseDto communityBoard = communityBoardQueryService.getCommunityBoardDetail(communityId1);
//then
assertThat(communityBoard).isNotNull();
assertThat(communityBoard.id()).isEqualTo(communityId1);
- assertThat(communityBoard.title()).isEqualTo("커뮤니티 테스트 제목");
- assertThat(communityBoard.content()).isEqualTo("커뮤니티 테스트 내용");
- assertThat(communityBoard.imageUrl()).isEqualTo("https://image.test.url/123");
-
- assertThat(communityBoard.writerDetailDto().id()).isEqualTo(savedVolunteer.getId());
- assertThat(communityBoard.writerDetailDto().name()).isEqualTo(savedVolunteer.getNickname());
- assertThat(communityBoard.writerDetailDto().imgUrl()).isEqualTo(savedVolunteer.getImgUrl());
- assertThat(communityBoard.writerDetailDto().tier()).isEqualTo(savedVolunteer.getTier());
+ assertThat(communityBoard.title()).isEqualTo("커뮤니티 테스트 제목1");
+ assertThat(communityBoard.content()).isEqualTo("커뮤니티 테스트 내용1");
+ assertThat(communityBoard.writerId()).isEqualTo(writerId1);
+ assertThat(communityBoard.imageUrl()).isEqualTo(imgUrl);
}
@DisplayName("삭제된 커뮤니티 게시글의 상세 정보를 조회할 때 예외를 던진다.")
@@ -198,24 +158,10 @@ void getCommunityBoardDetail() {
void getCommunityBoardDetailWithDeletedId() {
//given
- String oAuthId = "example-oauth-id";
- Volunteer volunteer = Volunteer.createDefault(OAuthProvider.NAVER, oAuthId);
-
- Volunteer savedVolunteer = volunteerRepository.save(volunteer);
-
- CommunityBoardCreateRequestDto dto1 = CommunityBoardCreateRequestDto.builder()
- .title("커뮤니티 테스트 제목")
- .content("커뮤니티 테스트 내용")
- .build();
-
- String imgUrl = "https://image.test.url/123";
-
- Long communityId = createCommunityBoardUseCase.createCommunityBoard(dto1, savedVolunteer.getId(), imgUrl);
-
- deleteCommunityBoardUseCase.deleteCommunityBoard(savedVolunteer.getId(), communityId);
+ deleteCommunityBoardUseCase.deleteCommunityBoard(writerId1, communityId1);
//when
- ThrowableAssert.ThrowingCallable callable = () -> communityBoardQueryService.getCommunityBoardDetail(communityId);
+ ThrowableAssert.ThrowingCallable callable = () -> communityBoardQueryService.getCommunityBoardDetail(communityId1);
//then
assertThatExceptionOfType(BadRequestException.class)