From b2b6a623efd853d5fd0faf835fc1f8bf8198f8a0 Mon Sep 17 00:00:00 2001
From: 0xb00bface <0xboobface@gmail.com>
Date: Fri, 25 Sep 2020 00:09:23 +0200
Subject: [PATCH] Add more post-processing tests
---
common/pom.xml | 2 +-
.../postprocessing/AbstractPpTest.java | 9 +++
.../postprocessing/DeleteOriginalTest.java | 25 ++++++
.../postprocessing/MoveDirectoryTest.java | 55 ++++++++++++++
.../postprocessing/MoveSingleFileTest.java | 76 +++++++++++++++++++
master/pom.xml | 2 +-
6 files changed, 167 insertions(+), 2 deletions(-)
create mode 100644 common/src/test/java/ctbrec/recorder/postprocessing/DeleteOriginalTest.java
create mode 100644 common/src/test/java/ctbrec/recorder/postprocessing/MoveDirectoryTest.java
create mode 100644 common/src/test/java/ctbrec/recorder/postprocessing/MoveSingleFileTest.java
diff --git a/common/pom.xml b/common/pom.xml
index c4e22ca7..6713bf45 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -77,7 +77,7 @@
org.mockito
- mockito-core
+ mockito-inline
test
diff --git a/common/src/test/java/ctbrec/recorder/postprocessing/AbstractPpTest.java b/common/src/test/java/ctbrec/recorder/postprocessing/AbstractPpTest.java
index adbd9aad..8f299c39 100644
--- a/common/src/test/java/ctbrec/recorder/postprocessing/AbstractPpTest.java
+++ b/common/src/test/java/ctbrec/recorder/postprocessing/AbstractPpTest.java
@@ -14,6 +14,7 @@ import java.time.Instant;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
+import org.mockito.MockedStatic;
import ctbrec.Config;
import ctbrec.Model;
@@ -32,6 +33,8 @@ public abstract class AbstractPpTest {
Instant now = Instant.now();
RecordingManager recordingManager;
+ MockedStatic configStatic;
+
@Before
public void setup() throws IOException {
baseDir = Files.createTempDirectory("ctbrec_test_");
@@ -50,12 +53,18 @@ public abstract class AbstractPpTest {
@After
public void teardown() throws IOException {
FileUtils.deleteDirectory(baseDir.toFile());
+ if (configStatic != null) {
+ configStatic.close();
+ configStatic = null;
+ }
}
Config mockConfig() {
Config config = mock(Config.class);
when(config.getSettings()).thenReturn(mockSettings());
when(config.getModelNotes(any())).thenReturn("tag, foo, bar");
+ configStatic = mockStatic(Config.class);
+ configStatic.when(Config::getInstance).thenReturn(config);
return config;
}
diff --git a/common/src/test/java/ctbrec/recorder/postprocessing/DeleteOriginalTest.java b/common/src/test/java/ctbrec/recorder/postprocessing/DeleteOriginalTest.java
new file mode 100644
index 00000000..0a3e0b4f
--- /dev/null
+++ b/common/src/test/java/ctbrec/recorder/postprocessing/DeleteOriginalTest.java
@@ -0,0 +1,25 @@
+package ctbrec.recorder.postprocessing;
+
+import java.io.IOException;
+
+import org.junit.Test;
+
+import ctbrec.Config;
+import ctbrec.Recording;
+
+public class DeleteOriginalTest extends AbstractPpTest {
+
+ @Test
+ public void testPostProcessWithSingleFile() throws IOException, InterruptedException {
+ Recording rec = new Recording();
+ rec.setModel(mockModel());
+ rec.setAbsoluteFile(original);
+ rec.setAbsoluteFile(postProcessed);
+ rec.setStartDate(now);
+ rec.setSingleFile(true);
+
+ Config config = mockConfig();
+ DeleteOriginal pp = new DeleteOriginal();
+ pp.postprocess(rec, null, config);
+ }
+}
diff --git a/common/src/test/java/ctbrec/recorder/postprocessing/MoveDirectoryTest.java b/common/src/test/java/ctbrec/recorder/postprocessing/MoveDirectoryTest.java
new file mode 100644
index 00000000..47ea38ed
--- /dev/null
+++ b/common/src/test/java/ctbrec/recorder/postprocessing/MoveDirectoryTest.java
@@ -0,0 +1,55 @@
+package ctbrec.recorder.postprocessing;
+
+import static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.junit.Test;
+
+import ctbrec.Config;
+import ctbrec.Model;
+import ctbrec.Recording;
+
+public class MoveDirectoryTest extends AbstractPpTest {
+
+ @Test
+ public void testOriginalFileReplacement() throws IOException {
+ Config config = mockConfig();
+ Recording rec = new Recording();
+ rec.setModel(mockModel());
+ rec.setAbsoluteFile(originalDir);
+ rec.setStartDate(now);
+ rec.setSingleFile(false);
+ Move pp = new Move();
+ pp.getConfig().put(Move.PATH_TEMPLATE, new File(baseDir.toFile(), Move.DEFAULT).getAbsolutePath());
+ pp.postprocess(rec, recordingManager, config);
+
+ Matcher m = Pattern.compile(baseDir.toString() + "/Mockita/\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/original").matcher(rec.getAbsoluteFile().getCanonicalPath());
+ assertTrue(m.matches());
+ assertEquals(rec.getAbsoluteFile(), rec.getPostProcessedFile());
+ assertNotEquals(rec.getAbsoluteFile(), original);
+ }
+
+ @Test
+ public void absoluteFileShouldKeepBeingOriginalIfFilesDiffer() throws IOException {
+ Model model = mockModel();
+ Recording rec = mock(Recording.class);
+ when(rec.getModel()).thenReturn(model);
+ when(rec.getAbsoluteFile()).thenReturn(originalDir);
+ when(rec.getPostProcessedFile()).thenReturn(postProcessedDir);
+ when(rec.getStartDate()).thenReturn(now);
+ doThrow(new RuntimeException("Unexpected call of setAbsoluteFile")).when(rec).setAbsoluteFile(any());
+
+ Files.createDirectories(postProcessedDir.toPath());
+ Move pp = new Move();
+ Config config = mockConfig();
+ pp.getConfig().put(Move.PATH_TEMPLATE, new File(baseDir.toFile(), Move.DEFAULT).getAbsolutePath());
+ pp.postprocess(rec, recordingManager, config);
+ }
+}
diff --git a/common/src/test/java/ctbrec/recorder/postprocessing/MoveSingleFileTest.java b/common/src/test/java/ctbrec/recorder/postprocessing/MoveSingleFileTest.java
new file mode 100644
index 00000000..bb560a37
--- /dev/null
+++ b/common/src/test/java/ctbrec/recorder/postprocessing/MoveSingleFileTest.java
@@ -0,0 +1,76 @@
+package ctbrec.recorder.postprocessing;
+
+import static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.junit.Test;
+
+import ctbrec.Config;
+import ctbrec.Model;
+import ctbrec.Recording;
+
+public class MoveSingleFileTest extends AbstractPpTest {
+
+ @Test
+ public void testOriginalFileReplacement() throws IOException {
+ Config config = mockConfig();
+ Recording rec = new Recording();
+ rec.setModel(mockModel());
+ rec.setAbsoluteFile(original);
+ rec.setStartDate(now);
+ rec.setSingleFile(true);
+ Move pp = new Move();
+ pp.getConfig().put(Move.PATH_TEMPLATE, new File(baseDir.toFile(), Move.DEFAULT).getAbsolutePath());
+ pp.postprocess(rec, recordingManager, config);
+
+ Matcher m = Pattern.compile(baseDir.toFile() + "/Mockita/\\d{4}-\\d{2}-\\d{2}_\\d{2}-\\d{2}-\\d{2}/original\\.ts").matcher(rec.getAbsoluteFile().toString());
+ assertTrue(m.matches());
+ assertEquals(rec.getAbsoluteFile(), rec.getPostProcessedFile());
+ assertNotEquals(rec.getAbsoluteFile(), original);
+ }
+
+ @Test
+ public void testEarlyExit() throws IOException {
+ Model model = mockModel();
+ Recording rec = mock(Recording.class);
+ when(rec.getModel()).thenReturn(model);
+ when(rec.getAbsoluteFile()).thenReturn(original);
+ when(rec.getPostProcessedFile()).thenReturn(original);
+ when(rec.getStartDate()).thenReturn(now);
+ doThrow(new RuntimeException("Unexpected call of setAbsoluteFile")).when(rec).setAbsoluteFile(any());
+ Move pp = new Move();
+ Config config = mockConfig();
+ pp.getConfig().put(Move.PATH_TEMPLATE, original.getParentFile().getCanonicalPath());
+ pp.postprocess(rec, recordingManager, config);
+ }
+
+ @Test
+ public void absoluteFileShouldKeepBeingOriginalIfFilesDiffer() throws IOException {
+ Model model = mockModel();
+ Recording rec = mock(Recording.class);
+ when(rec.getModel()).thenReturn(model);
+ when(rec.getAbsoluteFile()).thenReturn(original);
+ when(rec.getPostProcessedFile()).thenReturn(postProcessed);
+ when(rec.getStartDate()).thenReturn(now);
+ doThrow(new RuntimeException("Unexpected call of setAbsoluteFile")).when(rec).setAbsoluteFile(any());
+ Move pp = new Move();
+ Config config = mockConfig();
+ pp.getConfig().put(Move.PATH_TEMPLATE, new File(baseDir.toFile(), Move.DEFAULT).getAbsolutePath());
+ pp.postprocess(rec, recordingManager, config);
+ }
+
+ @Test
+ public void testToString() {
+ Move pp = new Move();
+ assertEquals("move", pp.toString());
+
+ pp.getConfig().put(Move.PATH_TEMPLATE, Move.DEFAULT);
+ assertEquals("move ["+Move.DEFAULT+"]", pp.toString());
+ }
+}
diff --git a/master/pom.xml b/master/pom.xml
index 68ef277c..c81fb52f 100644
--- a/master/pom.xml
+++ b/master/pom.xml
@@ -124,7 +124,7 @@
org.mockito
- mockito-core
+ mockito-inline
3.5.11
test