da-autoarchival-dev / src /test /java /com /dalab /autoarchival /service /impl /ArchivalConfigServiceImplTest.java
Ajay Yadav
Initial deployment of da-autoarchival-dev
1c19d33
package com.dalab.autoarchival.service.impl;
import com.dalab.autoarchival.dto.ArchivalConfigDTO;
import com.dalab.autoarchival.mapper.ArchivalConfigMapper;
import com.dalab.autoarchival.model.ArchivalConfigEntity;
import com.dalab.autoarchival.repository.ArchivalConfigRepository;
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.util.Optional;
import java.util.HashMap;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class ArchivalConfigServiceImplTest {
@Mock
private ArchivalConfigRepository configRepository;
@Mock
private ArchivalConfigMapper configMapper;
@InjectMocks
private ArchivalConfigServiceImpl configService;
private ArchivalConfigEntity sampleEntity;
private ArchivalConfigDTO sampleDTO;
private static final Long GLOBAL_CONFIG_ID = 1L;
@BeforeEach
void setUp() {
sampleEntity = new ArchivalConfigEntity(
GLOBAL_CONFIG_ID, true, "S3_STANDARD", 30L, true, true, new HashMap<>()
);
sampleDTO = ArchivalConfigDTO.builder()
.enabled(true).defaultArchivalTier("S3_STANDARD").defaultRetentionDays(30L)
.requireApprovalForArchival(true).requireApprovalForRestore(true).providerConfigs(new HashMap<>()).build();
}
@Test
void init_WhenConfigExists_ShouldNotSave() {
when(configRepository.existsById(GLOBAL_CONFIG_ID)).thenReturn(true);
configService.init();
verify(configRepository, never()).save(any(ArchivalConfigEntity.class));
}
@Test
void init_WhenConfigNotExists_ShouldSaveDefault() {
when(configRepository.existsById(GLOBAL_CONFIG_ID)).thenReturn(false);
when(configRepository.save(any(ArchivalConfigEntity.class))).thenReturn(sampleEntity); // Mock save
configService.init();
verify(configRepository, times(1)).save(any(ArchivalConfigEntity.class));
}
@Test
void getArchivalConfig_ShouldReturnMappedDTO() {
when(configRepository.findById(GLOBAL_CONFIG_ID)).thenReturn(Optional.of(sampleEntity));
when(configMapper.toDto(sampleEntity)).thenReturn(sampleDTO);
ArchivalConfigDTO result = configService.getArchivalConfig();
assertNotNull(result);
assertEquals(sampleDTO.getDefaultArchivalTier(), result.getDefaultArchivalTier());
verify(configRepository, times(1)).findById(GLOBAL_CONFIG_ID);
verify(configMapper, times(1)).toDto(sampleEntity);
}
@Test
void updateArchivalConfig_ShouldUpdateAndSaveFolder() {
when(configRepository.findById(GLOBAL_CONFIG_ID)).thenReturn(Optional.of(sampleEntity));
// configMapper.updateEntityFromDto is void, so mock it if necessary (e.g. with doNothing() or verify interaction)
doNothing().when(configMapper).updateEntityFromDto(eq(sampleDTO), eq(sampleEntity));
when(configRepository.save(any(ArchivalConfigEntity.class))).thenReturn(sampleEntity);
configService.updateArchivalConfig(sampleDTO);
verify(configRepository, times(1)).findById(GLOBAL_CONFIG_ID);
verify(configMapper, times(1)).updateEntityFromDto(sampleDTO, sampleEntity);
verify(configRepository, times(1)).save(sampleEntity);
assertEquals(GLOBAL_CONFIG_ID, sampleEntity.getId()); // Ensure ID is preserved
}
@Test
void updateArchivalConfig_WhenDtoIsNull_ShouldThrowException() {
assertThrows(IllegalArgumentException.class, () -> {
configService.updateArchivalConfig(null);
});
}
@Test
void updateArchivalConfig_WhenEntityNotFound_ShouldThrowException() {
when(configRepository.findById(GLOBAL_CONFIG_ID)).thenReturn(Optional.empty());
assertThrows(IllegalStateException.class, () -> {
configService.updateArchivalConfig(sampleDTO);
});
}
}