Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
5155ff7
CLAP-110 Feature : 담당자별 작업 처리량 조회 API 구현
hyoseong-Choi Jan 23, 2025
b7f2c2a
CLAP-111 Refactor : 통계 조회 API 리팩토링 및 기능 수정
hyoseong-Choi Jan 23, 2025
87d0fdb
내 작업한 내용에 대한 설명
nano-mm Jan 23, 2025
534aa24
담당자 조회 API 구현
nano-mm Jan 24, 2025
2b7f448
CLAP-111 Refactor : 통계 조회 API 주소 통합, 리팩토링, 예외처리
hyoseong-Choi Jan 24, 2025
72a66e4
Bug : 프로퍼티파일 수정
hyoseong-Choi Jan 24, 2025
8458cbd
CLAP-104 CI/CD : CI에서 s3.yml 파일 생성하도록 수정
hyoseong-Choi Jan 26, 2025
eb34ee8
CLAP-146 Feature : 카테고리 목록 조회 API 구현
hyoseong-Choi Jan 26, 2025
8146776
CLAP-147 Feature : 카테고리 수정 API 구현
hyoseong-Choi Jan 26, 2025
d24fdf8
CLAP-147 Feature : 카테고리 추가, 수정 API 리뷰반영 수정
hyoseong-Choi Jan 28, 2025
a0ebd44
CLAP-148 Feature : 카테고리 삭제 API 구현
hyoseong-Choi Jan 28, 2025
5fcc496
Merge branch 'develop' into CLAP-148
hyoseong-Choi Jan 28, 2025
0ff4b3b
CLAP-148 Feature : 카테고리 삭제 API 수정
hyoseong-Choi Jan 28, 2025
eefe6ee
CLAP-148 Docs : 카테고리 API 스웨거 수정
hyoseong-Choi Jan 28, 2025
b30cdde
CLAP-107 Bug : CI test yml파일 key 중복 수정
hyoseong-Choi Jan 29, 2025
c3292fe
CLAP-148 Feature : 카테고리 CUD 리뷰 반영 수정, 조회 반환 양식 수정
hyoseong-Choi Jan 30, 2025
2d63e7e
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Jan 30, 2025
5085370
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 2, 2025
915e6f9
CLAP-214 Cleanup : 통계, 카테고리 미흡한부분 리팩토링
hyoseong-Choi Feb 2, 2025
27e09cc
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 2, 2025
68c9f08
CLAP-214 Fix : 통계조회 API 파라미터 바인딩 오류 수정
hyoseong-Choi Feb 2, 2025
4f338ad
CLAP-214 Fix : addConverter 수정
hyoseong-Choi Feb 2, 2025
51ab7a5
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 2, 2025
67fc667
CLAP-214 Hotfix : 추가한 파일들 제거
hyoseong-Choi Feb 2, 2025
e4dc477
CLAP-214 Hotfix : FindStatisticsController 스위치문 수정
hyoseong-Choi Feb 2, 2025
4875e32
CLAP-214 Hotfix : AddCategoryService 지연로딩 오류 수정
hyoseong-Choi Feb 2, 2025
ebd4bcd
CLAP-214 Hotfix : DeleteCategoryService 카테고리 삭제 로직 수정
hyoseong-Choi Feb 3, 2025
3e2f5ed
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 3, 2025
4a5e4f0
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 3, 2025
a2292c8
CLAP-249 Refactor : 통계 조회 서비스 리팩토링
hyoseong-Choi Feb 3, 2025
520f47f
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 3, 2025
93531b5
CLAP-250 Test : 통계 조회 테스트코드 작성
hyoseong-Choi Feb 3, 2025
280d930
CLAP-214 Hotifx : 카테고리 수정 로직 수정
hyoseong-Choi Feb 4, 2025
7be324a
CLAP-214 Hotifx : 카테고리 수정 로직 수정
hyoseong-Choi Feb 4, 2025
2381888
CLAP-256 fix: 스웨거 명세 추가
nano-mm Feb 4, 2025
e291921
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 5, 2025
efaaee3
CLAP-214 Hotifx : 카테고리 저장 트랜잭션 추가
hyoseong-Choi Feb 5, 2025
0e10e86
CLAP-214 Hotifx : 카테고리 저장 시간 수정
hyoseong-Choi Feb 5, 2025
40bc614
CLAP-285 Hotifx : 모든 카테고리 조회
hyoseong-Choi Feb 5, 2025
876c3ef
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 5, 2025
6ec2bd9
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 5, 2025
14db203
CLAP-214 Hotifx : 카테고리 조회 Secured 설정
hyoseong-Choi Feb 5, 2025
d87498c
CLAP-256 fix: convert 동작 mapper 추가
nano-mm Feb 5, 2025
bad0cef
CLAP-256 fix: conflict 해결
nano-mm Feb 5, 2025
844b838
CLAP-256 fix: 충돌해결
nano-mm Feb 6, 2025
893715e
CLAP-256 fix: 불필요한 테스트 파일 제거
nano-mm Feb 6, 2025
5b0b58e
CLAP-256 fix: 충돌 재해결
nano-mm Feb 6, 2025
0e4b6d7
CLAP-256 fix: mapper statuslabel 수정
nano-mm Feb 6, 2025
06b3279
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
d5c2a68
Merge branch 'CLAP-256-팀-작업-현황-에러-재수정' of https://github.com/TaskFlow…
hyoseong-Choi Feb 6, 2025
edca909
CLAP-256 Fix : 팀 작업 현황 필터링 조회 수정
hyoseong-Choi Feb 6, 2025
5626fd3
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
b6929d6
CLAP-299 Feature : 사용자 작업 취소
hyoseong-Choi Feb 6, 2025
95b1c26
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
3beb7c6
CLAP-299 Fix: 사용자 작업 취소 api 주소 수정
hyoseong-Choi Feb 6, 2025
06e152f
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
2bcb8f0
CLAP-256 전체 작업수 계산 로직 개선
nano-mm Feb 6, 2025
016b7cb
fix: env 파일 제거
nano-mm Feb 6, 2025
e857375
Merge branch 'CLAP-256-팀-작업-현황-에러-재수정' of https://github.com/TaskFlow…
hyoseong-Choi Feb 6, 2025
0ddbf8e
fix: 어노테이션 수정
nano-mm Feb 6, 2025
0a35db0
fix: @RestController 제거
nano-mm Feb 6, 2025
9605488
fix: @ApplicationService로 수정
nano-mm Feb 6, 2025
fd10e3e
Merge branch 'CLAP-256-팀-작업-현황-에러-재수정' of https://github.com/TaskFlow…
nano-mm Feb 6, 2025
244f408
Merge branch 'develop' into CLAP-256-팀-작업-현황-에러-재수정
hyoseong-Choi Feb 6, 2025
8c780cb
Merge branch 'CLAP-256-팀-작업-현황-에러-재수정' of https://github.com/TaskFlow…
hyoseong-Choi Feb 6, 2025
9a88797
CLAP-256 Fix : TeamStatusService 누락된 import 수정
hyoseong-Choi Feb 6, 2025
0613040
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
8aa18d2
CLAP-256 Fix : TeamStatusService Secured 추가
hyoseong-Choi Feb 6, 2025
97ea235
fix: 팀 작업 현황 필터링 조회 수정 및 정렬 기능 개선
nano-mm Feb 6, 2025
62fde13
충돌 해결: develop 브랜치와 병합
nano-mm Feb 6, 2025
21635ed
Delete src/main/resources/env.properties
nano-mm Feb 6, 2025
a1e9beb
Delete src/test/resources/application.yml
nano-mm Feb 6, 2025
ee8ffd5
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
4ae0752
충돌 해결: develop 브랜치와 병합
nano-mm Feb 6, 2025
21a1a26
Update application.yml
nano-mm Feb 6, 2025
2be6e45
Revert application.yml files to match develop branch
nano-mm Feb 6, 2025
ceea328
Resolve merge conflicts
nano-mm Feb 6, 2025
e72b634
CLAP-256 fix: Update application.yml
nano-mm Feb 6, 2025
b8bd148
CLAP-256 fix: Update application.yml
nano-mm Feb 6, 2025
fbfb2a7
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
614c1f2
Merge branch 'CLAP-256-팀-작업-현황-에러-재수정' of https://github.com/TaskFlow…
hyoseong-Choi Feb 6, 2025
473387a
CLAP-256 Fix : 팀 현황 필터조회 기여도순 정렬 수정
hyoseong-Choi Feb 6, 2025
7f4649b
CLAP-309 Fix : 엘라스틱서치에 저장할 작업 정보 수정
hyoseong-Choi Feb 6, 2025
5aa1bec
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 6, 2025
173aa9b
CLAP-309 Fix : 엘라스틱서치에 저장 누락되는것 수정
hyoseong-Choi Feb 6, 2025
d009316
CLAP-test
parkjaehak Feb 7, 2025
e6158cc
Merge branch 'test' of https://github.com/TaskFlow-CLAP/TaskFlow-Serv…
hyoseong-Choi Feb 7, 2025
1ea4568
CLAP-318 Fix : 2차카테고리 입력 양식(설명 예시) 추가
hyoseong-Choi Feb 7, 2025
ca85227
Merge branch 'develop' of https://github.com/TaskFlow-CLAP/TaskFlow-S…
hyoseong-Choi Feb 7, 2025
cdbdb49
CLAP-318 Test : 2차카테고리 입력 양식(설명 예시) 추가한 테스트코드 수정
hyoseong-Choi Feb 7, 2025
af05e86
CLAP-318 Feature : 2차카테고리 단일조회 API
hyoseong-Choi Feb 7, 2025
c10e314
CLAP-318 Feature : 2차카테고리 경로 수정 원복
hyoseong-Choi Feb 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ public void addMainCategory(@AuthenticationPrincipal SecurityUserDetails userInf
@PostMapping("/sub-category")
@Secured("ROLE_ADMIN")
public void addSubCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @Valid @RequestBody AddSubCategoryRequest addCategoryRequest) {
addSubCategoryUsecase.addSubCategory(userInfo.getUserId(), addCategoryRequest.mainCategoryId(), addCategoryRequest.code(), addCategoryRequest.name());
addSubCategoryUsecase.addSubCategory(userInfo.getUserId(),
addCategoryRequest.mainCategoryId(),
addCategoryRequest.code(),
addCategoryRequest.name(),
addCategoryRequest.descriptionExample());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
Expand All @@ -33,17 +34,24 @@ public ResponseEntity<List<FindAllCategoryResponse>> findAllCategory() {
return ResponseEntity.ok(findAllCategoryUsecase.findAllCategory());
}

@Operation(summary = "1차 카테고리 조회")
@Operation(summary = "1차 카테고리 목록 조회")
@GetMapping("/main-category")
@Secured({"ROLE_USER", "ROLE_MANAGER", "ROLE_ADMIN"})
public ResponseEntity<List<FindMainCategoryResponse>> findMainCategory() {
return ResponseEntity.ok(findmainCategoryUsecase.findMainCategory());
}

@Operation(summary = "2차 카테고리 조회")
@Operation(summary = "2차 카테고리 목록 조회")
@GetMapping("/sub-category")
@Secured({"ROLE_USER", "ROLE_MANAGER", "ROLE_ADMIN"})
public ResponseEntity<List<FindSubCategoryResponse>> findSubCategory() {
return ResponseEntity.ok(findsubCategoryUsecase.findSubCategory());
}

@Operation(summary = "2차 카테고리 단일 조회")
@GetMapping("/sub-categories/{categoryId}")
@Secured({"ROLE_USER", "ROLE_MANAGER", "ROLE_ADMIN"})
public ResponseEntity<FindSubCategoryResponse> findOneSubCategory(@PathVariable Long categoryId) {
return ResponseEntity.ok(findsubCategoryUsecase.findOneSubCategory(categoryId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ public class UpdateCategoryController {
@Secured("ROLE_ADMIN")
public void updateCategory(@AuthenticationPrincipal SecurityUserDetails userInfo, @PathVariable Long categoryId,
@Valid @RequestBody UpdateCategoryRequest updateCategoryRequest) {
updateCategoryUsecase.updateCategory(userInfo.getUserId(), categoryId, updateCategoryRequest.name(), updateCategoryRequest.code());
updateCategoryUsecase.updateCategory(userInfo.getUserId(),
categoryId,
updateCategoryRequest.name(),
updateCategoryRequest.code(),
updateCategoryRequest.descriptionExample());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ public record AddSubCategoryRequest(
@NotBlank @Length(max = 20)
String name,
@NotBlank @Pattern(regexp = "^[A-Z]{1,2}$", message = "올바른 카테고리 코드 형식이 아닙니다.")
String code) {
String code,
String descriptionExample) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public record UpdateCategoryRequest(
@NotBlank @Length(max = 20)
String name,
@NotBlank @Pattern(regexp = "^[A-Z]{1,2}$", message = "올바른 카테고리 코드 형식이 아닙니다.")
String code
String code,
String descriptionExample
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ public record FindSubCategoryResponse(
Long id,
Long mainCategoryId,
String name,
String code
String code,
String descriptionExample
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,9 @@ public Comment saveComment(Comment comment) {
public void deleteCommentWithTaskHistory(Long commentId) {
commentRepository.deleteCommentWithTaskHistory(commentId);
}

@Override
public void deleteComment(Comment comment) {
commentRepository.delete(commentPersistenceMapper.toEntity(comment));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,9 @@ public TaskHistory save(TaskHistory taskHistory) {
TaskHistoryEntity savedTaskHistoryEntity = taskHistoryRepository.save(taskHistoryEntity);
return taskHistoryPersistenceMapper.toDomain(savedTaskHistoryEntity);
}

@Override
public void deleteTaskHistoryByCommentId(Long commentId) {
taskHistoryRepository.updateByComment_CommentId(commentId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,8 @@
import org.springframework.stereotype.Repository;

@Repository
public interface TaskHistoryRepository extends JpaRepository<TaskHistoryEntity, Long> , TaskHistoryCustomRepository{
}
public interface TaskHistoryRepository extends JpaRepository<TaskHistoryEntity, Long>, TaskHistoryCustomRepository {
@Modifying
@Query("UPDATE TaskHistoryEntity t SET t.isDeleted = true WHERE t.comment.commentId = :commentId")
void updateByComment_CommentId(@Param("commentId") Long commentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ public static FindMainCategoryResponse toFindMainCategoryResponse(Category categ
}

public static FindSubCategoryResponse toFindSubCategoryResponse(Category category) {
return new FindSubCategoryResponse(category.getCategoryId(), category.getMainCategory().getCategoryId(), category.getName(), category.getCode());
return new FindSubCategoryResponse(category.getCategoryId(), category.getMainCategory().getCategoryId(), category.getName(), category.getCode(), category.getDescriptionExample());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package clap.server.application.port.inbound.admin;

public interface AddSubCategoryUsecase {
void addSubCategory(Long adminId, Long mainCategoryId, String code, String name);
void addSubCategory(Long adminId, Long mainCategoryId, String code, String name, String descriptionExample);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@

public interface FindSubCategoryUsecase {
List<FindSubCategoryResponse> findSubCategory();
FindSubCategoryResponse findOneSubCategory(Long categoryId);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package clap.server.application.port.inbound.admin;

public interface UpdateCategoryUsecase {
void updateCategory(Long adminId, Long categoryId, String name, String code);
void updateCategory(Long adminId, Long categoryId, String name, String code, String descriptionExample);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ public interface CommandCommentPort {
Comment saveComment(Comment comment);

void deleteCommentWithTaskHistory(Long commentId);

void deleteComment(Comment comment);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@

public interface CommandTaskHistoryPort {
TaskHistory save(TaskHistory taskHistory);

void deleteTaskHistoryByCommentId(Long commentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ public void addMainCategory(Long adminId, String code, String name) {

@Override
@Transactional
public void addSubCategory(Long adminId, Long mainCategoryId, String code, String name) {
public void addSubCategory(Long adminId, Long mainCategoryId, String code, String name, String descriptionExample) {
Optional<Member> activeMember = loadMemberPort.findActiveMemberById(adminId);
Optional<Category> mainCategory = loadCategoryPort.findById(mainCategoryId);

Category subCategory = Category.createSubCategory(
activeMember.orElseThrow(() -> new ApplicationException(ACTIVE_MEMBER_NOT_FOUND)),
mainCategory.orElseThrow(() -> new ApplicationException(CATEGORY_NOT_FOUND)),
code, name);
code, name, descriptionExample);
commandCategoryPort.save(subCategory);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import clap.server.application.port.inbound.admin.FindSubCategoryUsecase;
import clap.server.application.port.outbound.task.LoadCategoryPort;
import clap.server.common.annotation.architecture.ApplicationService;
import clap.server.exception.ApplicationException;
import clap.server.exception.code.TaskErrorCode;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -16,11 +18,19 @@ public class FindSubCategoryService implements FindSubCategoryUsecase {
private final LoadCategoryPort loadCategoryPort;

@Override
@Transactional
@Transactional(readOnly = true)
public List<FindSubCategoryResponse> findSubCategory() {
return loadCategoryPort.findSubCategory()
.stream()
.map(CategoryResponseMapper::toFindSubCategoryResponse)
.toList();
}

@Override
@Transactional(readOnly = true)
public FindSubCategoryResponse findOneSubCategory(Long categoryId) {
return CategoryResponseMapper.toFindSubCategoryResponse(loadCategoryPort
.findById(categoryId)
.orElseThrow(() -> new ApplicationException(TaskErrorCode.CATEGORY_NOT_FOUND)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ public class UpdateCategoryService implements UpdateCategoryUsecase {

@Override
@Transactional
public void updateCategory(Long adminId, Long categoryId, String name, String code) {
public void updateCategory(Long adminId, Long categoryId, String name, String code, String descriptionExample) {
Member admin = loadMemberPort.findActiveMemberById(adminId).orElseThrow(() -> new ApplicationException(ACTIVE_MEMBER_NOT_FOUND));
Category category = loadCategoryPort.findById(categoryId)
.orElseThrow(() -> new ApplicationException(CATEGORY_NOT_FOUND));
category.updateCategory(admin, name, code);
category.updateCategory(admin, name, code, descriptionExample);
commandCategoryPort.save(category);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,16 @@ public void deleteComment(Long userId, Long commentId) {
Member member = memberService.findActiveMember(userId);
Comment comment = commentService.findById(commentId);

if (Objects.equals(comment.getMember().getMemberId(), member.getMemberId())) {
if (Member.checkCommenter(comment.getTask(), member)) {
// 첨부파일이 있을 경우 삭제
if (loadAttachmentPort.exitsByCommentId(commentId)) {
deleteAttachments(commentId);
}
commandCommentPort.deleteCommentWithTaskHistory(commentId);
}else{
throw new DomainException(MemberErrorCode.NOT_A_COMMENTER);
// comment 삭제
commandCommentPort.deleteComment(comment);
// comment와 관련된 taskHistory도 함께 삭제

commandTaskHistoryPort.deleteTaskHistoryByCommentId(commentId);
}
}

Expand Down
6 changes: 4 additions & 2 deletions src/main/java/clap/server/domain/model/task/Category.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,21 @@ public static Category createMainCategory(Member admin, String code, String name
.build();
}

public static Category createSubCategory(Member admin, Category mainCategory, String code, String name) {
public static Category createSubCategory(Member admin, Category mainCategory, String code, String name, String descriptionExample) {
return Category.builder()
.mainCategory(mainCategory)
.admin(admin)
.code(code)
.name(name)
.descriptionExample(descriptionExample != null ? descriptionExample : "")
.build();
}

public void updateCategory(Member admin, String name, String code){
public void updateCategory(Member admin, String name, String code, String descriptionExample){
this.admin = admin;
this.name = name;
this.code = code;
this.descriptionExample = descriptionExample != null ? descriptionExample : "";
}

public void deleteCategory(Member admin) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ void addMainCategory() {
@Test
void addSubCategory() {
MemberEntity admin = entityManager.find(MemberEntity.class, 1);
addCategoryService.addSubCategory(admin.getMemberId(), 1L, "CR", "생성");
addCategoryService.addSubCategory(admin.getMemberId(), 1L,
"CR", "생성", "vm이름:\n이미지:\n인스턴스 유형\n볼륨 용량\nvpc이름:\n보안그룸:");

CategoryEntity category = entityManager.find(CategoryEntity.class, 2);
assertThat(category.getCategoryId()).isEqualTo(2);
Expand Down