33 lines
1.5 KiB
Python
33 lines
1.5 KiB
Python
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.database import Base
|
|
from app.models import Rig, RigComponent, TackleItem
|
|
from app.routers.catalog import rig_detail, tackle_item, tackle_items
|
|
|
|
|
|
def test_tackle_catalog_filters_details_and_missing_fields() -> None:
|
|
engine = create_engine("sqlite://")
|
|
Base.metadata.create_all(engine)
|
|
with Session(engine) as db:
|
|
item = TackleItem(
|
|
name="API тестовая блесна", normalized_name="api тестовая блесна",
|
|
category="lure", subcategory="spinner", brand="RF4", family=None,
|
|
unlock_level=0, source_system="fixture", source_external_id="api-lure-1",
|
|
source_url="https://example.test/lure/api-lure-1",
|
|
)
|
|
rig = Rig(name="API тестовый монтаж", normalized_name="api тестовый монтаж", source_system="fixture")
|
|
rig.components.append(RigComponent(role="lure", position=0, tackle_item=item, raw_value=item.name))
|
|
db.add(rig)
|
|
db.commit()
|
|
|
|
page = tackle_items(db, category="lure", brand="RF4", family=None, unlock_level=None, limit=10, offset=0)
|
|
assert page.total == 1
|
|
assert page.items[0].missing_fields == ["family", "source_checked_at"]
|
|
assert tackle_item(item.id, db).name == item.name
|
|
details = rig_detail(rig.id, db)
|
|
assert details.components[0].raw_value == item.name
|
|
assert details.missing_fields == ["source_url", "source_checked_at"]
|
|
|
|
engine.dispose()
|