82 lines
4.0 KiB
Python
82 lines
4.0 KiB
Python
from datetime import datetime
|
|
from pathlib import Path
|
|
import re
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
ART = ROOT / "_art"
|
|
JOB = "7c832afa1b73023d8f2391ff40c221be9ffd468a1a96a6bf4900cbf95595d31d"
|
|
ARMENIA = [f"/img/arts/uploads/{JOB}/{index:02}.jpg" for index in (9, 8, 7, 6, 5, 4)] + [
|
|
"/img/arts/uploads/474ab3283ce8801ac6e59b67b65b4169167053873a5a8db4a15b840a3448266c/00.jpg"]
|
|
ROMANIA = [f"/img/arts/uploads/{JOB}/{index:02}.jpg" for index in (0, 1)] + [
|
|
f"/img/arts/uploads/c53f20236f166632bff163339c8e789cc09b0d7e63c5b531b1fc20705460975b/{index:02}.jpg"
|
|
for index in range(5)] + [
|
|
"/img/arts/uploads/260cc99527c13f256d4ea39d0959f5daa942c888ea882852e73fd94f6c30b7db/00.jpg",
|
|
"/img/arts/uploads/b18a2f1c7127077c801160782012cb164759f0b9dd41762205b45e4c9a07d673/00.jpg"]
|
|
COLLECTIONS = {
|
|
"iran-analog-2024": [
|
|
"Taq-e-Bostan_000521270020.jpg", "Taq-e-Bostan_000521270019.jpg",
|
|
"Taq-e-Bostan_000521270018.jpg", "Tabriz_000521270013.jpg",
|
|
"Tabriz_000521270012.jpg", "Iran_000521270023.jpg",
|
|
"Iran_000521270021.jpg", "Hamadan_000521270035.jpg",
|
|
"Hamadan_000521270034.jpg", "Hamadan_000521270033.jpg",
|
|
"Hamadan_000521270032.jpg", "Hamadan_000521270031.jpg",
|
|
"Ganjname,-Hamadan_000521270029.jpg", "Cowboy-from-Hamadan_000521270030.jpg",
|
|
"Bistoon_000521270027.jpg", "Bistoon_000521270026.jpg",
|
|
"Bistoon_000521270025.jpg", "Bazaar-e-Tabriz_000521270010.jpg",
|
|
"Bazaar-e-Tabriz_000521270009.jpg", "Bazaar-e-Tabriz_000521270008.jpg",
|
|
],
|
|
"kazakhstan-2024": [
|
|
"x_DSC-0999.jpg", "x_DSC-0994.jpg",
|
|
"World-Nomad-Games,-Kazakhstan_DSC-0685.jpg",
|
|
"World-Nomad-Games,-Kazakhstan_DSC-0536.jpg",
|
|
"World-Nomad-Games,-Kazakhstan_DSC-0472.jpg",
|
|
"World-Nomad-Games,-Kazakhstan_DSC-0298.jpg",
|
|
"World-Nomad-Games,-Kazakhstan_DSC-0251.jpg",
|
|
"Kazakhstan_DSC-0870.jpg", "Kazakhstan_DSC-0865.jpg",
|
|
],
|
|
}
|
|
|
|
|
|
class PhotoHighlightTests(unittest.TestCase):
|
|
def test_uploaded_photos_are_individual_and_grouped(self):
|
|
records = []
|
|
for path in ART.glob("*photo-*.md"):
|
|
content = path.read_text()
|
|
images = re.findall(r'<img src="([^"]+/uploads/[^"]+)"', content)
|
|
self.assertEqual(len(images), 1, path)
|
|
date = re.search(r'^date: "([^"]+)"', content, re.MULTILINE)
|
|
anchor = re.search(r'^anchor: "([^"]+)"', content, re.MULTILINE)
|
|
records.append((datetime.fromisoformat(date.group(1)), images[0],
|
|
anchor.group(1) if anchor else None, content))
|
|
records.sort(reverse=True)
|
|
grouped = [record for record in records if record[1] in ARMENIA + ROMANIA]
|
|
self.assertEqual([record[1] for record in grouped], ARMENIA + ROMANIA)
|
|
self.assertEqual(grouped[0][2], "Armenia")
|
|
self.assertEqual(grouped[7][2], "Romania")
|
|
self.assertIn("Transmission of Flesh by Erfan Ashourioun", grouped[2][3])
|
|
|
|
def test_existing_collection_highlight_starts(self):
|
|
iran = (ART / "2024-10-25-Taq-e-Bostan_000521270020.md").read_text()
|
|
kazakhstan = (ART / "2024-10-09-x_DSC-0999.md").read_text()
|
|
self.assertIn('anchor: "Iran - Hamadan, Kermanshah, Tabriz"', iran)
|
|
self.assertIn('anchor: "Kazakhstan - World Nomad Games"', kazakhstan)
|
|
|
|
def test_existing_collection_order_uses_distinct_seconds(self):
|
|
for folder, filenames in COLLECTIONS.items():
|
|
records = []
|
|
for path in ART.glob("*.md"):
|
|
content = path.read_text()
|
|
image = re.search(rf'/img/arts/{folder}/([^\s)"\']+)', content)
|
|
if image:
|
|
date = re.search(r'^date: "([^"]+)"', content, re.MULTILINE)
|
|
records.append((datetime.fromisoformat(date.group(1)), image.group(1)))
|
|
records.sort(reverse=True)
|
|
self.assertEqual([filename for _, filename in records], filenames)
|
|
self.assertEqual(len({date for date, _ in records}), len(filenames))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|