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

373 lines
9.8 KiB
Python
Raw Permalink 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.5.photoslibrary/database/photos.db"
PHOTOS_DB_PATH = "/Test-10.15.5.photoslibrary/database/photos.db"
PHOTOS_LIBRARY_PATH = "/Test-10.15.5.photoslibrary"
LABELS_DICT = {
# A92D9C26-3A50-4197-9388-CB5F7DB9FA91 IMG_1994.JPG None RAW + JPEG, JPEG Original [] False
"A92D9C26-3A50-4197-9388-CB5F7DB9FA91": [
"Blue Sky",
"Outdoor",
"Palm Tree",
"Plant",
"Sky",
"Tree",
],
# F12384F6-CD17-4151-ACBA-AE0E3688539E Pumkins1.jpg Can we carry this? Girls with pumpkins [] False
"F12384F6-CD17-4151-ACBA-AE0E3688539E": [
"Vegetable",
"Pumpkin",
"Farm",
"Food",
"Outdoor",
"Agriculture",
"People",
"Plant",
"Straw Hay",
],
# 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": ["Camera"],
# 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": ["Foliage", "Plant"],
# 4D521201-92AC-43E5-8F7C-59BC41C37A96 IMG_1997.JPG None RAW + JPEG, RAW original [] False
"4D521201-92AC-43E5-8F7C-59BC41C37A96": [
"Decorative Plant",
"Foliage",
"Plant",
"Window",
],
# 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": [
"Child",
"Sky",
"Plant",
"People",
"Clothing",
"Jeans",
"Outdoor",
"Agriculture",
"Farm",
"Food",
"Vegetable",
"Pumpkin",
],
# 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": [
"decorative plant",
"foliage",
"plant",
"window",
],
# A92D9C26-3A50-4197-9388-CB5F7DB9FA91 IMG_1994.JPG None RAW + JPEG, JPEG Original [] False
"A92D9C26-3A50-4197-9388-CB5F7DB9FA91": [
"blue sky",
"outdoor",
"palm tree",
"plant",
"sky",
"tree",
],
# 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": ["camera"],
# 8E1D7BC9-9321-44F9-8CFB-4083F6B9232A IMG_2000.JPG None RAW + JPEG, Not copied to library [] False
"8E1D7BC9-9321-44F9-8CFB-4083F6B9232A": ["foliage", "plant"],
# 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": [],
# 1EB2B765-0765-43BA-A90C-0D0580E6172C Pumpkins3.jpg None Kids in pumpkin field [] False
"1EB2B765-0765-43BA-A90C-0D0580E6172C": [
"child",
"sky",
"plant",
"people",
"clothing",
"jeans",
"outdoor",
"agriculture",
"farm",
"food",
"vegetable",
"pumpkin",
],
# F12384F6-CD17-4151-ACBA-AE0E3688539E Pumkins1.jpg Can we carry this? Girls with pumpkins [] False
"F12384F6-CD17-4151-ACBA-AE0E3688539E": [
"vegetable",
"pumpkin",
"farm",
"food",
"outdoor",
"agriculture",
"people",
"plant",
"straw hay",
],
# 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",
"Foliage",
"Window",
"Decorative Plant",
"Blue Sky",
"Palm Tree",
"Flower",
"Flower Arrangement",
"Bouquet",
"Vase",
"Container",
"Camera",
"Child",
"People",
"Clothing",
"Jeans",
"Agriculture",
"Farm",
"Food",
"Vegetable",
"Pumpkin",
"Straw Hay",
]
LABELS_NORMALIZED = [
"tree",
"plant",
"waterways",
"river",
"sky",
"cloudy",
"land",
"water body",
"water",
"outdoor",
"statue",
"art",
"foliage",
"window",
"decorative plant",
"blue sky",
"palm tree",
"flower",
"flower arrangement",
"bouquet",
"vase",
"container",
"camera",
"child",
"people",
"clothing",
"jeans",
"agriculture",
"farm",
"food",
"vegetable",
"pumpkin",
"straw hay",
]
LABELS_AS_DICT = {
"Plant": 7,
"Outdoor": 4,
"Sky": 3,
"Tree": 2,
"Art": 2,
"Foliage": 2,
"People": 2,
"Agriculture": 2,
"Farm": 2,
"Food": 2,
"Vegetable": 2,
"Pumpkin": 2,
"Waterways": 1,
"River": 1,
"Cloudy": 1,
"Land": 1,
"Water Body": 1,
"Water": 1,
"Statue": 1,
"Window": 1,
"Decorative Plant": 1,
"Blue Sky": 1,
"Palm Tree": 1,
"Flower": 1,
"Flower Arrangement": 1,
"Bouquet": 1,
"Vase": 1,
"Container": 1,
"Camera": 1,
"Child": 1,
"Clothing": 1,
"Jeans": 1,
"Straw Hay": 1,
}
LABELS_NORMALIZED_AS_DICT = {
"plant": 7,
"outdoor": 4,
"sky": 3,
"tree": 2,
"art": 2,
"foliage": 2,
"people": 2,
"agriculture": 2,
"farm": 2,
"food": 2,
"vegetable": 2,
"pumpkin": 2,
"waterways": 1,
"river": 1,
"cloudy": 1,
"land": 1,
"water body": 1,
"water": 1,
"statue": 1,
"window": 1,
"decorative plant": 1,
"blue sky": 1,
"palm tree": 1,
"flower": 1,
"flower arrangement": 1,
"bouquet": 1,
"vase": 1,
"container": 1,
"camera": 1,
"child": 1,
"clothing": 1,
"jeans": 1,
"straw hay": 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):
import logging
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):
import logging
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