Spaces:
Build error
Build error
da-autoarchival-dev
/
src
/test
/java
/com
/dalab
/autoarchival
/service
/impl
/ArchivalConfigServiceImplTest.java
| 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.*; | |
| class ArchivalConfigServiceImplTest { | |
| private ArchivalConfigRepository configRepository; | |
| private ArchivalConfigMapper configMapper; | |
| private ArchivalConfigServiceImpl configService; | |
| private ArchivalConfigEntity sampleEntity; | |
| private ArchivalConfigDTO sampleDTO; | |
| private static final Long GLOBAL_CONFIG_ID = 1L; | |
| 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(); | |
| } | |
| void init_WhenConfigExists_ShouldNotSave() { | |
| when(configRepository.existsById(GLOBAL_CONFIG_ID)).thenReturn(true); | |
| configService.init(); | |
| verify(configRepository, never()).save(any(ArchivalConfigEntity.class)); | |
| } | |
| 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)); | |
| } | |
| 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); | |
| } | |
| 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 | |
| } | |
| void updateArchivalConfig_WhenDtoIsNull_ShouldThrowException() { | |
| assertThrows(IllegalArgumentException.class, () -> { | |
| configService.updateArchivalConfig(null); | |
| }); | |
| } | |
| void updateArchivalConfig_WhenEntityNotFound_ShouldThrowException() { | |
| when(configRepository.findById(GLOBAL_CONFIG_ID)).thenReturn(Optional.empty()); | |
| assertThrows(IllegalStateException.class, () -> { | |
| configService.updateArchivalConfig(sampleDTO); | |
| }); | |
| } | |
| } |