mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-08-11 13:48:37 +02:00
Create TempDirectoryTest.java
This commit is contained in:
parent
7982dce7f0
commit
9971bac0f2
@ -0,0 +1,96 @@
|
|||||||
|
package stirling.software.common.util;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.DisplayName;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit tests for {@link TempDirectory}. Assumption: TempFileManager has methods
|
||||||
|
* createTempDirectory() and deleteTempDirectory(Path).
|
||||||
|
*/
|
||||||
|
class TempDirectoryTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("should create temp directory and return correct path info")
|
||||||
|
void shouldReturnCorrectPathInfo() throws IOException {
|
||||||
|
TempFileManager manager = mock(TempFileManager.class);
|
||||||
|
Path tempPath = Files.createTempDirectory("testDir");
|
||||||
|
when(manager.createTempDirectory()).thenReturn(tempPath);
|
||||||
|
|
||||||
|
try (TempDirectory tempDir = new TempDirectory(manager)) {
|
||||||
|
assertEquals(
|
||||||
|
tempPath,
|
||||||
|
tempDir.getPath(),
|
||||||
|
"getPath should return the created directory path");
|
||||||
|
assertEquals(
|
||||||
|
tempPath.toAbsolutePath().toString(),
|
||||||
|
tempDir.getAbsolutePath(),
|
||||||
|
"getAbsolutePath should return absolute path");
|
||||||
|
assertTrue(tempDir.exists(), "exists should return true when directory exists");
|
||||||
|
assertTrue(
|
||||||
|
tempDir.toString().contains(tempPath.toAbsolutePath().toString()),
|
||||||
|
"toString should include the absolute path");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("should call deleteTempDirectory on close")
|
||||||
|
void shouldDeleteTempDirectoryOnClose() throws IOException {
|
||||||
|
TempFileManager manager = mock(TempFileManager.class);
|
||||||
|
Path tempPath = Files.createTempDirectory("testDir");
|
||||||
|
when(manager.createTempDirectory()).thenReturn(tempPath);
|
||||||
|
|
||||||
|
try (TempDirectory tempDir = new TempDirectory(manager)) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
ArgumentCaptor<Path> captor = ArgumentCaptor.forClass(Path.class);
|
||||||
|
verify(manager, times(1)).deleteTempDirectory(captor.capture());
|
||||||
|
assertEquals(
|
||||||
|
tempPath,
|
||||||
|
captor.getValue(),
|
||||||
|
"deleteTempDirectory should be called with the created path");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("should handle multiple close calls without exception")
|
||||||
|
void shouldHandleMultipleCloseCalls() throws IOException {
|
||||||
|
TempFileManager manager = mock(TempFileManager.class);
|
||||||
|
Path tempPath = Files.createTempDirectory("testDir");
|
||||||
|
when(manager.createTempDirectory()).thenReturn(tempPath);
|
||||||
|
|
||||||
|
TempDirectory tempDir = new TempDirectory(manager);
|
||||||
|
tempDir.close();
|
||||||
|
assertDoesNotThrow(tempDir::close, "Second close should not throw exception");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("should return false for exists if directory does not exist")
|
||||||
|
void shouldReturnFalseIfDirectoryDoesNotExist() throws IOException {
|
||||||
|
TempFileManager manager = mock(TempFileManager.class);
|
||||||
|
Path tempPath = Files.createTempDirectory("testDir");
|
||||||
|
Files.delete(tempPath); // delete immediately
|
||||||
|
when(manager.createTempDirectory()).thenReturn(tempPath);
|
||||||
|
|
||||||
|
try (TempDirectory tempDir = new TempDirectory(manager)) {
|
||||||
|
assertFalse(tempDir.exists(), "exists should return false when directory is missing");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@DisplayName("should throw IOException if createTempDirectory fails")
|
||||||
|
void shouldThrowIfCreateTempDirectoryFails() throws IOException {
|
||||||
|
TempFileManager manager = mock(TempFileManager.class);
|
||||||
|
when(manager.createTempDirectory()).thenThrow(new IOException("Disk full"));
|
||||||
|
|
||||||
|
IOException ex = assertThrows(IOException.class, () -> new TempDirectory(manager));
|
||||||
|
assertEquals("Disk full", ex.getMessage(), "Exception message should be propagated");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user