Skip to content

Commit

Permalink
refactor: 출결 시간 검증 로직 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
Youthhing committed Sep 12, 2024
1 parent 44553a2 commit 023bf5b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class AttendanceAdminService {

@Transactional
public void addAttendance(Session session, Location location, LocalTime attendanceDeadline, LocalTime lateDeadline) {
AttendanceUtil.validateAttendanceTime(attendanceDeadline, lateDeadline);
AttendanceUtil.validateAttendanceTime(session.getSessionDateTime(), attendanceDeadline, lateDeadline);

Attendance attendance = Attendance.builder()
.session(session)
Expand All @@ -58,7 +58,7 @@ public void updateAttendanceByAttendanceId(UpdateAttendanceRequest request) {
@Transactional
public void updateAttendance(Session attendanceSession, Attendance attendance,
AttendanceDeadLineDto attendanceDeadLine, Location location) {
AttendanceUtil.validateAttendanceTime(attendanceDeadLine.attendanceDeadLine(),
AttendanceUtil.validateAttendanceTime(attendanceSession.getSessionDateTime(), attendanceDeadLine.attendanceDeadLine(),
attendanceDeadLine.lateDeadLine());

// 세션 날짜가 존재하지 않는 경우 예외 발생
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,13 @@ public static AttendanceOpenStatus getAttendanceOpenStatus(LocalDateTime session
return AttendanceOpenStatus.ABSENT;
}

public static void validateAttendanceTime(LocalTime attendDeadLine, LocalTime lateDeadLine) {
if (!DeadLine.ATTENDANCE_START_TIME.getTime().isBefore(attendDeadLine)) {
public static void validateAttendanceTime(LocalDateTime sessionStartTime, LocalTime attendDeadLine, LocalTime lateDeadLine) {
if (!sessionStartTime.toLocalTime().isBefore(attendDeadLine)) {
throw new AppException(ErrorCode.INVALID_ATTEND_TIME);
}

if (!attendDeadLine.isBefore(lateDeadLine)) {
throw new AppException(ErrorCode.INVALID_ATTEND_TIME);
}

if (!lateDeadLine.isBefore(DeadLine.ATTENDANCE_END_TIME.getTime())) {
throw new AppException(ErrorCode.INVALID_ATTEND_TIME);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,12 @@ class AttendanceUtilTest {
@Test
void 지각마감이_세션시작보다_빠를__없다() {
//given
LocalTime attendDeadline = LocalTime.of(18, 40, 0);
LocalDateTime sessionStartTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(15, 0));
LocalTime attendDeadline = LocalTime.of(19, 40, 0);
LocalTime lateDeadline = LocalTime.of(19, 20, 0);

//when, then
assertThatThrownBy(() -> AttendanceUtil.validateAttendanceTime(attendDeadline, lateDeadline))
assertThatThrownBy(() -> AttendanceUtil.validateAttendanceTime(sessionStartTime, attendDeadline, lateDeadline))
.isInstanceOf(AppException.class)
.extracting("errorCode")
.isEqualTo(ErrorCode.INVALID_ATTEND_TIME);
Expand All @@ -74,25 +75,12 @@ class AttendanceUtilTest {
@Test
void 지각마감보다_출석마감이_빠르다() {
//given
LocalDateTime sessionStartTime = LocalDateTime.of(LocalDate.now(), LocalTime.of(15, 0));
LocalTime attendDeadline = LocalTime.of(19, 40, 0);
LocalTime lateDeadline = LocalTime.of(19, 20, 0);

//when, then
assertThatThrownBy(() -> AttendanceUtil.validateAttendanceTime(attendDeadline, lateDeadline))
.isInstanceOf(AppException.class)
.extracting("errorCode")
.isEqualTo(ErrorCode.INVALID_ATTEND_TIME);
}

@DisplayName(value = "지각 마감이 세션 종료보다 늦으면 예외를 발생한다.")
@Test
void 지각마감시간_검증_기능() {
//given
LocalTime attendDeadline = LocalTime.of(19, 40, 0);
LocalTime lateDeadline = LocalTime.of(20, 20, 0);

//when, then
assertThatThrownBy(() -> AttendanceUtil.validateAttendanceTime(attendDeadline, lateDeadline))
assertThatThrownBy(() -> AttendanceUtil.validateAttendanceTime(sessionStartTime, attendDeadline, lateDeadline))
.isInstanceOf(AppException.class)
.extracting("errorCode")
.isEqualTo(ErrorCode.INVALID_ATTEND_TIME);
Expand Down

0 comments on commit 023bf5b

Please sign in to comment.