Skip to content

Commit f5f2e82

Browse files
committed
test: GenerationService의 테스트 코드 작성 (DASOMBE-16)
1 parent c6ef036 commit f5f2e82

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package dmu.dasom.api.global.generation;
2+
3+
import dmu.dasom.api.domain.common.exception.CustomException;
4+
import dmu.dasom.api.domain.common.exception.ErrorCode;
5+
import dmu.dasom.api.global.generation.entity.Generation;
6+
import dmu.dasom.api.global.generation.repository.GenerationRepository;
7+
import dmu.dasom.api.global.generation.service.GenerationService;
8+
import org.junit.jupiter.api.DisplayName;
9+
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.extension.ExtendWith;
11+
import org.mockito.InjectMocks;
12+
import org.mockito.Mock;
13+
import org.mockito.junit.jupiter.MockitoExtension;
14+
15+
import java.util.Optional;
16+
17+
import static org.junit.jupiter.api.Assertions.*;
18+
import static org.mockito.Mockito.*;
19+
20+
@ExtendWith(MockitoExtension.class)
21+
class GenerationServiceTest {
22+
23+
@Mock
24+
private GenerationRepository generationRepository;
25+
26+
@InjectMocks
27+
private GenerationService generationService;
28+
29+
@Test
30+
@DisplayName("기수 조회 - 저장된 기수 존재")
31+
void getCurrentGeneration_success_existing() {
32+
// given
33+
Generation generation = Generation.builder().generation("36기").build();
34+
when(generationRepository.findFirstByOrderByIdDesc()).thenReturn(Optional.of(generation));
35+
36+
// when
37+
String current = generationService.getCurrentGeneration();
38+
39+
// then
40+
assertEquals("36기", current);
41+
verify(generationRepository).findFirstByOrderByIdDesc();
42+
}
43+
44+
@Test
45+
@DisplayName("기수 조회 - 저장된 기수 없음, 기본값 사용")
46+
void getCurrentGeneration_success_default() {
47+
// given
48+
when(generationRepository.findFirstByOrderByIdDesc()).thenReturn(Optional.empty());
49+
50+
// when
51+
String current = generationService.getCurrentGeneration();
52+
53+
// then
54+
assertEquals("34기", current);
55+
verify(generationRepository).findFirstByOrderByIdDesc();
56+
}
57+
58+
@Test
59+
@DisplayName("기수 저장 - 신규 생성")
60+
void saveOrUpdateGeneration_success_new() {
61+
// given
62+
String newGenerationValue = "37기";
63+
when(generationRepository.findFirstByOrderByIdDesc()).thenReturn(Optional.empty());
64+
65+
// when
66+
generationService.saveOrUpdateGeneration(newGenerationValue);
67+
68+
// then
69+
verify(generationRepository).findFirstByOrderByIdDesc();
70+
verify(generationRepository).save(any(Generation.class));
71+
}
72+
73+
@Test
74+
@DisplayName("기수 저장 - 기존 값 업데이트")
75+
void saveOrUpdateGeneration_success_update() {
76+
// given
77+
String updatedValue = "38기";
78+
Generation existingGeneration = Generation.builder().generation("37기").build();
79+
when(generationRepository.findFirstByOrderByIdDesc()).thenReturn(Optional.of(existingGeneration));
80+
81+
// when
82+
generationService.saveOrUpdateGeneration(updatedValue);
83+
84+
// then
85+
assertEquals("38기", existingGeneration.getGeneration());
86+
verify(generationRepository).findFirstByOrderByIdDesc();
87+
verify(generationRepository).save(existingGeneration);
88+
}
89+
90+
@Test
91+
@DisplayName("기수 저장 - 잘못된 형식으로 실패")
92+
void saveOrUpdateGeneration_fail_invalidFormat() {
93+
// given
94+
String invalidValue = "abc123";
95+
96+
// when
97+
CustomException exception = assertThrows(CustomException.class, () -> {
98+
generationService.saveOrUpdateGeneration(invalidValue);
99+
});
100+
101+
// then
102+
assertEquals(ErrorCode.INVALID_GENERATION_FORMAT, exception.getErrorCode());
103+
verifyNoInteractions(generationRepository);
104+
}
105+
}

0 commit comments

Comments
 (0)