Spaces:
Build error
Build error
da-admin-service-dev
/
src
/test
/java
/com
/dalab
/adminservice
/service
/impl
/JobStatusServiceImplTest.java
| package com.dalab.adminservice.service.impl; | |
| import com.dalab.adminservice.client.*; | |
| import com.dalab.adminservice.dto.AggregatedJobStatusDTO; | |
| import com.dalab.adminservice.dto.JobStatusDTO; | |
| import org.junit.jupiter.api.BeforeEach; | |
| 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 java.time.LocalDateTime; | |
| import java.util.Collections; | |
| import java.util.List; | |
| import static org.junit.jupiter.api.Assertions.assertEquals; | |
| import static org.junit.jupiter.api.Assertions.assertNotNull; | |
| import static org.mockito.Mockito.when; | |
| class JobStatusServiceImplTest { | |
| private IDiscoveryJobApiClient discoveryJobApiClient; | |
| private IAutolabelJobApiClient autolabelJobApiClient; | |
| private IAutoarchivalTaskApiClient autoarchivalTaskApiClient; | |
| private IAutodeleteTaskApiClient autodeleteTaskApiClient; | |
| private IAutocomplianceJobApiClient autocomplianceJobApiClient; | |
| private JobStatusServiceImpl jobStatusService; | |
| private JobStatusDTO sampleJob1, sampleJob2; | |
| void setUp() { | |
| sampleJob1 = JobStatusDTO.builder() | |
| .jobId("job1") | |
| .serviceName("TestService1") | |
| .status("COMPLETED_SUCCESS") | |
| .submittedAt(LocalDateTime.now().minusHours(2)) | |
| .completedAt(LocalDateTime.now().minusHours(1)) | |
| .build(); | |
| sampleJob2 = JobStatusDTO.builder() | |
| .jobId("job2") | |
| .serviceName("TestService2") | |
| .status("PENDING") | |
| .submittedAt(LocalDateTime.now().minusMinutes(30)) | |
| .build(); | |
| } | |
| void getAggregatedJobStatuses_shouldAggregateFromAllClients() { | |
| when(discoveryJobApiClient.getDiscoveryJobs()).thenReturn(List.of(sampleJob1)); | |
| when(autolabelJobApiClient.getAutolabelJobs()).thenReturn(List.of(sampleJob2)); | |
| when(autoarchivalTaskApiClient.getArchivalTasks()).thenReturn(Collections.emptyList()); | |
| when(autodeleteTaskApiClient.getDeletionTasks()).thenReturn(Collections.emptyList()); | |
| when(autocomplianceJobApiClient.getComplianceReportJobs()).thenReturn(Collections.emptyList()); | |
| AggregatedJobStatusDTO result = jobStatusService.getAggregatedJobStatuses(); | |
| assertNotNull(result); | |
| assertEquals(2, result.getTotalJobs()); | |
| assertEquals(1, result.getCompletedSuccessJobs()); | |
| assertEquals(1, result.getPendingJobs()); | |
| assertEquals(0, result.getRunningJobs()); | |
| assertEquals(0, result.getCompletedFailedJobs()); | |
| assertNotNull(result.getJobs()); | |
| assertEquals(2, result.getJobs().size()); | |
| } | |
| void getAggregatedJobStatuses_whenClientThrowsException_shouldHandleGracefully() { | |
| when(discoveryJobApiClient.getDiscoveryJobs()).thenThrow(new RuntimeException("Discovery Unreachable")); | |
| when(autolabelJobApiClient.getAutolabelJobs()).thenReturn(List.of(sampleJob2)); // Autolabel still works | |
| when(autoarchivalTaskApiClient.getArchivalTasks()).thenReturn(Collections.emptyList()); | |
| when(autodeleteTaskApiClient.getDeletionTasks()).thenReturn(Collections.emptyList()); | |
| when(autocomplianceJobApiClient.getComplianceReportJobs()).thenReturn(Collections.emptyList()); | |
| AggregatedJobStatusDTO result = jobStatusService.getAggregatedJobStatuses(); | |
| assertNotNull(result); | |
| assertEquals(1, result.getTotalJobs()); // Only sampleJob2 from autolabel | |
| assertEquals(0, result.getCompletedSuccessJobs()); | |
| assertEquals(1, result.getPendingJobs()); | |
| assertNotNull(result.getJobs()); | |
| assertEquals(1, result.getJobs().size()); | |
| assertEquals("job2", result.getJobs().get(0).getJobId()); | |
| } | |
| void getAggregatedJobStatuses_whenAllClientsReturnEmpty_shouldReturnEmptyAggregation() { | |
| when(discoveryJobApiClient.getDiscoveryJobs()).thenReturn(Collections.emptyList()); | |
| when(autolabelJobApiClient.getAutolabelJobs()).thenReturn(Collections.emptyList()); | |
| when(autoarchivalTaskApiClient.getArchivalTasks()).thenReturn(Collections.emptyList()); | |
| when(autodeleteTaskApiClient.getDeletionTasks()).thenReturn(Collections.emptyList()); | |
| when(autocomplianceJobApiClient.getComplianceReportJobs()).thenReturn(Collections.emptyList()); | |
| AggregatedJobStatusDTO result = jobStatusService.getAggregatedJobStatuses(); | |
| assertNotNull(result); | |
| assertEquals(0, result.getTotalJobs()); | |
| assertEquals(0, result.getPendingJobs()); | |
| assertEquals(0, result.getCompletedSuccessJobs()); | |
| assertNotNull(result.getJobs()); | |
| assertEquals(0, result.getJobs().size()); | |
| } | |
| } |