diff options
author | Wolfgang Müller | 2024-03-05 18:08:09 +0100 |
---|---|---|
committer | Wolfgang Müller | 2024-03-05 19:25:59 +0100 |
commit | d1d654ebac2d51e3841675faeb56480e440f622f (patch) | |
tree | 56ef123c1a15a10dfd90836e4038e27efde950c6 /tests/thumbnailer/test_thumbnailer.py | |
download | hircine-0.1.0.tar.gz |
Initial commit0.1.0
Diffstat (limited to 'tests/thumbnailer/test_thumbnailer.py')
-rw-r--r-- | tests/thumbnailer/test_thumbnailer.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/thumbnailer/test_thumbnailer.py b/tests/thumbnailer/test_thumbnailer.py new file mode 100644 index 0000000..62bf127 --- /dev/null +++ b/tests/thumbnailer/test_thumbnailer.py @@ -0,0 +1,74 @@ +import os +from pathlib import Path + +import pytest +from hircine.thumbnailer import Thumbnailer, ThumbnailParameters +from PIL import Image + +mock_params = ThumbnailParameters(bounds=(1440, 2880), options={}) + + +def test_thumbnailer_object(): + thumb = Thumbnailer("objects/", params={}) + assert thumb.object("abcdef", "foo") == os.path.join("objects/", "ab/cdef_foo.webp") + + +@pytest.mark.parametrize( + "extension, can_process", + [ + (".png", True), + (".jpeg", True), + (".jpg", True), + (".gif", True), + (".bmp", True), + (".json", False), + (".txt", False), + ], + ids=["png", "jpeg", "jpg", "gif", "bmp", "json", "txt"], +) +def test_thumbnailer_can_process(extension, can_process): + assert Thumbnailer.can_process(extension) == can_process + + +def test_thumbnailer_process(data): + thumb = Thumbnailer(data("objects/"), params={"mock": mock_params}) + + with open(data("example_rgb.png"), "rb") as f: + size = Image.open(f, mode="r").size + reported_size = thumb.process(f, "abcdef") + + assert reported_size == size + + output = thumb.object("abcdef", "mock") + + assert os.path.exists(output) + + +def test_thumbnailer_converts_non_rgb(data): + thumb = Thumbnailer(data("objects/"), params={"mock": mock_params}) + + with open(data("example_palette.png"), "rb") as f: + size = Image.open(f, mode="r").size + reported_size = thumb.process(f, "abcdef") + + assert reported_size == size + + output = thumb.object("abcdef", "mock") + + assert os.path.exists(output) + + output_image = Image.open(output) + assert output_image.mode == "RGB" + + +def test_thumbnailer_process_ignores_existing(data): + thumb = Thumbnailer(data("objects/"), params={"mock": mock_params}) + + output = Path(thumb.object("abcdef", "mock")) + os.makedirs(os.path.dirname(output)) + output.touch() + + with open(data("example_palette.png"), "rb") as f: + thumb.process(f, "abcdef") + + assert output.stat().st_size == 0 |