diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/entity/Archive.java b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/entity/Archive.java index 32e01fe0..f68480f8 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/entity/Archive.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/entity/Archive.java @@ -22,7 +22,7 @@ public class Archive extends BaseEntity { private ArchiveType archiveType; //아카이브 삭제(아마도 계정 탈퇴) 시 폴더 일괄 삭제 - @OneToMany(mappedBy = "archive", cascade = CascadeType.REMOVE, orphanRemoval = true) + @OneToMany(mappedBy = "archive", cascade = CascadeType.ALL, orphanRemoval = true) private List folders = new ArrayList<>(); public Archive(ArchiveType archiveType) { diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/repository/PersonalArchiveRepository.java b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/repository/PersonalArchiveRepository.java index 71417605..127afa95 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/repository/PersonalArchiveRepository.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/archive/repository/PersonalArchiveRepository.java @@ -2,6 +2,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.tuna.zoopzoop.backend.domain.archive.archive.entity.PersonalArchive; import java.util.Optional; @@ -14,10 +15,10 @@ public interface PersonalArchiveRepository extends JpaRepository findByMemberId(Integer memberId); + select pa + from PersonalArchive pa + join fetch pa.archive a + where pa.member.id = :memberId +""") + Optional findByMemberId(@Param("memberId") Integer memberId); } diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderController.java b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderController.java index 3179435c..41c9396f 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderController.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderController.java @@ -1,5 +1,7 @@ package org.tuna.zoopzoop.backend.domain.archive.folder.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -14,13 +16,13 @@ import org.tuna.zoopzoop.backend.global.rsData.RsData; import org.tuna.zoopzoop.backend.global.security.jwt.CustomUserDetails; -import java.util.HashMap; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api/v1/archive/folder") @RequiredArgsConstructor +@Tag(name = "ApiV1Folder", description = "개인 아카이브의 폴더 CRUD") public class FolderController { private final FolderService folderService; @@ -30,6 +32,7 @@ public class FolderController { * @param rq reqBodyForCreateFolder * @return resBodyForCreateFolder */ + @Operation(summary = "폴더 생성", description = "내 PersonalArchive 안에 새 폴더를 생성합니다.") @PostMapping public RsData createFolder( @Valid @RequestBody reqBodyForCreateFolder rq, @@ -55,14 +58,21 @@ public ResponseEntity> deleteFolder( @PathVariable Integer folderId, @AuthenticationPrincipal CustomUserDetails userDetails ) { + if (folderId == 0) { + var body = new java.util.HashMap(); + body.put("status", 400); + body.put("msg", "default 폴더는 삭제할 수 없습니다."); + body.put("data", null); // HashMap은 null 허용 + return ResponseEntity.badRequest().body(body); + } + Member member = userDetails.getMember(); String deletedFolderName = folderService.deleteFolder(member.getId(), folderId); - Map body = new HashMap<>(); + var body = new java.util.HashMap(); body.put("status", 200); body.put("msg", deletedFolderName + " 폴더가 삭제됐습니다."); - body.put("data", null); - + body.put("data", null); // <- 여기도 Map.of 쓰면 NPE 납니다 return ResponseEntity.ok(body); } @@ -77,22 +87,30 @@ public ResponseEntity> updateFolderName( @RequestBody Map body, @AuthenticationPrincipal CustomUserDetails userDetails ) { + if (folderId == 0) { + var res = new java.util.HashMap(); + res.put("status", 400); + res.put("msg", "default 폴더는 이름을 변경할 수 없습니다."); + res.put("data", null); + return ResponseEntity.badRequest().body(res); + } + Member member = userDetails.getMember(); String newName = body.get("folderName"); String updatedName = folderService.updateFolderName(member.getId(), folderId, newName); - Map response = new HashMap<>(); - response.put("status", 200); - response.put("msg", "폴더 이름이 " + updatedName + " 으로 변경됐습니다."); - response.put("data", Map.of("folderName", updatedName)); - - return ResponseEntity.ok(response); + return ResponseEntity.ok(java.util.Map.of( + "status", 200, + "msg", "폴더 이름이 " + updatedName + " 으로 변경됐습니다.", + "data", java.util.Map.of("folderName", updatedName) + )); } /** * 개인 아카이브의 폴더 이름 전부 조회 * "default", "폴더1", "폴더2" */ + @Operation(summary = "폴더 이름 조회", description = "내 PersonalArchive 안에 이름을 전부 조회합니다.") @GetMapping public ResponseEntity getFolders( @AuthenticationPrincipal CustomUserDetails userDetails @@ -110,29 +128,32 @@ public ResponseEntity getFolders( } /** - * 폴더(내 PersonalArchive 소속) 안의 파일 목록 조회 + * 폴더 안의 파일 목록 조회 */ @GetMapping("/{folderId}/files") public ResponseEntity getFilesInFolder( @PathVariable Integer folderId, @AuthenticationPrincipal CustomUserDetails userDetails ) { - Member member = userDetails.getMember(); - FolderFilesDto rs = folderService.getFilesInFolderForPersonal(member.getId(), folderId); - - return ResponseEntity.ok( - Map.of( - "status", 200, - "msg", "해당 폴더의 파일 목록을 불러왔습니다.", - "data", Map.of( - "folder", Map.of( - "folderId", rs.folderId(), - "folderName", rs.folderName() - ), - "files", rs.files() - ) + int memberId = userDetails.getMember().getId(); + + Integer targetFolderId = (folderId == 0) + ? folderService.getDefaultFolderId(memberId) + : folderId; + + FolderFilesDto rs = folderService.getFilesInFolderForPersonal(memberId, targetFolderId); + + return ResponseEntity.ok(Map.of( + "status", 200, + "msg", folderId == 0 ? "기본 폴더의 파일 목록을 불러왔습니다." : "해당 폴더의 파일 목록을 불러왔습니다.", + "data", Map.of( + "folder", Map.of( + "folderId", rs.folderId(), + "folderName", rs.folderName() + ), + "files", rs.files() ) - ); + )); } } diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/repository/FolderRepository.java b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/repository/FolderRepository.java index 9464ca5e..717c1d6c 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/repository/FolderRepository.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/repository/FolderRepository.java @@ -17,13 +17,15 @@ public interface FolderRepository extends JpaRepository{ * @param filenameEnd "파일명 + \ufffff" */ @Query(""" - select f.name - from Folder f - where f.archive.id = :archiveId - and f.name >= :filename - and f.name < :filenameEnd - """) - List findNamesForConflictCheck(Integer archiveId, String filename, String filenameEnd); + select f.name + from Folder f + where f.archive.id = :archiveId + and f.name >= :filename + and f.name < :filenameEnd +""") + List findNamesForConflictCheck(@Param("archiveId") Integer archiveId, + @Param("filename") String filename, + @Param("filenameEnd") String filenameEnd); // 개인 아카이브의 폴더 조회 List findByArchive(Archive archive); @@ -38,24 +40,24 @@ public interface FolderRepository extends JpaRepository{ * @param memberId 조회할 회원 Id */ @Query(""" - select f - from Folder f - join f.archive a - join PersonalArchive pa on pa.archive = a - where pa.member.id = :memberId - and f.isDefault = true - """) - Optional findDefaultFolderByMemberId(Integer memberId); + select f + from Folder f + join f.archive a + join PersonalArchive pa on pa.archive = a + where pa.member.id = :memberId + and f.isDefault = true +""") + Optional findDefaultFolderByMemberId(@Param("memberId") Integer memberId); // 한 번의 조인으로 존재 + 소유권(memberId) 검증 @Query(""" - select f - from Folder f - join f.archive a - join PersonalArchive pa on pa.archive = a - where f.id = :folderId - and pa.member.id = :memberId - """) + select f + from Folder f + join f.archive a + join PersonalArchive pa on pa.archive = a + where f.id = :folderId + and pa.member.id = :memberId +""") Optional findByIdAndMemberId(@Param("folderId") Integer folderId, @Param("memberId") Integer memberId); diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderService.java index 09c8aebe..2f07f53f 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderService.java @@ -42,11 +42,11 @@ public FolderResponse createFolderForPersonal(Integer currentMemberId, String fo throw new IllegalArgumentException("폴더 이름은 비어 있을 수 없습니다."); Member member = memberRepository.findById(currentMemberId) - .orElseThrow(() -> new IllegalArgumentException("멤버를 찾을 수 없습니다.")); + .orElseThrow(() -> new NoResultException("멤버를 찾을 수 없습니다.")); Archive archive = personalArchiveRepository.findByMemberId(member.getId()) .map(PersonalArchive::getArchive) - .orElseThrow(() -> new IllegalStateException("개인 아카이브가 없습니다.")); + .orElseThrow(() -> new NoResultException("개인 아카이브가 없습니다.")); final String requested = folderName.trim(); @@ -192,6 +192,14 @@ public FolderFilesDto getFilesInFolderForPersonal(Integer memberId, Integer fold return new FolderFilesDto(folder.getId(), folder.getName(), files); } + + public Integer getDefaultFolderId(int memberId) { + Folder folder = folderRepository.findDefaultFolderByMemberId(memberId) + .orElseThrow(() -> new NoResultException("default 폴더를 찾을 수 없습니다.")); + return folder.getId(); + + } + /** * 입력된 폴더명을 (폴더명, 숫자)로 분리하는 유틸 클래스 * “폴더명” → (”폴더명”, null) diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/auth/dev/controller/DevController.java b/src/main/java/org/tuna/zoopzoop/backend/domain/auth/dev/controller/DevController.java index 7f59d272..44161877 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/auth/dev/controller/DevController.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/auth/dev/controller/DevController.java @@ -23,8 +23,8 @@ public class DevController { @GetMapping("/token") public Map issueToken( - @RequestParam Provider provider, - @RequestParam String key + @RequestParam(name = "provider") Provider provider, + @RequestParam(name = "key") String key ) { Member m = memberRepository.findByProviderAndProviderKey(provider, key) .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "member not found")); diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/dashboard/service/DashboardService.java b/src/main/java/org/tuna/zoopzoop/backend/domain/dashboard/service/DashboardService.java index d1d8636d..b6ab567c 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/dashboard/service/DashboardService.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/dashboard/service/DashboardService.java @@ -3,8 +3,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.NoResultException; import lombok.RequiredArgsConstructor; -import org.apache.commons.codec.binary.Hex; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.tuna.zoopzoop.backend.domain.dashboard.dto.BodyForReactFlow; @@ -16,11 +14,7 @@ import org.tuna.zoopzoop.backend.domain.member.entity.Member; import org.tuna.zoopzoop.backend.domain.space.membership.service.MembershipService; -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import java.nio.charset.StandardCharsets; import java.nio.file.AccessDeniedException; -import java.security.MessageDigest; import java.util.List; @Service diff --git a/src/main/java/org/tuna/zoopzoop/backend/domain/datasource/controller/DatasourceController.java b/src/main/java/org/tuna/zoopzoop/backend/domain/datasource/controller/DatasourceController.java index d2a59df9..98acb354 100644 --- a/src/main/java/org/tuna/zoopzoop/backend/domain/datasource/controller/DatasourceController.java +++ b/src/main/java/org/tuna/zoopzoop/backend/domain/datasource/controller/DatasourceController.java @@ -1,5 +1,7 @@ package org.tuna.zoopzoop.backend.domain.datasource.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -21,6 +23,7 @@ @RestController @RequestMapping("/api/v1/archive") @RequiredArgsConstructor +@Tag(name = "ApiV1DataSource", description = "개인 아카이브의 파일 CRUD") public class DatasourceController { private final DataSourceService dataSourceService; @@ -30,6 +33,7 @@ public class DatasourceController { * sourceUrl 등록할 자료 url * folderId 등록될 폴더 위치(null 이면 default) */ + @Operation(summary = "자료 등록", description = "내 PersonalArchive 안에 자료를 등록합니다.") @PostMapping("") public ResponseEntity createDataSource( @Valid @RequestBody reqBodyForCreateDataSource rq, @@ -49,6 +53,7 @@ public ResponseEntity createDataSource( /** * 자료 단건 삭제 */ + @Operation(summary = "자료 단건 삭제", description = "내 PersonalArchive 안에 자료를 단건 삭제합니다.") @DeleteMapping("/{dataSourceId}") public ResponseEntity> delete( @PathVariable Integer dataSourceId, @@ -68,6 +73,7 @@ public ResponseEntity> delete( /** * 자료 다건 삭제 */ + @Operation(summary = "자료 다건 삭제", description = "내 PersonalArchive 안에 자료를 다건 삭제합니다.") @PostMapping("/delete") public ResponseEntity> deleteMany( @Valid @RequestBody reqBodyForDeleteMany body, @@ -88,6 +94,7 @@ public ResponseEntity> deleteMany( * 자료 단건 이동 * folderId=null 이면 default 폴더 */ + @Operation(summary = "자료 단건 이동", description = "내 PersonalArchive 안에 자료를 단건 이동합니다.") @PatchMapping("/{dataSourceId}/move") public ResponseEntity moveDataSource( @PathVariable Integer dataSourceId, @@ -118,6 +125,7 @@ public ResponseEntity moveDataSource( /** * 자료 다건 이동 */ + @Operation(summary = "자료 다건 이동", description = "내 PersonalArchive 안에 자료들를 다건 이동합니다..") @PatchMapping("/move") public ResponseEntity moveMany( @Valid @RequestBody reqBodyForMoveMany rq, @@ -141,6 +149,7 @@ public ResponseEntity moveMany( * @param dataSourceId 수정할 파일 Id * @param body 수정할 내용 */ + @Operation(summary = "자료 수정", description = "내 PersonalArchive 안에 자료를 수정합니다.") @PatchMapping("/{dataSourceId}") public ResponseEntity updateDataSource( @PathVariable Integer dataSourceId, @@ -162,6 +171,10 @@ public ResponseEntity updateDataSource( ); } + /** + * 자료 검색 + */ + @Operation(summary = "자료 검색", description = "내 PersonalArchive 안에 자료들을 검색합니다.") @GetMapping("") public ResponseEntity search( @RequestParam(required = false) String title, diff --git a/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderControllerTest.java b/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderControllerTest.java index 6963d59f..603c5158 100644 --- a/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderControllerTest.java +++ b/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/controller/FolderControllerTest.java @@ -22,21 +22,17 @@ import org.tuna.zoopzoop.backend.domain.member.enums.Provider; import org.tuna.zoopzoop.backend.domain.member.repository.MemberRepository; import org.tuna.zoopzoop.backend.domain.member.service.MemberService; +import org.tuna.zoopzoop.backend.global.jpa.entity.BaseEntity; import java.time.LocalDate; import java.util.List; import static org.hamcrest.Matchers.greaterThanOrEqualTo; +import static org.hamcrest.Matchers.nullValue; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; -/** - * FolderController 통합 테스트 (Given / When / Then 주석 유지) - * - * - @SpringBootTest + @AutoConfigureMockMvc 로 전체 컨텍스트에서 테스트 - * - @WithUserDetails 를 사용해 인증 principal 을 주입 - * - 테스트용 멤버는 BeforeAll에서 생성 (UserDetailsService 가 해당 username 으로 로드 가능해야 함) - */ + @ActiveProfiles("test") @SpringBootTest @AutoConfigureMockMvc @@ -61,14 +57,12 @@ class FolderControllerTest { @BeforeAll void beforeAll() { - // WithUserDetails가 SecurityContext 생성 시 DB에서 사용자를 조회하므로 미리 생성 try { memberService.createMember("folderTester", "http://example.com/profile.png", TEST_PROVIDER_KEY, Provider.KAKAO); } catch (Exception ignored) {} - // 준비된 멤버 ID testMemberId = memberRepository.findByProviderAndProviderKey(Provider.KAKAO, TEST_PROVIDER_KEY) - .map(m -> m.getId()) + .map(BaseEntity::getId) .orElseThrow(); // GIVEN: 테스트용 폴더 및 샘플 자료 준비 (docs 폴더 + 2개 자료) @@ -77,7 +71,7 @@ void beforeAll() { Folder docsFolder = folderRepository.findById(docsFolderId).orElseThrow(); - // 자료 2건 생성 — **category는 NOT NULL enum** 이므로 반드시 설정 + // 자료 2건 생성 DataSource d1 = new DataSource(); d1.setFolder(docsFolder); d1.setTitle("spec.pdf"); @@ -143,6 +137,8 @@ void createFolder_missingName() throws Exception { .andExpect(status().isBadRequest()); } + + // DeleteFile @Test @DisplayName("개인 아카이브 폴더 삭제 - 성공 시 200과 삭제 메시지 반환") @WithUserDetails("KAKAO:sc1111") @@ -158,6 +154,17 @@ void deleteFolder_ok() throws Exception { .andExpect(jsonPath("$.msg").value("todelete 폴더가 삭제됐습니다.")); } + @Test + @DisplayName("개인 아카이브 폴더 삭제 실패- 기본 폴더면 400") + @WithUserDetails("KAKAO:sc1111") + void deleteDefaultFolder_badRequest() throws Exception { + mockMvc.perform(delete("/api/v1/archive/folder/{folderId}", 0)) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.status").value(400)) + .andExpect(jsonPath("$.msg").value("default 폴더는 삭제할 수 없습니다.")) + .andExpect(jsonPath("$.data").value(nullValue())); + } + @Test @DisplayName("개인 아카이브 폴더 삭제 - 존재하지 않으면 404") @WithUserDetails("KAKAO:sc1111") @@ -169,6 +176,7 @@ void deleteFolder_notFound() throws Exception { .andExpect(jsonPath("$.msg").value("존재하지 않는 폴더입니다.")); } + // UpdateFile @Test @DisplayName("개인 아카이브 폴더 이름 변경 - 성공 시 200과 변경된 이름 반환") @@ -191,6 +199,22 @@ void updateFolder_ok() throws Exception { .andExpect(jsonPath("$.data.folderName").value("회의록")); } + @Test + @DisplayName("개인 아카이브 폴더 이름 변경 실패 - 기본 폴더면 400") + @WithUserDetails("KAKAO:sc1111") + void updateDefaultFolder_badRequest() throws Exception { + var body = new java.util.HashMap(); + body.put("folderName","무시됨"); + + mockMvc.perform(patch("/api/v1/archive/folder/{folderId}", 0) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(body))) + .andExpect(status().isBadRequest()) + .andExpect(jsonPath("$.status").value(400)) + .andExpect(jsonPath("$.msg").value("default 폴더는 이름을 변경할 수 없습니다.")) + .andExpect(jsonPath("$.data").value(nullValue())); + } + @Test @DisplayName("개인 아카이브 폴더 이름 변경 - 존재하지 않는 폴더면 404") @WithUserDetails("KAKAO:sc1111") @@ -245,6 +269,21 @@ void getFilesInFolder_success() throws Exception { .andExpect(jsonPath("$.data.files[0].imageUrl").isString()); } + @Test + @DisplayName("폴더 파일 목록 조회 - default 폴더 성공") + @WithUserDetails("KAKAO:sc1111") + void getFilesInDefaultFolder_success() throws Exception { + mockMvc.perform(get("/api/v1/archive/folder/{folderId}/files", 0) + .accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.status").value(200)) + .andExpect(jsonPath("$.msg").value("기본 폴더의 파일 목록을 불러왔습니다.")) + .andExpect(jsonPath("$.data.folder.folderId").isNumber()) + .andExpect(jsonPath("$.data.folder.folderName").isString()) + .andExpect(jsonPath("$.data.files").isArray()); + } + + @Test @DisplayName("폴더 내 파일 목록 조회 - 폴더가 없으면 404") @WithUserDetails("KAKAO:sc1111") diff --git a/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderServiceTest.java b/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderServiceTest.java index 7ec3393c..54e8dc5a 100644 --- a/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderServiceTest.java +++ b/src/test/java/org/tuna/zoopzoop/backend/domain/archive/folder/service/FolderServiceTest.java @@ -125,7 +125,7 @@ void createFolder_memberNotFound() { when(memberRepository.findById(2)).thenReturn(Optional.empty()); // when & then - assertThrows(IllegalArgumentException.class, + assertThrows(NoResultException.class, () -> folderService.createFolderForPersonal(2, "보고서")); } @@ -292,7 +292,7 @@ void getFilesInFolderForPersonal_success() { // then assertThat(dto.files()).hasSize(2); - FileSummary f0 = dto.files().get(0); + FileSummary f0 = dto.files().getFirst(); assertThat(f0.dataSourceId()).isEqualTo(10); assertThat(f0.title()).isEqualTo("spec.pdf"); assertThat(f0.summary()).isEqualTo("요약 A"); diff --git a/src/test/java/org/tuna/zoopzoop/backend/domain/news/service/NewsServiceTest.java b/src/test/java/org/tuna/zoopzoop/backend/domain/news/service/NewsServiceTest.java index b75e73d6..a17fc15c 100644 --- a/src/test/java/org/tuna/zoopzoop/backend/domain/news/service/NewsServiceTest.java +++ b/src/test/java/org/tuna/zoopzoop/backend/domain/news/service/NewsServiceTest.java @@ -16,7 +16,6 @@ import org.tuna.zoopzoop.backend.domain.datasource.entity.DataSource; import org.tuna.zoopzoop.backend.domain.datasource.entity.Tag; import org.tuna.zoopzoop.backend.domain.datasource.repository.DataSourceRepository; -import org.tuna.zoopzoop.backend.domain.datasource.service.DataSourceService; import org.tuna.zoopzoop.backend.domain.member.entity.Member; import org.tuna.zoopzoop.backend.domain.member.enums.Provider; import org.tuna.zoopzoop.backend.domain.member.repository.MemberRepository; @@ -35,9 +34,6 @@ public class NewsServiceTest { @Autowired private NewsService newsService; - @Autowired - private NewsAPIService newsAPIService; - @Autowired private MemberService memberService; @@ -50,12 +46,11 @@ public class NewsServiceTest { @Autowired private FolderRepository folderRepository; - @Autowired - private DataSourceService dataSourceService; - @Autowired private DataSourceRepository dataSourceRepository; + private Integer newsFolderId; + private final Map> tags = Map.ofEntries( Map.entry(1, List.of(new Tag("A"), new Tag("B"), new Tag("E"))), Map.entry(2, List.of(new Tag("B"), new Tag("E"), new Tag("F"))), @@ -100,6 +95,8 @@ public void setUp() { ); FolderResponse folderResponse = folderService.createFolderForPersonal(member.getId(), "newServiceTestFolder"); + newsFolderId = folderResponse.folderId(); + Folder folder = folderRepository.findById(folderResponse.folderId()).orElse(null); for(int i = 1; i <= 10; i++) { @@ -111,8 +108,7 @@ public void setUp() { @DisplayName("태그 빈도 수 추출 테스트") void DataSourceExtractTagsTest(){ Member member = memberService.findByProviderKey("newsServiceTestKey"); - List folderResponses = folderService.getFoldersForPersonal(member.getId()); - List frequency = newsService.getTagFrequencyFromFiles(member.getId(), folderResponses.get(0).folderId()); + List frequency = newsService.getTagFrequencyFromFiles(member.getId(), newsFolderId); assertEquals("E", frequency.get(0)); assertEquals("B", frequency.get(1));