osxphotos/tests/test_search_info_10_15_4.py
2023-06-18 16:22:46 -07:00

233 lines
7.4 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

""" test PhotoInfo.search_info """
import pytest
from osxphotos._constants import _UNKNOWN_PERSON
PHOTOS_DB = "./tests/Test-10.15.4.photoslibrary/database/photos.db"
PHOTOS_DB_PATH = "/Test-10.15.4.photoslibrary/database/photos.db"
PHOTOS_LIBRARY_PATH = "/Test-10.15.4.photoslibrary"
LABELS_DICT = {
# A92D9C26-3A50-4197-9388-CB5F7DB9FA91 IMG_1994.JPG None RAW + JPEG, JPEG Original [] False
"A92D9C26-3A50-4197-9388-CB5F7DB9FA91": [],
# F12384F6-CD17-4151-ACBA-AE0E3688539E Pumkins1.jpg Can we carry this? Girls with pumpkins [] False
"F12384F6-CD17-4151-ACBA-AE0E3688539E": [],
# D79B8D77-BFFC-460B-9312-034F2877D35B Pumkins2.jpg I found one! Girl holding pumpkin [] False
"D79B8D77-BFFC-460B-9312-034F2877D35B": [],
# D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068 DSC03584.dng None RAW only [] False
"D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068": [],
# A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C Pumpkins4.jpg Pumpkin heads None [] True
"A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C": [],
# 3DD2C897-F19E-4CA6-8C22-B027D5A71907 IMG_4547.jpg Elder Park Elder Park, Adelaide, Australia ['Statue', 'Art'] False
"3DD2C897-F19E-4CA6-8C22-B027D5A71907": ["Statue", "Art"],
# 8E1D7BC9-9321-44F9-8CFB-4083F6B9232A IMG_2000.JPG None RAW + JPEG, Not copied to library [] False
"8E1D7BC9-9321-44F9-8CFB-4083F6B9232A": [],
# 4D521201-92AC-43E5-8F7C-59BC41C37A96 IMG_1997.JPG None RAW + JPEG, RAW original [] False
"4D521201-92AC-43E5-8F7C-59BC41C37A96": [],
# 6191423D-8DB8-4D4C-92BE-9BBBA308AAC4 Tulips.jpg Tulips tied together at a flower shop Wedding tulips ['Flower', 'Vase', 'Bouquet', 'Container', 'Art', 'Flower Arrangement', 'Plant'] False
"6191423D-8DB8-4D4C-92BE-9BBBA308AAC4": [
"Flower",
"Vase",
"Bouquet",
"Container",
"Art",
"Flower Arrangement",
"Plant",
],
# 1EB2B765-0765-43BA-A90C-0D0580E6172C Pumpkins3.jpg None Kids in pumpkin field [] False
"1EB2B765-0765-43BA-A90C-0D0580E6172C": [],
# DC99FBDD-7A52-4100-A5BB-344131646C30 St James Park.jpg St. James's Park None ['Tree', 'Plant', 'Waterways', 'River', 'Sky', 'Cloudy', 'Land', 'Water Body', 'Water', 'Outdoor'] False
"DC99FBDD-7A52-4100-A5BB-344131646C30": [
"Tree",
"Plant",
"Waterways",
"River",
"Sky",
"Cloudy",
"Land",
"Water Body",
"Water",
"Outdoor",
],
# E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51 wedding.jpg None Bride Wedding day [] False
"E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51": [],
}
LABELS_NORMALIZED_DICT = {
# DC99FBDD-7A52-4100-A5BB-344131646C30 St James Park.jpg St. James's Park None ['tree', 'plant', 'waterways', 'river', 'sky', 'cloudy', 'land', 'water body', 'water', 'outdoor'] False
"DC99FBDD-7A52-4100-A5BB-344131646C30": [
"tree",
"plant",
"waterways",
"river",
"sky",
"cloudy",
"land",
"water body",
"water",
"outdoor",
],
# 4D521201-92AC-43E5-8F7C-59BC41C37A96 IMG_1997.JPG None RAW + JPEG, RAW original [] False
"4D521201-92AC-43E5-8F7C-59BC41C37A96": [],
# A92D9C26-3A50-4197-9388-CB5F7DB9FA91 IMG_1994.JPG None RAW + JPEG, JPEG Original [] False
"A92D9C26-3A50-4197-9388-CB5F7DB9FA91": [],
# E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51 wedding.jpg None Bride Wedding day [] False
"E9BC5C36-7CD1-40A1-A72B-8B8FAC227D51": [],
# D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068 DSC03584.dng None RAW only [] False
"D05A5FE3-15FB-49A1-A15D-AB3DA6F8B068": [],
# 8E1D7BC9-9321-44F9-8CFB-4083F6B9232A IMG_2000.JPG None RAW + JPEG, Not copied to library [] False
"8E1D7BC9-9321-44F9-8CFB-4083F6B9232A": [],
# 3DD2C897-F19E-4CA6-8C22-B027D5A71907 IMG_4547.jpg Elder Park Elder Park, Adelaide, Australia ['statue', 'art'] False
"3DD2C897-F19E-4CA6-8C22-B027D5A71907": ["statue", "art"],
# 6191423D-8DB8-4D4C-92BE-9BBBA308AAC4 Tulips.jpg Tulips tied together at a flower shop Wedding tulips ['flower', 'vase', 'bouquet', 'container', 'art', 'flower arrangement', 'plant'] False
"6191423D-8DB8-4D4C-92BE-9BBBA308AAC4": [
"flower",
"vase",
"bouquet",
"container",
"art",
"flower arrangement",
"plant",
],
# D79B8D77-BFFC-460B-9312-034F2877D35B Pumkins2.jpg I found one! Girl holding pumpkin [] False
"D79B8D77-BFFC-460B-9312-034F2877D35B": [],
# F12384F6-CD17-4151-ACBA-AE0E3688539E Pumkins1.jpg Can we carry this? Girls with pumpkins [] False
"F12384F6-CD17-4151-ACBA-AE0E3688539E": [],
# A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C Pumpkins4.jpg Pumpkin heads None [] True
"A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C": [],
}
SEARCH_INFO_DICT = {
# valid search_info
"DC99FBDD-7A52-4100-A5BB-344131646C30": True,
# missing, so no search_info
"A1DD1F98-2ECD-431F-9AC9-5AFEFE2D3A5C": False,
}
LABELS = [
"Tree",
"Plant",
"Waterways",
"River",
"Sky",
"Cloudy",
"Land",
"Water Body",
"Water",
"Outdoor",
"Statue",
"Art",
"Flower",
"Vase",
"Bouquet",
"Container",
"Flower Arrangement",
]
LABELS_NORMALIZED = [
"tree",
"plant",
"waterways",
"river",
"sky",
"cloudy",
"land",
"water body",
"water",
"outdoor",
"statue",
"art",
"flower",
"vase",
"bouquet",
"container",
"flower arrangement",
]
LABELS_AS_DICT = {
"Plant": 2,
"Art": 2,
"Tree": 1,
"Waterways": 1,
"River": 1,
"Sky": 1,
"Cloudy": 1,
"Land": 1,
"Water Body": 1,
"Water": 1,
"Outdoor": 1,
"Statue": 1,
"Flower": 1,
"Vase": 1,
"Bouquet": 1,
"Container": 1,
"Flower Arrangement": 1,
}
LABELS_NORMALIZED_AS_DICT = {
"plant": 2,
"art": 2,
"tree": 1,
"waterways": 1,
"river": 1,
"sky": 1,
"cloudy": 1,
"land": 1,
"water body": 1,
"water": 1,
"outdoor": 1,
"statue": 1,
"flower": 1,
"vase": 1,
"bouquet": 1,
"container": 1,
"flower arrangement": 1,
}
@pytest.fixture
def photosdb():
# return a PhotosDB object for use by tests
import osxphotos
return osxphotos.PhotosDB(dbfile=PHOTOS_DB)
def test_search_info(photosdb):
for uuid in SEARCH_INFO_DICT:
photo = photosdb.photos(uuid=[uuid])[0]
if SEARCH_INFO_DICT[uuid]:
assert photo.search_info
else:
# still have a search info object but should have no data
assert photo.search_info._db_searchinfo is None
def test_labels_normalized(photosdb):
for uuid in LABELS_NORMALIZED_DICT:
photo = photosdb.photos(uuid=[uuid])[0]
assert sorted(photo.search_info_normalized.labels) == sorted(
LABELS_NORMALIZED_DICT[uuid]
)
assert sorted(photo.labels_normalized) == sorted(LABELS_NORMALIZED_DICT[uuid])
def test_labels(photosdb):
for uuid in LABELS_DICT:
photo = photosdb.photos(uuid=[uuid])[0]
assert sorted(photo.search_info.labels) == sorted(LABELS_DICT[uuid])
assert sorted(photo.labels) == sorted(LABELS_DICT[uuid])
def test_photosdb_labels(photosdb):
assert sorted(photosdb.labels) == sorted(LABELS)
assert sorted(photosdb.labels_normalized) == sorted(LABELS_NORMALIZED)
def test_photosdb_labels_as_dict(photosdb):
assert photosdb.labels_as_dict == LABELS_AS_DICT
assert photosdb.labels_normalized_as_dict == LABELS_NORMALIZED_AS_DICT