From bb6f5e782367fd3debe45d95ab3ac28ebebcfa5c Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Sun, 12 Jul 2026 18:59:44 +0100 Subject: [PATCH] test(unit): add Thumbnail and Remux service tests --- .../services/media/RemuxServiceTest.java | 48 +++++++++++++++++++ .../services/media/ThumbnailServiceTest.java | 42 ++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 src/test/java/com/ddf/vodsystem/services/media/RemuxServiceTest.java create mode 100644 src/test/java/com/ddf/vodsystem/services/media/ThumbnailServiceTest.java diff --git a/src/test/java/com/ddf/vodsystem/services/media/RemuxServiceTest.java b/src/test/java/com/ddf/vodsystem/services/media/RemuxServiceTest.java new file mode 100644 index 0000000..d95a33e --- /dev/null +++ b/src/test/java/com/ddf/vodsystem/services/media/RemuxServiceTest.java @@ -0,0 +1,48 @@ +package com.ddf.vodsystem.services.media; + +import com.ddf.vodsystem.dto.ProgressTracker; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.io.File; +import java.util.List; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class RemuxServiceTest { + + @Mock + private CommandRunner commandRunner; + + private RemuxService remuxService; + + @BeforeEach + void setUp() { + remuxService = new RemuxService(commandRunner); + } + + @Test + void remux_buildsExpectedFfmpegCommand() throws Exception { + File input = new File("videos/input.ts"); + File output = new File("videos/output.mp4"); + + remuxService.remux(input, output, new ProgressTracker(), 60f); + + verify(commandRunner).run(eq(List.of( + "ffmpeg", + "-progress", "pipe:1", + "-y", + "-i", input.getAbsolutePath(), + "-c:v", "h264", + "-c:a", "aac", + "-f", "mp4", + output.getAbsolutePath() + )), any()); + } +} diff --git a/src/test/java/com/ddf/vodsystem/services/media/ThumbnailServiceTest.java b/src/test/java/com/ddf/vodsystem/services/media/ThumbnailServiceTest.java new file mode 100644 index 0000000..4fcfbda --- /dev/null +++ b/src/test/java/com/ddf/vodsystem/services/media/ThumbnailServiceTest.java @@ -0,0 +1,42 @@ +package com.ddf.vodsystem.services.media; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.nio.file.Path; +import java.util.List; + +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class ThumbnailServiceTest { + + @Mock + private CommandRunner commandRunner; + + private ThumbnailService thumbnailService; + + @BeforeEach + void setUp() { + thumbnailService = new ThumbnailService(commandRunner); + } + + @Test + void createThumbnail_buildsExpectedFfmpegCommand() throws Exception { + Path input = Path.of("videos/input.mp4"); + Path output = Path.of("thumbnails/output.jpg"); + + thumbnailService.createThumbnail(input, output, 12.5f); + + verify(commandRunner).run(List.of( + "ffmpeg", + "-ss", "12.5", + "-i", input.toAbsolutePath().toString(), + "-frames:v", "1", + output.toAbsolutePath().toString() + )); + } +} \ No newline at end of file