From 39667ef2c9e0b9b3c5588973b6f1aa660bbcf377 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Fri, 3 Nov 2023 19:32:16 +0100 Subject: [PATCH] Add test for recording serialization / deserialization --- .../io/json/ObjectMapperRecordingTest.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 common/src/test/java/ctbrec/io/json/ObjectMapperRecordingTest.java diff --git a/common/src/test/java/ctbrec/io/json/ObjectMapperRecordingTest.java b/common/src/test/java/ctbrec/io/json/ObjectMapperRecordingTest.java new file mode 100644 index 00000000..27bdc06d --- /dev/null +++ b/common/src/test/java/ctbrec/io/json/ObjectMapperRecordingTest.java @@ -0,0 +1,73 @@ +package ctbrec.io.json; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import ctbrec.Recording; +import ctbrec.io.json.dto.RecordingDto; +import org.json.JSONObject; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.Set; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ObjectMapperRecordingTest { + + @Test + void recordingToJson() throws JsonProcessingException { + RecordingDto rec = prepareRecording(); + + ObjectMapper mapper = ObjectMapperFactory.getMapper(); + String json = mapper.writeValueAsString(rec); + + JSONObject j = new JSONObject(json); + assertEquals(rec.getId(), j.getString("id")); + assertEquals(rec.getStartDate().toEpochMilli(), j.getLong("startDate")); + assertEquals(rec.getStatus().name(), j.getString("status")); + assertEquals(rec.getProgress(), j.getInt("progress")); + assertEquals(rec.getSizeInByte(), j.getLong("sizeInByte")); + assertEquals(rec.getMetaDataFile(), j.getString("metaDataFile")); + assertEquals(rec.isSingleFile(), j.getBoolean("singleFile")); + assertEquals(rec.isPinned(), j.getBoolean("pinned")); + assertEquals(rec.getNote(), j.getString("note")); + assertTrue(j.getJSONArray("associatedFiles").toList().containsAll(Set.of("a", "b", "c"))); + assertEquals(rec.getAbsoluteFile().toString(), j.getString("absoluteFile")); + assertEquals(rec.getPostProcessedFile().toString(), j.getString("postProcessedFile")); + assertEquals(rec.getSelectedResolution(), j.getInt("selectedResolution")); + assertEquals(rec.getLastSizeUpdate(), j.getLong("lastSizeUpdate")); + } + + @Test + void jsonToRecording() throws JsonProcessingException { + RecordingDto rec = prepareRecording(); + ObjectMapper mapper = ObjectMapperFactory.getMapper(); + String json = mapper.writeValueAsString(rec); + + RecordingDto deserialized = mapper.readValue(json, RecordingDto.class); + assertEquals(rec, deserialized); + } + + private RecordingDto prepareRecording() { + RecordingDto recording = new RecordingDto(); + recording.setId(UUID.randomUUID().toString()); + recording.setStartDate(Instant.now().truncatedTo(ChronoUnit.MILLIS)); + recording.setStatus(Recording.State.RECORDING); + recording.setProgress(42); + recording.setSizeInByte(23456789); + recording.setMetaDataFile("/tmp/meta.json"); + recording.setSingleFile(true); + recording.setPinned(true); + recording.setNote("note"); + recording.setAssociatedFiles(Set.of("a", "b", "c")); + recording.setAbsoluteFile(new File("/tmp/test.rec.ts")); + recording.setPostProcessedFile(new File("/tmp/pp.ts")); + recording.setSelectedResolution(2); + recording.setLastSizeUpdate(Instant.now().toEpochMilli()); + return recording; + } +}