feat(provenance): importer sets image_record.artist_id, stops minting artist tags

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-18 21:33:55 -04:00
parent 63e7185811
commit 914cf14d9e
2 changed files with 65 additions and 29 deletions
+54
View File
@@ -0,0 +1,54 @@
"""FC-2d-vii-c: importer sets artist_id, creates no artist tags."""
import pytest
from PIL import Image
from sqlalchemy import func, select
from backend.app.models import Artist, ImageRecord, ImportSettings, Tag, TagKind
from backend.app.services.importer import Importer
from backend.app.services.thumbnailer import Thumbnailer
pytestmark = pytest.mark.integration
@pytest.fixture
def import_layout(tmp_path):
import_root = tmp_path / "import"
images_root = tmp_path / "images"
import_root.mkdir()
images_root.mkdir()
return import_root, images_root
@pytest.fixture
def importer(db_sync, import_layout):
import_root, images_root = import_layout
settings = db_sync.execute(
select(ImportSettings).where(ImportSettings.id == 1)
).scalar_one()
return Importer(
session=db_sync, images_root=images_root, import_root=import_root,
thumbnailer=Thumbnailer(images_root=images_root), settings=settings,
)
def _img(path):
path.parent.mkdir(parents=True, exist_ok=True)
Image.new("RGB", (64, 64), (123, 200, 50)).save(path, "JPEG")
def test_folder_import_sets_artist_id_no_tag(importer, import_layout):
import_root, _ = import_layout
m = import_root / "Alice" / "pic.jpg"
_img(m)
r = importer.import_one(m)
assert r.status == "imported"
rec = importer.session.get(ImageRecord, r.image_id)
artist = importer.session.execute(
select(Artist).where(Artist.slug == "alice")
).scalar_one()
assert rec.artist_id == artist.id
n_artist_tags = importer.session.execute(
select(func.count()).select_from(Tag).where(Tag.kind == TagKind.artist)
).scalar_one()
assert n_artist_tags == 0