36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
import uuid
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.database import Base
|
|
from app.models import Rig, RigComponent, TackleItem
|
|
|
|
|
|
def test_tackle_item_and_rig_components_keep_provenance_and_legacy_independence() -> None:
|
|
engine = create_engine("sqlite:///:memory:")
|
|
Base.metadata.create_all(engine)
|
|
item_id = uuid.uuid4()
|
|
rig_id = uuid.uuid4()
|
|
with Session(engine) as session:
|
|
item = TackleItem(
|
|
id=item_id, name="Spiker #2", normalized_name="spiker #2",
|
|
category="lure", subcategory="spinner", brand="RF4", family="spoon",
|
|
unlock_level=0, source_system="rf4db", source_external_id="spiker-2",
|
|
source_url="https://rf4db.com/ru/wiki/lures/spiker-2",
|
|
raw_payload={"weight": {"state": "value", "value": 0}},
|
|
)
|
|
rig = Rig(
|
|
id=rig_id, name="Method Popup", normalized_name="method popup",
|
|
source_system="rf4db", source_external_id="method-popup",
|
|
)
|
|
rig.components.append(RigComponent(role="lure", position=0, tackle_item=item, raw_value="Spiker #2"))
|
|
session.add(rig)
|
|
session.commit()
|
|
|
|
saved = session.get(TackleItem, item_id)
|
|
assert saved is not None
|
|
assert saved.unlock_level == 0
|
|
assert saved.raw_payload == {"weight": {"state": "value", "value": 0}}
|
|
assert saved.rig_components[0].rig_id == rig_id
|