Skip to content

Commit

Permalink
refactor: 이미지 S3 영구 저장소 이동 로직을 Facade로 이동 (서비스 계층 분리 의미 명확하게)
Browse files Browse the repository at this point in the history
  • Loading branch information
Libienz committed Oct 9, 2024
1 parent 99f67be commit 6fc7d99
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
public class TravelogueFacadeService {

private final TravelogueService travelogueService;
private final TravelogueImagePerpetuationService travelogueImagePerpetuationService;
private final TravelogueTagService travelogueTagService;
private final TravelogueLikeService travelogueLikeService;
private final MemberService memberService;
Expand All @@ -33,6 +34,7 @@ public class TravelogueFacadeService {
public TravelogueCreateResponse createTravelogue(MemberAuth member, TravelogueRequest request) {
Member author = memberService.getMemberById(member.memberId());
Travelogue travelogue = travelogueService.save(request.toTravelogue(author));
travelogueImagePerpetuationService.copyTravelogueImagesToPermanentStorage(travelogue);
travelogueTagService.createTravelogueTags(travelogue, request.tags());

return TravelogueCreateResponse.from(travelogue);
Expand Down Expand Up @@ -85,6 +87,7 @@ public TravelogueResponse updateTravelogue(Long id, MemberAuth member, Travelogu
Member author = memberService.getMemberById(member.memberId());

Travelogue updated = travelogueService.update(id, author, updateRequest);
travelogueImagePerpetuationService.copyTravelogueImagesToPermanentStorage(updated);
List<TravelogueTag> travelogueTags = travelogueTagService.updateTravelogueTag(updated, updateRequest.tags());

boolean isLikedFromAccessor = travelogueLikeService.existByTravelogueAndMember(updated, author);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@ public class TravelogueService {

private final TravelogueRepository travelogueRepository;
private final TravelogueQueryRepository travelogueQueryRepository;
private final TravelogueImagePerpetuationService travelogueImagePerpetuationService;

@Transactional
public Travelogue save(Travelogue travelogue) {
travelogueImagePerpetuationService.copyTravelogueImagesToPermanentStorage(travelogue);
return travelogueRepository.save(travelogue);
}

Expand Down Expand Up @@ -66,9 +64,8 @@ public Travelogue update(Long id, Member author, TravelogueRequest request) {

travelogue.updateDays(request.getTravelogueDays(travelogue));
travelogue.update(request.title(), request.thumbnail());
travelogueImagePerpetuationService.copyTravelogueImagesToPermanentStorage(travelogue);

return travelogueRepository.save(travelogue);
return travelogue;
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,12 @@
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;

import java.util.List;
import kr.touroot.global.ServiceTest;
import kr.touroot.global.config.TestQueryDslConfig;
import kr.touroot.global.exception.BadRequestException;
import kr.touroot.global.exception.ForbiddenException;
import kr.touroot.image.infrastructure.AwsS3Provider;
import kr.touroot.member.domain.Member;
import kr.touroot.travelogue.domain.Travelogue;
import kr.touroot.travelogue.dto.request.TravelogueDayRequest;
Expand All @@ -28,18 +25,11 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Import;
import org.springframework.data.domain.Pageable;

@DisplayName("여행기 서비스")
@Import(value = {
TravelogueImagePerpetuationService.class,
AwsS3Provider.class,
TravelogueService.class,
TravelogueTestHelper.class,
TestQueryDslConfig.class
})
@Import(value = {TravelogueService.class, TravelogueTestHelper.class, TestQueryDslConfig.class})
@ServiceTest
class TravelogueServiceTest {

Expand All @@ -48,32 +38,23 @@ class TravelogueServiceTest {
private final TravelogueService travelogueService;
private final DatabaseCleaner databaseCleaner;
private final TravelogueTestHelper testHelper;
@MockBean
private final AwsS3Provider s3Provider;

@Autowired
public TravelogueServiceTest(
TravelogueService travelogueService,
DatabaseCleaner databaseCleaner,
TravelogueTestHelper testHelper,
AwsS3Provider s3Provider
TravelogueTestHelper testHelper
) {
this.travelogueService = travelogueService;
this.databaseCleaner = databaseCleaner;
this.testHelper = testHelper;
this.s3Provider = s3Provider;
}

@BeforeEach
void setUp() {
databaseCleaner.executeTruncate();
}

private void mockImageCopyProcess() {
when(s3Provider.copyImageToPermanentStorage(any(String.class)))
.thenReturn("https://dev.touroot.kr/image.png");
}

private static List<TravelogueDayRequest> getTravelogueDayRequests() {
List<TraveloguePhotoRequest> photos = TravelogueRequestFixture.getTraveloguePhotoRequests();
List<TraveloguePlaceRequest> places = TravelogueRequestFixture.getTraveloguePlaceRequests(photos);
Expand All @@ -83,7 +64,6 @@ private static List<TravelogueDayRequest> getTravelogueDayRequests() {
@DisplayName("여행기를 저장할 수 있다")
@Test
void saveTravelogue() {
mockImageCopyProcess();
Member member = testHelper.initKakaoMemberTestData();
Travelogue travelogue = TravelogueFixture.TRAVELOGUE.create(member);

Expand Down Expand Up @@ -132,7 +112,6 @@ void findByKeywordWithNotExistRequest() {
void updateTravelogue() {
Member author = testHelper.initKakaoMemberTestData();
testHelper.initTravelogueTestData(author);
mockImageCopyProcess();
List<TravelogueDayRequest> days = getTravelogueDayRequests();
TravelogueRequest request = TravelogueRequestFixture.getUpdateTravelogueRequest(days);
Travelogue updatedTravelogue = travelogueService.update(1L, author, request);
Expand Down

0 comments on commit 6fc7d99

Please sign in to comment.