Ajay Yadav
Initial deployment of da-admin-service-dev
d6afd6c
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;
@ExtendWith(MockitoExtension.class)
class JobStatusServiceImplTest {
@Mock
private IDiscoveryJobApiClient discoveryJobApiClient;
@Mock
private IAutolabelJobApiClient autolabelJobApiClient;
@Mock
private IAutoarchivalTaskApiClient autoarchivalTaskApiClient;
@Mock
private IAutodeleteTaskApiClient autodeleteTaskApiClient;
@Mock
private IAutocomplianceJobApiClient autocomplianceJobApiClient;
@InjectMocks
private JobStatusServiceImpl jobStatusService;
private JobStatusDTO sampleJob1, sampleJob2;
@BeforeEach
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();
}
@Test
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());
}
@Test
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());
}
@Test
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());
}
}