83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
"""Test {seq} template """
|
|
|
|
import pytest
|
|
|
|
import osxphotos.phototemplate
|
|
import osxphotos.template_counter as template_counter
|
|
|
|
PHOTOSDB = "tests/Test-13.0.0.photoslibrary"
|
|
|
|
TEMPLATE_TEST_DATA = [
|
|
("{counter}", "0"),
|
|
("{counter:03d}", "000"),
|
|
("{counter:03d} {counter:03d}", "000 001"),
|
|
("{counter:05d(2,,2)}-{counter:05d(2,,2)}", "00002-00004"),
|
|
("{counter.a}-{counter.b}-{counter.a}", "0-0-1"),
|
|
("{counter.a:03d(3)}", "003"),
|
|
("{counter(1,3,)}{counter(1,3,)}{counter(1,3,)}{counter(1,3,)}", "1212"),
|
|
("{counter(,,2)}{counter(,,2)}{counter(,,2)}{counter(,,2)}", "0246"),
|
|
]
|
|
|
|
INVALID_TEMPLATES = [
|
|
"{counter(1,2,3,4)}",
|
|
"{counter(1,-1,1)}",
|
|
"{counter.a}-{counter.a(1,10,2)}",
|
|
"{counter(a,b,c)}",
|
|
]
|
|
|
|
|
|
@pytest.fixture(scope="function", autouse=True)
|
|
def reset_seq_count():
|
|
"""Reset _global_seq_count to 0 before each test"""
|
|
template_counter.reset_all_counters()
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def photosdb():
|
|
return osxphotos.PhotosDB(dbfile=PHOTOSDB)
|
|
|
|
|
|
@pytest.mark.parametrize("template,expected", TEMPLATE_TEST_DATA)
|
|
def test_counter(photosdb, template, expected):
|
|
"""Test {seq} template"""
|
|
photo = photosdb.photos()[0]
|
|
result = photo.render_template(template)
|
|
assert result[0][0] == expected
|
|
template_counter.reset_all_counters()
|
|
|
|
|
|
@pytest.mark.parametrize("template", INVALID_TEMPLATES)
|
|
def test_invalid_counter(photosdb, template):
|
|
"""Test invalid {counter} template"""
|
|
photo = photosdb.photos()[0]
|
|
with pytest.raises(ValueError):
|
|
photo.render_template(template)
|
|
|
|
|
|
def test_reset_counter(photosdb):
|
|
"""Test reset_counter()"""
|
|
photo = photosdb.photos()[0]
|
|
result = photo.render_template("{counter}")
|
|
assert result[0][0] == "0"
|
|
result = photo.render_template("{counter}")
|
|
assert result[0][0] == "1"
|
|
|
|
template_counter.reset_counter("counter")
|
|
result = photo.render_template("{counter}")
|
|
assert result[0][0] == "0"
|
|
|
|
|
|
def test_reset_all_counters(photosdb):
|
|
"""Test reset_all_counters()"""
|
|
photo = photosdb.photos()[0]
|
|
result = photo.render_template("{counter.a}")
|
|
assert result[0][0] == "0"
|
|
result = photo.render_template("{counter.b}")
|
|
assert result[0][0] == "0"
|
|
|
|
template_counter.reset_all_counters()
|
|
result = photo.render_template("{counter.a}")
|
|
assert result[0][0] == "0"
|
|
result = photo.render_template("{counter.b}")
|
|
assert result[0][0] == "0"
|