summaryrefslogtreecommitdiffstatshomepage
path: root/tests/scrapers/test_scraper_utils.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/scrapers/test_scraper_utils.py57
1 files changed, 48 insertions, 9 deletions
diff --git a/tests/scrapers/test_scraper_utils.py b/tests/scrapers/test_scraper_utils.py
index 193cf2a..30b9796 100644
--- a/tests/scrapers/test_scraper_utils.py
+++ b/tests/scrapers/test_scraper_utils.py
@@ -1,24 +1,30 @@
-from hircine.scraper.utils import parse_dict
+import json
+import os
+from zipfile import ZipFile
+
+import pytest
+
+from hircine.scraper.utils import open_archive_file, parse_dict
def test_parse_dict():
- dict = {
+ data = {
"scalar": "foo",
"list": ["bar", "baz"],
"dict": {"nested_scalar": "qux", "nested_list": ["plugh", "xyzzy"]},
}
- def id(type):
- return lambda item: f"{type}_{item}"
+ def annotate(tag):
+ return lambda item: f"{tag}_{item}"
parsers = {
- "scalar": id("scalar"),
- "list": id("list"),
- "dict": {"nested_scalar": id("scalar"), "nested_list": id("list")},
- "missing": id("missing"),
+ "scalar": annotate("scalar"),
+ "list": annotate("list"),
+ "dict": {"nested_scalar": annotate("scalar"), "nested_list": annotate("list")},
+ "missing": annotate("missing"),
}
- assert [f() for f in parse_dict(parsers, dict)] == [
+ assert [f() for f in parse_dict(parsers, data)] == [
"scalar_foo",
"list_bar",
"list_baz",
@@ -26,3 +32,36 @@ def test_parse_dict():
"list_plugh",
"list_xyzzy",
]
+
+
+@pytest.mark.parametrize(
+ "check_sidecar",
+ [
+ (False),
+ (True),
+ ],
+ ids=[
+ "zip",
+ "sidecar",
+ ],
+)
+def test_open_archive_file(gen_archive, tmpdir, check_sidecar):
+ archive = next(gen_archive)
+ archive.path = os.path.join(tmpdir, "archive.zip")
+
+ zip_data = {"zip": "data"}
+ sidecar_data = {"sidecar": "data"}
+
+ with open(f"{archive.path}.info.json", "x") as handle:
+ json.dump(sidecar_data, handle)
+
+ with ZipFile(archive.path, "x") as ziph:
+ ziph.writestr("info.json", json.dumps(zip_data))
+
+ with open_archive_file(archive, "info.json", check_sidecar=check_sidecar) as file:
+ data = json.load(file)
+
+ if check_sidecar:
+ assert data == sidecar_data
+ else:
+ assert data == zip_data