diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceAdminService.java b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceAdminService.java index b385dc01..b720fe7d 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceAdminService.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/service/AttendanceAdminService.java @@ -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) @@ -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()); // 세션 날짜가 존재하지 않는 경우 예외 발생 diff --git a/src/main/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtil.java b/src/main/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtil.java index ed63bac5..7ef9e9a5 100644 --- a/src/main/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtil.java +++ b/src/main/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtil.java @@ -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); - } } } diff --git a/src/test/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtilTest.java b/src/test/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtilTest.java index 9f0077d8..d0a154be 100644 --- a/src/test/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtilTest.java +++ b/src/test/java/org/cotato/csquiz/domain/attendance/util/AttendanceUtilTest.java @@ -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); @@ -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);