from unittest.mock import MagicMock

from db.channel_catalog_provision import _link_provision_listing_path_targets_magento


def test_link_provision_listing_path_targets_magento_writes_targets(monkeypatch):
    session = MagicMock()
    paths = []
    targets = []

    monkeypatch.setattr(
        "db.channel_catalog_provision.upsert_listing_path",
        lambda sess, **kwargs: paths.append(kwargs),
    )
    monkeypatch.setattr(
        "db.channel_catalog_provision.upsert_listing_path_target",
        lambda sess, **kwargs: targets.append(kwargs),
    )

    linked = _link_provision_listing_path_targets_magento(
        session,
        category_ids_by_path={
            "All Products": 2,
            "Kitchen Cabinets/Anna Stone Gray": 99,
        },
        connection_id=1,
    )

    assert linked == 1
    assert len(paths) == 1
    assert paths[0]["path_slug"] == "kitchen-cabinets/anna-stone-gray"
    assert targets[0]["remote_id"] == "99"
    assert targets[0]["channel_code"] == "magento"
