Skip to content

Commit d04d4d9

Browse files
committed
test: test코드 수정
1 parent 19a8a8d commit d04d4d9

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/test/java/io/crops/warmletter/domain/badword/cache/BadWordCacheInitializerTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ void loadBadWordsRedis_WithWords() {
4646
Long id2 = 2L;
4747
// given
4848
List<BadWordResponse> badWords = List.of(
49-
new BadWordResponse(id1, "시발"),
50-
new BadWordResponse(id2, "병신")
49+
new BadWordResponse(id1, "시발", true),
50+
new BadWordResponse(id2, "병신", true)
5151
);
5252
when(badWordRepository.findAllBadWords()).thenReturn(badWords);
5353

src/test/java/io/crops/warmletter/domain/badword/service/BadWordServiceTest.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,39 +131,52 @@ void updateBadWordStatus_activate_success() {
131131
.build();
132132
UpdateBadWordStatusRequest request = new UpdateBadWordStatusRequest(true);
133133

134+
// badWordRepository.findById() 호출에 대해 badWord 반환
134135
when(badWordRepository.findById(1L)).thenReturn(Optional.of(badWord));
136+
// badWordRepository.save() 호출 시 입력된 객체에 ID를 설정하여 반환하도록 스텁 설정
137+
when(badWordRepository.save(any(BadWord.class))).thenAnswer(invocation -> {
138+
BadWord updated = invocation.getArgument(0);
139+
// 예시로 ID를 1L로 설정
140+
ReflectionTestUtils.setField(updated, "id", 1L);
141+
return updated;
142+
});
143+
135144
// when
136145
badWordService.updateBadWordStatus(1L, request);
137146

138147
// then
139148
assertTrue(badWord.isUsed());
140-
// 서비스 코드에서 hashOperations.put 호출하므로 해당 호출 검증
149+
// hashOperations.put 호출 검증 (활성화 상태이므로 Redis에 업데이트)
141150
verify(hashOperations).put("bad_word", "1", "비속어");
142151
}
143152

144-
145153
@Test
146154
@DisplayName("금칙어 상태 업데이트 - 비활성화 성공")
147155
void updateBadWordStatus_deactivate_success() {
148156
// given
149157
BadWord badWord = BadWord.builder()
150-
.id(1L) // ID를 직접 할당
158+
.id(1L) // ID 직접 할당
151159
.word("비속어")
152160
.isUsed(true)
153161
.build();
154162

155163
UpdateBadWordStatusRequest request = new UpdateBadWordStatusRequest(false);
156164

157-
// Mock 동작 설정
165+
// findById는 기존 badWord를 반환하도록 설정
158166
when(badWordRepository.findById(1L)).thenReturn(Optional.of(badWord));
159-
// when
167+
// save() 호출 시 업데이트된 객체를 반환하도록 스텁 설정 (이 경우 ID는 그대로 1L)
168+
when(badWordRepository.save(any(BadWord.class))).thenAnswer(invocation -> invocation.getArgument(0));
169+
170+
// when: 상태 업데이트 메서드 호출 (비활성화)
160171
badWordService.updateBadWordStatus(1L, request);
161172

162173
// then
163-
assertFalse(badWord.isUsed()); // 상태 업데이트 확인
174+
// 상태가 false로 변경되었는지 검증
175+
assertFalse(badWord.isUsed());
176+
// Redis 캐시에서 해당 금칙어 삭제가 호출되었는지 검증
164177
verify(hashOperations).delete("bad_word", "1", "비속어");
165178
}
166-
//
179+
167180
@Test
168181
@DisplayName("금칙어가 포함되어 있지 않을 때 정상 통과")
169182
void validateText_noBadWord_success() {
@@ -286,7 +299,6 @@ void deleteBadWord_success() {
286299
// given
287300
Long badWordId = 1L;
288301
BadWord badWord = new BadWord();
289-
// 필요한 경우 badWord에 속성을 추가할 수 있습니다.
290302
when(badWordRepository.findById(badWordId)).thenReturn(Optional.of(badWord));
291303

292304
// when
@@ -311,15 +323,13 @@ void deleteBadWord_notFound() {
311323
@Test
312324
@DisplayName("금칙어가 포함된 경우 - 예외 발생")
313325
void testValidateTextWithBadWord() {
314-
// 테스트용 텍스트: 금칙어가 독립된 단어로 존재하도록 공백을 둡니다.
315326
String targetStr = "이 문장에는 금칙어0 가 포함되어 있습니다.";
316327
System.out.println("targetStr: " + targetStr);
317328

318329
// 해당 테스트에서 사용할 모의 금칙어 데이터: 오직 "금칙어0"만 포함
319330
Map<Object, Object> testBadWords = new HashMap<>();
320331
testBadWords.put("1", "금칙어0");
321332

322-
// 테스트 케이스 내에서 모의 데이터를 재설정(오버라이드)합니다.
323333
when(hashOperations.entries(BAD_WORD_KEY)).thenReturn(testBadWords);
324334
assertThrows(BadWordContainsException.class, () -> {
325335
badWordService.validateText(targetStr);

0 commit comments

Comments
 (0)