DXLabAIAttendance / src /test /java /com /attendenceSystem /module /attendance /service /LeaveScheduleServiceImplTest.java
| package com.attendenceSystem.module.attendance.service; | |
| import java.time.LocalDate; | |
| import java.util.List; | |
| import org.junit.jupiter.api.Test; | |
| import org.junit.jupiter.api.extension.ExtendWith; | |
| import org.mockito.InjectMocks; | |
| import org.mockito.Mock; | |
| import org.mockito.junit.jupiter.MockitoExtension; | |
| import com.attendenceSystem.config.SystemConfig; | |
| import com.attendenceSystem.module.attendance.entity.LeaveRequest; | |
| import com.attendenceSystem.module.attendance.entity.enums.LeaveStatus; | |
| import com.attendenceSystem.module.attendance.repository.LeaveRequestRepository; | |
| import com.attendenceSystem.module.attendance.service.impl.LeaveScheduleServiceImpl; | |
| import com.attendenceSystem.module.user.entity.User; | |
| import static org.mockito.ArgumentMatchers.any; | |
| import static org.mockito.Mockito.times; | |
| import static org.mockito.Mockito.verify; | |
| import static org.mockito.Mockito.when; | |
| class LeaveScheduleServiceImplTest { | |
| private LeaveRequestRepository leaveRequestRepository; | |
| private SystemConfig systemConfig; | |
| private LeaveScheduleServiceImpl leaveScheduleService; | |
| void testAutoRejectExpiredLeaveRequests() { | |
| LocalDate tomorrow = LocalDate.now().plusDays(1); | |
| User user = User.builder() | |
| .id(1L) | |
| .build(); | |
| LeaveRequest leave = LeaveRequest.builder() | |
| .id(1L) | |
| .user(user) | |
| .startDate(tomorrow) | |
| .status(LeaveStatus.PENDING) | |
| .build(); | |
| when(leaveRequestRepository.findByStatusAndStartDateLessThanEqual(LeaveStatus.PENDING, tomorrow)) | |
| .thenReturn(List.of(leave)); | |
| leaveScheduleService.autoRejectExpiredLeaveRequests(); | |
| verify(leaveRequestRepository, times(1)).save(leave); | |
| assert leave.getStatus() == LeaveStatus.REJECTED; | |
| } | |
| void testAutoRejectWithNoExpiredLeaves() { | |
| LocalDate tomorrow = LocalDate.now().plusDays(1); | |
| when(leaveRequestRepository.findByStatusAndStartDateLessThanEqual(LeaveStatus.PENDING, tomorrow)) | |
| .thenReturn(List.of()); | |
| leaveScheduleService.autoRejectExpiredLeaveRequests(); | |
| verify(leaveRequestRepository, times(0)).save(any()); | |
| } | |
| } |