Skip to content

Commit acc2c1b

Browse files
committed
refactor: 모집일정의 조회, 수정 부분에 기수 반영 및 테스트코드에 반영하고 기수 조회, 수정 코드 하단에 추가 (DASOMBE-16)
1 parent 1e7809b commit acc2c1b

File tree

3 files changed

+90
-10
lines changed

3 files changed

+90
-10
lines changed

src/main/java/dmu/dasom/api/domain/recruit/entity/Recruit.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,19 @@ public void updateTime(final LocalTime time) {
3737
this.value = time.format(TIME_FORMATTER);
3838
}
3939

40+
41+
// 기수 업데이트
42+
public void updateGeneration(final String generation) {
43+
this.value = generation; // ex. "34기"
44+
}
45+
4046
public RecruitConfigResponseDto toResponse() {
47+
if(this.key == ConfigKey.GENERATION){
48+
return RecruitConfigResponseDto.builder()
49+
.key(key)
50+
.value(value)
51+
.build();
52+
}
4153
LocalDateTime dateTime = LocalDateTime.parse(this.value, DATE_TIME_FORMATTER);
4254
return RecruitConfigResponseDto.builder()
4355
.key(key)

src/main/java/dmu/dasom/api/domain/recruit/service/RecruitServiceImpl.java

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import dmu.dasom.api.domain.recruit.enums.ConfigKey;
99
import dmu.dasom.api.domain.recruit.enums.ResultCheckType;
1010
import dmu.dasom.api.domain.recruit.repository.RecruitRepository;
11+
import dmu.dasom.api.global.generation.service.GenerationService;
1112
import lombok.RequiredArgsConstructor;
1213
import org.springframework.stereotype.Service;
1314
import org.springframework.transaction.annotation.Transactional;
@@ -24,14 +25,26 @@
2425
public class RecruitServiceImpl implements RecruitService {
2526

2627
private final RecruitRepository recruitRepository;
28+
private final GenerationService generationService;
2729

2830
// 모집 일정 설정 조회
2931
@Override
3032
public List<RecruitConfigResponseDto> getRecruitSchedule() {
3133
return findAll().stream()
32-
.map(config -> config.getKey() == ConfigKey.INTERVIEW_TIME_START || config.getKey() == ConfigKey.INTERVIEW_TIME_END
33-
? config.toTimeResponse() : config.toResponse())
34-
.toList();
34+
.map(config -> {
35+
if(config.getKey() == ConfigKey.GENERATION) { //기수 조회 추가
36+
String currentGeneration = generationService.getCurrentGeneration();
37+
return RecruitConfigResponseDto.builder()
38+
.key(ConfigKey.GENERATION)
39+
.value(currentGeneration)
40+
.build();
41+
} else if(config.getKey() == ConfigKey.INTERVIEW_TIME_START || config.getKey() == ConfigKey.INTERVIEW_TIME_END) {
42+
return config.toTimeResponse();
43+
} else {
44+
return config.toResponse();
45+
}
46+
})
47+
.toList();
3548
}
3649

3750
// 모집 일정 설정 수정
@@ -45,9 +58,13 @@ public void modifyRecruitSchedule(final RecruitScheduleModifyRequestDto request)
4558
config.updateTime(time);
4659
return;
4760
}
48-
49-
final LocalDateTime dateTime = parseDateTimeFormat(request.getValue());
50-
config.updateDateTime(dateTime);
61+
else {
62+
final LocalDateTime dateTime = parseDateTimeFormat(request.getValue());
63+
config.updateDateTime(dateTime);
64+
}
65+
final Recruit generationConfig = findByKey(ConfigKey.GENERATION);
66+
String currentGeneration = generationService.getCurrentGeneration();
67+
generationConfig.updateGeneration(currentGeneration);
5168
}
5269

5370
// 모집 기간 여부 확인

src/test/java/dmu/dasom/api/domain/recruit/RecruitServiceTest.java

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import dmu.dasom.api.domain.recruit.enums.ResultCheckType;
1818
import dmu.dasom.api.domain.recruit.repository.RecruitRepository;
1919
import dmu.dasom.api.domain.recruit.service.RecruitServiceImpl;
20+
import dmu.dasom.api.global.generation.service.GenerationService;
2021
import org.junit.jupiter.api.DisplayName;
2122
import org.junit.jupiter.api.Test;
2223
import org.junit.jupiter.api.extension.ExtendWith;
@@ -33,7 +34,6 @@
3334

3435
import static org.junit.jupiter.api.Assertions.*;
3536
import static org.mockito.Mockito.*;
36-
import static org.mockito.Mockito.mock;
3737

3838
@ExtendWith(MockitoExtension.class)
3939
class RecruitServiceTest {
@@ -47,6 +47,9 @@ class RecruitServiceTest {
4747
@Mock
4848
private InterviewServiceImpl interviewService;
4949

50+
@Mock
51+
private GenerationService generationService;
52+
5053
@InjectMocks
5154
private RecruitServiceImpl recruitService;
5255

@@ -56,32 +59,42 @@ void getRecruitSchedule() {
5659
// given
5760
Recruit recruit1 = mock(Recruit.class);
5861
Recruit recruit2 = mock(Recruit.class);
59-
when(recruitRepository.findAll()).thenReturn(List.of(recruit1, recruit2));
62+
Recruit recruit3 = mock(Recruit.class);
63+
when(recruitRepository.findAll()).thenReturn(List.of(recruit1, recruit2, recruit3));
64+
when(recruit1.getKey()).thenReturn(ConfigKey.RECRUITMENT_PERIOD_START);
65+
when(recruit2.getKey()).thenReturn(ConfigKey.RECRUITMENT_PERIOD_END);
66+
when(recruit3.getKey()).thenReturn(ConfigKey.GENERATION);
67+
when(generationService.getCurrentGeneration()).thenReturn("34기");
6068

6169
// when
6270
List<RecruitConfigResponseDto> schedule = recruitService.getRecruitSchedule();
6371

6472
// then
6573
assertNotNull(schedule);
66-
assertEquals(2, schedule.size());
74+
assertEquals(3, schedule.size());
6775
verify(recruitRepository, times(1)).findAll();
76+
verify(generationService, times(1)).getCurrentGeneration();
6877
}
6978

7079
@Test
7180
@DisplayName("모집 일정 수정 - 성공")
7281
void modifyRecruitSchedule_success() {
7382
// given
7483
Recruit recruit = mock(Recruit.class);
84+
Recruit generationRecruit = mock(Recruit.class);
7585
RecruitScheduleModifyRequestDto request = mock(RecruitScheduleModifyRequestDto.class);
7686
when(request.getKey()).thenReturn(ConfigKey.RECRUITMENT_PERIOD_START);
7787
when(request.getValue()).thenReturn("2025-01-02T12:00:00");
7888
when(recruitRepository.findByKey(ConfigKey.RECRUITMENT_PERIOD_START)).thenReturn(Optional.of(recruit));
89+
when(recruitRepository.findByKey(ConfigKey.GENERATION)).thenReturn(Optional.of(generationRecruit));
90+
when(generationService.getCurrentGeneration()).thenReturn("34기");
7991

8092
// when
8193
recruitService.modifyRecruitSchedule(request);
8294

8395
// then
8496
verify(recruit, times(1)).updateDateTime(LocalDateTime.of(2025, 1, 2, 12, 0, 0));
97+
verify(generationRecruit, times(1)).updateGeneration("34기");
8598
}
8699

87100
@Test
@@ -196,4 +209,42 @@ void reserveInterviewSlot_fail_alreadyReserved() {
196209
assertEquals(ErrorCode.ALREADY_RESERVED, exception.getErrorCode());
197210
}
198211

199-
}
212+
@Test
213+
@DisplayName("기수 정보 조회")
214+
void getGenerationInfo() {
215+
// given
216+
Recruit generationRecruit = mock(Recruit.class);
217+
when(recruitRepository.findAll()).thenReturn(List.of(generationRecruit));
218+
when(generationRecruit.getKey()).thenReturn(ConfigKey.GENERATION);
219+
when(generationService.getCurrentGeneration()).thenReturn("34기");
220+
221+
// when
222+
List<RecruitConfigResponseDto> schedule = recruitService.getRecruitSchedule();
223+
boolean generationFound = schedule.stream()
224+
.anyMatch(dto -> dto.getKey() == ConfigKey.GENERATION);
225+
226+
// then
227+
assertTrue(generationFound);
228+
verify(generationService, times(1)).getCurrentGeneration();
229+
}
230+
231+
@Test
232+
@DisplayName("기수 정보 수정")
233+
void modifyGenerationInfo() {
234+
// given
235+
Recruit generationRecruit = mock(Recruit.class);
236+
RecruitScheduleModifyRequestDto request = mock(RecruitScheduleModifyRequestDto.class);
237+
when(request.getKey()).thenReturn(ConfigKey.RECRUITMENT_PERIOD_START);
238+
when(request.getValue()).thenReturn("2025-01-02T12:00:00");
239+
when(recruitRepository.findByKey(ConfigKey.RECRUITMENT_PERIOD_START)).thenReturn(Optional.of(mock(Recruit.class)));
240+
when(recruitRepository.findByKey(ConfigKey.GENERATION)).thenReturn(Optional.of(generationRecruit));
241+
when(generationService.getCurrentGeneration()).thenReturn("34기");
242+
243+
// when
244+
recruitService.modifyRecruitSchedule(request);
245+
246+
// then
247+
verify(generationRecruit, times(1)).updateGeneration("34기");
248+
}
249+
250+
}

0 commit comments

Comments
 (0)