From ca609e38484255e6c71aed359839eeeb69104aea Mon Sep 17 00:00:00 2001 From: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:36:54 +0300 Subject: [PATCH] add sources (for web crawler), implement unit tests for json config --- .../com/mykola2312/mptv/config/Config.java | 2 + .../mykola2312/mptv/config/SourceItem.java | 22 +++++ .../java/com/mykola2312/mptv/TestConfig.java | 82 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/main/java/com/mykola2312/mptv/config/SourceItem.java create mode 100644 src/test/java/com/mykola2312/mptv/TestConfig.java diff --git a/src/main/java/com/mykola2312/mptv/config/Config.java b/src/main/java/com/mykola2312/mptv/config/Config.java index 4f73843..c55b9f8 100644 --- a/src/main/java/com/mykola2312/mptv/config/Config.java +++ b/src/main/java/com/mykola2312/mptv/config/Config.java @@ -4,10 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.File; import java.io.IOException; +import java.util.List; public class Config { public FrameConfig frame; public DBConfig db; + public List sources; public static Config loadConfig(String path) throws IOException { return new ObjectMapper().readerFor(Config.class).readValue(new File(path)); diff --git a/src/main/java/com/mykola2312/mptv/config/SourceItem.java b/src/main/java/com/mykola2312/mptv/config/SourceItem.java new file mode 100644 index 0000000..f13a560 --- /dev/null +++ b/src/main/java/com/mykola2312/mptv/config/SourceItem.java @@ -0,0 +1,22 @@ +package com.mykola2312.mptv.config; + +import org.checkerframework.checker.nullness.qual.*; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class SourceItem { + public enum SourceType { + @JsonProperty("m3u") + M3U + } + + @NonNull + public SourceType type; + public String url; + + @Nullable + public String cookies; + + @Nullable + public String singleCategory; +} diff --git a/src/test/java/com/mykola2312/mptv/TestConfig.java b/src/test/java/com/mykola2312/mptv/TestConfig.java new file mode 100644 index 0000000..61dfff8 --- /dev/null +++ b/src/test/java/com/mykola2312/mptv/TestConfig.java @@ -0,0 +1,82 @@ +package com.mykola2312.mptv; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mykola2312.mptv.config.Config; +import com.mykola2312.mptv.config.SourceItem; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.IOException; + +public class TestConfig { + public static final String JSON_CONFIG = + """ + { + "frame": { + "width": 1366, + "height": 1024, + "fullscreen": false, + "fontName": "Arial", + "fontSize": 64 + }, + + "db": { + "url": "jdbc:sqlite:mptv.db", + "user": "", + "password": "" + }, + + "sources": [ + { + "type": "m3u", + "url": "https://example.com/list.m3u", + "cookies": null, + "singleCategory": null + } + ] + } + """; + + private static Config loadConfig() throws IOException { + return new ObjectMapper().readerFor(Config.class).readValue(JSON_CONFIG); + } + + @Test() + public void testConfigGeneral() { + Config config = null; + try { + config = loadConfig(); + } catch (IOException e) { + e.printStackTrace(); + return; + } + assertNotNull(config); + + assertNotNull(config.frame); + assertNotNull(config.db); + assertNotNull(config.sources); + } + + @Test() + public void testSources() { + Config config = null; + try { + config = loadConfig(); + } catch (IOException e) { + e.printStackTrace(); + return; + } + assertNotNull(config); + assertNotNull(config.sources); + + assertNotEquals(0, config.sources.size()); + + SourceItem m3u = config.sources.get(0); + assertEquals(SourceItem.SourceType.M3U, m3u.type); + assertEquals("https://example.com/list.m3u", m3u.url); + assertNull(m3u.cookies); + assertNull(m3u.singleCategory); + } +}