Files
FabledCurator/tests/test_importer_artist_id.py
T
2026-05-18 21:33:55 -04:00

55 lines
1.7 KiB
Python

"""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