Added test for SearchInfo on 10.15.5

This commit is contained in:
Rhet Turnbull
2020-05-29 21:40:29 -07:00
parent fd71b13c77
commit 3a8bef1572
35 changed files with 313 additions and 14 deletions

View File

@@ -3,24 +3,24 @@
<plist version="1.0">
<dict>
<key>BackgroundHighlightCollection</key>
<date>2020-04-19T15:27:34Z</date>
<date>2020-05-30T01:45:51Z</date>
<key>BackgroundHighlightEnrichment</key>
<date>2020-04-19T15:27:34Z</date>
<date>2020-05-30T01:45:51Z</date>
<key>BackgroundJobAssetRevGeocode</key>
<date>2020-04-19T15:27:35Z</date>
<date>2020-05-30T04:01:24Z</date>
<key>BackgroundJobSearch</key>
<date>2020-04-19T15:27:35Z</date>
<date>2020-05-30T01:45:51Z</date>
<key>BackgroundPeopleSuggestion</key>
<date>2020-04-19T15:27:34Z</date>
<date>2020-05-30T01:45:51Z</date>
<key>BackgroundUserBehaviorProcessor</key>
<date>2020-04-19T15:27:35Z</date>
<date>2020-05-29T04:31:38Z</date>
<key>PhotoAnalysisGraphLastBackgroundGraphConsistencyUpdateJobDateKey</key>
<date>2020-04-11T20:10:27Z</date>
<date>2020-05-30T02:16:06Z</date>
<key>PhotoAnalysisGraphLastBackgroundGraphRebuildJobDate</key>
<date>2020-04-11T20:00:24Z</date>
<date>2020-05-29T04:31:37Z</date>
<key>PhotoAnalysisGraphLastBackgroundMemoryGenerationJobDate</key>
<date>2020-04-19T15:27:35Z</date>
<date>2020-05-30T04:01:24Z</date>
<key>SiriPortraitDonation</key>
<date>2020-04-19T15:27:35Z</date>
<date>2020-05-29T04:31:38Z</date>
</dict>
</plist>

View File

@@ -3,8 +3,8 @@
<plist version="1.0">
<dict>
<key>FaceIDModelLastGenerationKey</key>
<date>2020-04-11T20:00:25Z</date>
<date>2020-05-29T03:44:04Z</date>
<key>LastContactClassificationKey</key>
<date>2020-04-11T20:00:26Z</date>
<date>2020-05-29T04:31:40Z</date>
</dict>
</plist>

View File

@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IncrementalPersonProcessingStage</key>
<integer>0</integer>
<integer>6</integer>
<key>PersonBuilderLastMinimumFaceGroupSizeForCreatingMergeCandidates</key>
<integer>15</integer>
<key>PersonBuilderMergeCandidatesEnabled</key>

View File

@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>coalesceDate</key>
<date>2020-05-29T15:20:05Z</date>
<key>coalescePayloadVersion</key>
<integer>10</integer>
<key>currentPayloadVersion</key>
<integer>10</integer>
<key>snapshotDate</key>

View File

@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>coalesceDate</key>
<date>2020-05-29T15:20:05Z</date>
<key>coalescePayloadVersion</key>
<integer>1</integer>
<key>currentPayloadVersion</key>
<integer>1</integer>
<key>snapshotDate</key>

View File

@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>coalesceDate</key>
<date>2020-04-11T19:26:12Z</date>
<date>2020-05-29T15:20:05Z</date>
<key>coalescePayloadVersion</key>
<integer>1</integer>
<key>currentPayloadVersion</key>

View File

@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>coalesceDate</key>
<date>2020-05-29T15:20:05Z</date>
<key>coalescePayloadVersion</key>
<integer>1</integer>
<key>currentPayloadVersion</key>
<integer>1</integer>
<key>snapshotDate</key>

View File

@@ -0,0 +1,287 @@
""" 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": [],
# 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": [],
# 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": [],
# 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",
"Foliage",
"Window",
"Decorative Plant",
"Blue Sky",
"Palm Tree",
"Flower",
"Flower Arrangement",
"Bouquet",
"Vase",
"Container",
"Camera",
]
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",
]
LABELS_AS_DICT = {
"Plant": 5,
"Tree": 2,
"Sky": 2,
"Outdoor": 2,
"Art": 2,
"Foliage": 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,
}
LABELS_NORMALIZED_AS_DICT = {
"plant": 5,
"tree": 2,
"sky": 2,
"outdoor": 2,
"art": 2,
"foliage": 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,
}
@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]
logging.warning(f"uuid = {uuid}")
assert sorted(photo.search_info.labels_normalized) == 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:
logging.warning(f"uuid = {uuid}")
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