Skip to content

Commit 9660b2a

Browse files
Sihun23Sihun23
authored andcommitted
CLAP-284 fix:RegisterMemberCSVService 수정에 따른 test code 수정
1 parent 89cce0f commit 9660b2a

File tree

1 file changed

+33
-42
lines changed

1 file changed

+33
-42
lines changed

src/test/java/clap/server/application/service/admin/RegisterMemberCSVServiceTest.java

Lines changed: 33 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import org.springframework.mock.web.MockMultipartFile;
1313
import org.springframework.web.multipart.MultipartFile;
1414

15-
import java.io.IOException;
1615
import java.util.List;
1716

1817
import static org.junit.jupiter.api.Assertions.*;
@@ -25,7 +24,6 @@ class RegisterMemberCSVServiceTest {
2524
private CommandMemberPort commandMemberPort;
2625
private CsvParseService csvParseService;
2726

28-
2927
@BeforeEach
3028
void setup() {
3129
memberService = Mockito.mock(MemberService.class);
@@ -35,30 +33,30 @@ void setup() {
3533
}
3634

3735
/**
38-
* 정상적인 회원 등록 테스트
39-
* - 주어진 CSV 파일을 정상적으로 파싱하여 회원이 등록되는지 검증
36+
* ✅ 정상적인 회원 등록 테스트
4037
*/
4138
@Test
4239
@DisplayName("CSV 파일에서 회원 정보를 성공적으로 파싱하고 등록하는지 검증한다.")
4340
void testRegisterMembersFromCsvSuccess() {
4441
Long adminId = 1L;
45-
MultipartFile file = new MockMultipartFile("file", "members.csv", "text/csv", "dummy-content".getBytes());
42+
MultipartFile file = new MockMultipartFile("file", "members.csv", "text/csv", "name,nickname,departmentId,departmentRole,email,role,isReviewer\nJohn,JohnDoe,1,Manager,john.doe@example.com,ROLE_USER,TRUE".getBytes());
4643

4744
Member admin = Mockito.mock(Member.class);
48-
List<Member> parsedMembers = List.of(Mockito.mock(Member.class), Mockito.mock(Member.class));
45+
Member member1 = Mockito.mock(Member.class);
46+
Member member2 = Mockito.mock(Member.class);
47+
List<Member> parsedMembers = List.of(member1, member2);
4948

5049
when(memberService.findActiveMember(adminId)).thenReturn(admin);
5150
when(csvParseService.parseDataAndMapToMember(file)).thenReturn(parsedMembers);
5251

5352
int addedCount = registerMemberCSVService.registerMembersFromCsv(adminId, file);
5453

55-
assertEquals(2, addedCount);
56-
verify(commandMemberPort).saveAll(parsedMembers);
57-
verify(parsedMembers.get(0)).register(admin);
58-
verify(parsedMembers.get(1)).register(admin);
54+
assertEquals(2, addedCount); // 2명이 성공적으로 등록됨
55+
verify(commandMemberPort).saveAll(parsedMembers); // 모든 회원 저장
56+
verify(member1).register(admin); // 관리자와 연결
57+
verify(member2).register(admin); // 관리자와 연결
5958
}
6059

61-
6260
/**
6361
* ❌ 관리자 찾기 실패 (MEMBER_NOT_FOUND)
6462
*/
@@ -74,9 +72,8 @@ void testRegisterMembersFromCsvThrowsWhenAdminNotFound() {
7472
registerMemberCSVService.registerMembersFromCsv(adminId, file);
7573
});
7674

77-
// 검증: 발생한 예외가 `MEMBER_NOT_FOUND`인지 확인
7875
assertEquals(MemberErrorCode.MEMBER_NOT_FOUND.getCustomCode(), exception.getCode().getCustomCode());
79-
verifyNoInteractions(commandMemberPort); // 회원 저장 로직이 실행안됨
76+
verifyNoInteractions(commandMemberPort); // 저장 로직 실행 안됨
8077
}
8178

8279
/**
@@ -88,45 +85,39 @@ void testRegisterMembersFromCsvThrowsWhenCsvParsingFails() {
8885
Long adminId = 1L;
8986
MultipartFile file = new MockMultipartFile("file", "members.csv", "text/csv", "dummy-content".getBytes());
9087

91-
// ✅ Mock 객체 설정: CSV 파싱 과정에서 예외 발생하도록 설정
9288
when(csvParseService.parseDataAndMapToMember(file)).thenThrow(new ApplicationException(MemberErrorCode.CSV_PARSING_ERROR));
9389

94-
// 🔹 유스케이스 실행 및 예외 검증
9590
ApplicationException exception = assertThrows(ApplicationException.class, () -> {
9691
registerMemberCSVService.registerMembersFromCsv(adminId, file);
9792
});
9893

99-
// ✅ 검증: 발생한 예외가 `CSV_PARSING_ERROR`인지 확인
10094
assertEquals(MemberErrorCode.CSV_PARSING_ERROR.getCustomCode(), exception.getCode().getCustomCode());
101-
verifyNoInteractions(commandMemberPort); // ❗ 회원 저장 로직이 실행되지 않아야 함
95+
verifyNoInteractions(commandMemberPort); // 저장 로직 실행 안됨
10296
}
10397

10498
/**
10599
* ❌ 회원 등록 실패 (MEMBER_REGISTRATION_FAILED)
106-
*
107100
*/
108-
// @Test
109-
// @DisplayName("회원 등록 과정 중 실패 시 예외 발생 및 부분 저장 된다.")
110-
// void testRegisterMembersFromCsvThrowsWhenSavingMemberFails() {
111-
// Long adminId = 1L;
112-
// MultipartFile file = new MockMultipartFile("file", "members.csv", "text/csv", "dummy-content".getBytes());
113-
//
114-
// Member admin = Mockito.mock(Member.class);
115-
// Member failingMember = Mockito.mock(Member.class);
116-
// List<Member> parsedMembers = List.of(failingMember, Mockito.mock(Member.class));
117-
//
118-
// // 특정 회원 등록 중 예외 발생
119-
// when(memberService.findActiveMember(adminId)).thenReturn(admin);
120-
// when(csvParseService.parseDataAndMapToMember(file)).thenReturn(parsedMembers);
121-
// doThrow(new ApplicationException(MemberErrorCode.MEMBER_REGISTRATION_FAILED))
122-
// .when(commandMemberPort).save(failingMember);
123-
//
124-
// // Usecase 실행
125-
// ApplicationException exception = assertThrows(ApplicationException.class, () -> {
126-
// registerMemberCSVService.registerMembersFromCsv(adminId, file);
127-
// });
128-
//
129-
// assertEquals(MemberErrorCode.MEMBER_REGISTRATION_FAILED.getCustomCode(), exception.getCode().getCustomCode());
130-
// verify(commandMemberPort, times(1)).save(failingMember); // ❗ 실패한 회원만 저장 시도해야 함
131-
// }
101+
@Test
102+
@DisplayName("회원 등록 과정 중 실패 시 예외 발생 및 회원 저장이 중단된다.")
103+
void testRegisterMembersFromCsvThrowsWhenSavingMemberFails() {
104+
Long adminId = 1L;
105+
MultipartFile file = new MockMultipartFile("file", "members.csv", "text/csv", "dummy-content".getBytes());
106+
107+
Member admin = Mockito.mock(Member.class);
108+
Member failingMember = Mockito.mock(Member.class);
109+
List<Member> parsedMembers = List.of(failingMember);
110+
111+
when(memberService.findActiveMember(adminId)).thenReturn(admin);
112+
when(csvParseService.parseDataAndMapToMember(file)).thenReturn(parsedMembers);
113+
doThrow(new ApplicationException(MemberErrorCode.MEMBER_REGISTRATION_FAILED))
114+
.when(commandMemberPort).saveAll(parsedMembers);
115+
116+
ApplicationException exception = assertThrows(ApplicationException.class, () -> {
117+
registerMemberCSVService.registerMembersFromCsv(adminId, file);
118+
});
119+
120+
assertEquals(MemberErrorCode.MEMBER_REGISTRATION_FAILED.getCustomCode(), exception.getCode().getCustomCode());
121+
verify(commandMemberPort).saveAll(parsedMembers);
122+
}
132123
}

0 commit comments

Comments
 (0)