DXLabAIAttendance / src /test /java /com /attendenceSystem /module /attendance /service /LeaveScheduleServiceImplTest.java
QPAT's picture
Add system configuration backend
921b03a
Raw
History Blame Contribute Delete
2.31 kB
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;
@ExtendWith(MockitoExtension.class)
class LeaveScheduleServiceImplTest {
@Mock
private LeaveRequestRepository leaveRequestRepository;
@Mock
private SystemConfig systemConfig;
@InjectMocks
private LeaveScheduleServiceImpl leaveScheduleService;
@Test
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;
}
@Test
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());
}
}