68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
""" test SearchInfo class """
|
|
|
|
# Note: Run tests/generate_search_info_test_data.py to generate the UUID_SEARCH_INFO dict
|
|
|
|
import json
|
|
import os
|
|
|
|
import pytest
|
|
|
|
import osxphotos
|
|
|
|
# These tests must be run against the author's personal photo library
|
|
skip_test = "OSXPHOTOS_TEST_EXPORT" not in os.environ
|
|
pytestmark = pytest.mark.skipif(
|
|
skip_test, reason="These tests only run against system Photos library"
|
|
)
|
|
|
|
PHOTOS_DB = "/Users/rhet/Pictures/Photos Library.photoslibrary"
|
|
|
|
with open("tests/search_info_test_data_10_15_7.json") as fp:
|
|
test_data = json.load(fp)
|
|
|
|
UUID_SEARCH_INFO = test_data["UUID_SEARCH_INFO"]
|
|
UUID_SEARCH_INFO_NORMALIZED = test_data["UUID_SEARCH_INFO_NORMALIZED"]
|
|
UUID_SEARCH_INFO_ALL = test_data["UUID_SEARCH_INFO_ALL"]
|
|
UUID_SEARCH_INFO_ALL_NORMALIZED = test_data["UUID_SEARCH_INFO_ALL_NORMALIZED"]
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def photosdb():
|
|
return osxphotos.PhotosDB(dbfile=PHOTOS_DB)
|
|
|
|
|
|
def test_search_info(photosdb):
|
|
for uuid in UUID_SEARCH_INFO:
|
|
photo = photosdb.get_photo(uuid)
|
|
search_dict = photo.search_info.asdict()
|
|
for k, v in search_dict.items():
|
|
if type(v) == list:
|
|
assert sorted(v) == sorted(UUID_SEARCH_INFO[uuid][k])
|
|
else:
|
|
assert v == UUID_SEARCH_INFO[uuid][k]
|
|
|
|
|
|
def test_search_info_normalized(photosdb):
|
|
for uuid in UUID_SEARCH_INFO_NORMALIZED:
|
|
photo = photosdb.get_photo(uuid)
|
|
search_dict = photo.search_info_normalized.asdict()
|
|
for k, v in search_dict.items():
|
|
if type(v) == list:
|
|
assert sorted(v) == sorted(UUID_SEARCH_INFO_NORMALIZED[uuid][k])
|
|
else:
|
|
assert v == UUID_SEARCH_INFO_NORMALIZED[uuid][k]
|
|
|
|
|
|
def test_search_info_all(photosdb):
|
|
for uuid in UUID_SEARCH_INFO_ALL:
|
|
photo = photosdb.get_photo(uuid)
|
|
assert sorted(photo.search_info.all) == sorted(UUID_SEARCH_INFO_ALL[uuid])
|
|
|
|
|
|
def test_search_info_all_normalized(photosdb):
|
|
for uuid in UUID_SEARCH_INFO_ALL_NORMALIZED:
|
|
photo = photosdb.get_photo(uuid)
|
|
assert sorted(photo.search_info_normalized.all) == sorted(
|
|
UUID_SEARCH_INFO_ALL_NORMALIZED[uuid]
|
|
)
|