from db.brochure_taxonomy import audit_brochure_taxonomy_payload, reconcile_brochure_taxonomy_assignments
from db.collection_brochure_seed import seed_collection_brochure
from db.location_registry import ensure_default_home_surplus_locations
from db.models import (
    BrochureTaxonomyGroup,
    BrochureTaxonomyGroupSku,
    CollectionCommerceProfile,
    MasterBrand,
    MasterCollectionRegistry,
    MasterProduct,
    MasterProductFamily,
    MasterTaxonomyNode,
)


def test_seed_collection_brochure_upserts_registry_and_profile(catalog_intent_session):
    payload = {
        "source_document": {
            "collection_code": "ANRWO",
            "file_name": "AnnaNaturalRiftWhiteOak_0226.pdf",
            "source_url": "https://www.homesurplus.com/wp-content/uploads/2026/03/AnnaNaturalRiftWhiteOak_0226.pdf",
            "document_version_code": "V-0226",
            "notes": [
                "No glass loose-door accessory table in this brochure.",
                "Additional panel/skin SKUs present for this collection.",
            ],
        },
        "collection": {
            "canonical_code": "anna-natural-rift-white-oak",
            "display_name": "Anna Natural Rift White Oak",
            "brand_label": "Port & Bell",
            "line_name": "Anna",
            "color_label": "Natural Rift White Oak",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "availability": {
            "modes": [
                {"code": "grab_and_go", "label": "Grab & Go"},
                {"code": "available", "label": "Available"},
                {"code": "special_order", "label": "Special Order"},
            ]
        },
        "sample_products": [{"brochure_sku": "SD", "product_type": "sample_door"}],
        "specifications": {"style": {"door_style": "Shaker", "wood_species": "White Oak"}},
        "kitchen_packages": [{"package_code": "l_shape_8x10", "price_usd": 4800}],
        "sku_groups": {"panels_and_fillers": {"panels": ["FPP9648GL 1/2", "BASESKIN", "W30SKIN"]}},
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Basic Wall",
                "brochure_leaf_label": "Double Door Glass Wall Cabinet",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Double Door Glass Wall Cabinet",
                "skus": ["GDW2415", "GDW2715"],
            }
        ],
        "ambiguities": [{"field": "bridge_wall", "note": "Missing 33in-wide deep variant."}],
    }

    result = seed_collection_brochure(
        catalog_intent_session,
        payload,
        channel_code="shopify",
        connection_id=7,
    )
    assert result["collection_registry"]["code"] == "ANRWO"
    assert result["collection_commerce_profile"]["sample_master_sku"] == "ANRWO-SD"
    assert result["collection_commerce_profile"]["availability_modes"] == [
        "grab_and_go",
        "available",
        "special_order",
    ]

    brand = catalog_intent_session.query(MasterBrand).filter_by(code="port-bell").one()
    family = catalog_intent_session.query(MasterProductFamily).filter_by(code="cabinets").one()
    registry = catalog_intent_session.query(MasterCollectionRegistry).filter_by(code="ANRWO").one()
    profile = (
        catalog_intent_session.query(CollectionCommerceProfile)
        .filter_by(collection_registry_id=registry.id, channel_code="shopify", connection_id=7)
        .one()
    )
    assert brand.name == "Port & Bell"
    assert family.name == "Cabinets"
    assert registry.brand_id == brand.id
    assert registry.family_id == family.id
    assert profile.landing_metadata_json["sku_groups"]["panels_and_fillers"]["panels"][0] == "FPP9648GL 1/2"
    assert profile.landing_metadata_json["kitchen_packages"][0]["price_usd"] == 4800
    assert result["brochure_taxonomy"]["group_count"] == 1


def test_seed_collection_brochure_persists_brochure_taxonomy_groups(catalog_intent_session):
    hub = MasterTaxonomyNode(
        parent_id=None,
        node_kind="hub",
        code="kitchen-cabinets",
        name="Kitchen Cabinets",
        path_slug="kitchen-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(hub)
    catalog_intent_session.flush()
    wall = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="wall-cabinets",
        name="Kitchen Cabinets / Wall Cabinets",
        path_slug="kitchen-cabinets/wall-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(wall)
    catalog_intent_session.flush()
    catalog_intent_session.add(
        MasterTaxonomyNode(
            parent_id=wall.id,
            node_kind="category",
            code="double-door-glass-wall-cabinet",
            name="Kitchen Cabinets / Wall Cabinets / Double Door Glass Wall Cabinet",
            path_slug="kitchen-cabinets/wall-cabinets/double-door-glass-wall-cabinet",
            is_active=True,
        )
    )
    payload = {
        "source_document": {"collection_code": "ACH", "file_name": "AnnaCaramelHarvest_0226.json"},
        "collection": {
            "display_name": "Anna Caramel Harvest",
            "brand_label": "Port & Bell",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Basic Wall",
                "brochure_leaf_label": "Double Door Glass Wall Cabinet",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Double Door Glass Wall Cabinet",
                "skus": ["GDW3030", "GDW3315"],
            }
        ],
    }

    result = seed_collection_brochure(catalog_intent_session, payload, channel_code="magento", connection_id=4)

    registry = catalog_intent_session.query(MasterCollectionRegistry).filter_by(code="ACH").one()
    group = catalog_intent_session.query(BrochureTaxonomyGroup).filter_by(collection_registry_id=registry.id).one()
    rows = catalog_intent_session.query(BrochureTaxonomyGroupSku).filter_by(group_id=group.id).all()

    assert result["brochure_taxonomy"]["created_groups"] == 1
    assert group.mapping_status == "matched"
    assert group.canonical_taxonomy_path_slug == "kitchen-cabinets/wall-cabinets/double-door-glass-wall-cabinet"
    assert sorted(row.expected_master_sku for row in rows) == ["ACH-GDW3030", "ACH-GDW3315"]


def test_audit_brochure_taxonomy_payload_flags_unmapped_groups(catalog_intent_session):
    hub = MasterTaxonomyNode(
        parent_id=None,
        node_kind="hub",
        code="kitchen-cabinets",
        name="Kitchen Cabinets",
        path_slug="kitchen-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(hub)
    catalog_intent_session.flush()
    base = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="base-cabinets",
        name="Kitchen Cabinets / Base Cabinets",
        path_slug="kitchen-cabinets/base-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(base)
    payload = {
        "collection": {"category_l1": "Kitchen Cabinets"},
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Base Cabinets",
                "brochure_l2_label": "Basic Bases",
                "brochure_leaf_label": "Full Height Door",
                "skus": ["BH09", "BH12"],
            }
        ],
    }

    audit = audit_brochure_taxonomy_payload(payload, session=catalog_intent_session)

    assert audit["group_count"] == 1
    assert audit["mapping_status_counts"]["unmapped"] == 1


def test_reconcile_brochure_taxonomy_assignments_writes_listing_paths(catalog_intent_session):
    hub = MasterTaxonomyNode(
        parent_id=None,
        node_kind="hub",
        code="kitchen-cabinets",
        name="Kitchen Cabinets",
        path_slug="kitchen-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(hub)
    catalog_intent_session.flush()
    wall = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="wall-cabinets",
        name="Kitchen Cabinets / Wall Cabinets",
        path_slug="kitchen-cabinets/wall-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(wall)
    catalog_intent_session.flush()
    catalog_intent_session.add(
        MasterTaxonomyNode(
            parent_id=wall.id,
            node_kind="category",
            code="double-door-glass-wall-cabinet",
            name="Kitchen Cabinets / Wall Cabinets / Double Door Glass Wall Cabinet",
            path_slug="kitchen-cabinets/wall-cabinets/double-door-glass-wall-cabinet",
            is_active=True,
        )
    )
    catalog_intent_session.add(
        MasterProduct(
            sku="ACH-GDW3030",
            name="GDW3030",
            row_hash="hash-gdw3030",
            is_active=True,
            category_l1="Kitchen Cabinets",
            collection="Anna Caramel Harvest",
        )
    )
    payload = {
        "source_document": {"collection_code": "ACH", "file_name": "AnnaCaramelHarvest_0226.json"},
        "collection": {
            "display_name": "Anna Caramel Harvest",
            "brand_label": "Port & Bell",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Basic Wall",
                "brochure_leaf_label": "Double Door Glass Wall Cabinet",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Double Door Glass Wall Cabinet",
                "skus": ["GDW3030"],
            }
        ],
    }
    seed_collection_brochure(catalog_intent_session, payload, channel_code="magento", connection_id=4)

    result = reconcile_brochure_taxonomy_assignments(catalog_intent_session, brochure_collection_code="ACH", dry_run=False)

    assert result["sku_count"] == 1
    assert result["path_count"] == 5
    path_set = result["path_set_sample"][0]["path_slugs"]
    assert path_set == [
        "all-products",
        "kitchen-cabinets/wall-cabinets/double-door-glass-wall-cabinet",
        "kitchen-cabinets/wall-cabinets",
        "kitchen-cabinets",
        "kitchen-cabinets/anna-caramel-harvest",
    ]


def test_audit_brochure_taxonomy_payload_reads_real_sku_catalog_shape(catalog_intent_session):
    payload = {
        "collection": {
            "category_l1": "Kitchen Cabinets",
        },
        "sku_catalog": {
            "basic_wall": {
                "1_door": ["W0930", "W1230"],
                "glass_door": ["GDW1530", "GDW1836"],
            },
            "special_bases": {
                "angle_end": ["BEC1224L", "BEC1224R"],
            },
        },
    }

    audit = audit_brochure_taxonomy_payload(payload, session=catalog_intent_session)

    assert audit["group_count"] == 3
    labels = {group["brochure_path_text"] for group in audit["groups"]}
    assert "Kitchen Cabinets > Wall Cabinets > Basic Wall > 1 Door" in labels
    assert "Kitchen Cabinets > Wall Cabinets > Basic Wall > Glass Door" in labels
    assert "Kitchen Cabinets > Base Cabinets > Special Bases > Angle End" in labels


def test_audit_brochure_taxonomy_payload_classifies_structured_glass_wall_items(catalog_intent_session):
    payload = {
        "collection": {
            "category_l1": "Kitchen Cabinets",
        },
        "sku_catalog": {
            "basic_wall": [
                {
                    "sku": "GDW1830",
                    "sku_family": "basic_wall",
                    "sku_type": "wall_cabinet_glass",
                    "width_in": 18,
                    "height_in": 30,
                    "door_count": 1,
                    "glass": True,
                },
                {
                    "sku": "GDW3030",
                    "sku_family": "basic_wall",
                    "sku_type": "wall_cabinet_glass",
                    "width_in": 30,
                    "height_in": 30,
                    "door_count": 2,
                    "glass": True,
                },
            ],
        },
    }

    audit = audit_brochure_taxonomy_payload(payload, session=catalog_intent_session)
    by_path = {group["brochure_path_text"]: set(group["sku_sample"]) for group in audit["groups"]}

    assert "Kitchen Cabinets > Wall Cabinets > Single Door Glass Wall Cabinet" in by_path
    assert "GDW1830" in by_path["Kitchen Cabinets > Wall Cabinets > Single Door Glass Wall Cabinet"]
    assert "Kitchen Cabinets > Wall Cabinets > Double Door Glass Wall Cabinet" in by_path
    assert "GDW3030" in by_path["Kitchen Cabinets > Wall Cabinets > Double Door Glass Wall Cabinet"]


def test_audit_brochure_taxonomy_payload_applies_brochure_alias_mappings(catalog_intent_session):
    hub = MasterTaxonomyNode(
        parent_id=None,
        node_kind="hub",
        code="kitchen-cabinets",
        name="Kitchen Cabinets",
        path_slug="kitchen-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(hub)
    catalog_intent_session.flush()
    base = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="base-cabinets",
        name="Kitchen Cabinets / Base Cabinets",
        path_slug="kitchen-cabinets/base-cabinets",
        is_active=True,
    )
    wall = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="wall-cabinets",
        name="Kitchen Cabinets / Wall Cabinets",
        path_slug="kitchen-cabinets/wall-cabinets",
        is_active=True,
    )
    mouldings = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="mouldings",
        name="Kitchen Cabinets / Mouldings",
        path_slug="kitchen-cabinets/mouldings",
        is_active=True,
    )
    catalog_intent_session.add_all([base, wall, mouldings])
    catalog_intent_session.flush()
    catalog_intent_session.add_all(
        [
            MasterTaxonomyNode(
                parent_id=base.id,
                node_kind="category",
                code="basic-base",
                name="Kitchen Cabinets / Base Cabinets / Basic Base",
                path_slug="kitchen-cabinets/base-cabinets/basic-base",
                is_active=True,
            ),
            MasterTaxonomyNode(
                parent_id=base.id,
                node_kind="category",
                code="sink-base",
                name="Kitchen Cabinets / Base Cabinets / Sink Base",
                path_slug="kitchen-cabinets/base-cabinets/sink-base",
                is_active=True,
            ),
            MasterTaxonomyNode(
                parent_id=base.id,
                node_kind="category",
                code="drawer-base",
                name="Kitchen Cabinets / Base Cabinets / Drawer Base",
                path_slug="kitchen-cabinets/base-cabinets/drawer-base",
                is_active=True,
            ),
            MasterTaxonomyNode(
                parent_id=base.id,
                node_kind="category",
                code="special-base",
                name="Kitchen Cabinets / Base Cabinets / Special Base",
                path_slug="kitchen-cabinets/base-cabinets/special-base",
                is_active=True,
            ),
            MasterTaxonomyNode(
                parent_id=base.id,
                node_kind="category",
                code="corner-base",
                name="Kitchen Cabinets / Base Cabinets / Corner Base",
                path_slug="kitchen-cabinets/base-cabinets/corner-base",
                is_active=True,
            ),
            MasterTaxonomyNode(
                parent_id=wall.id,
                node_kind="category",
                code="bridge-wall",
                name="Kitchen Cabinets / Wall Cabinets / Bridge Wall",
                path_slug="kitchen-cabinets/wall-cabinets/bridge-wall",
                is_active=True,
            ),
        ]
    )
    payload = {
        "collection": {"category_l1": "Kitchen Cabinets"},
        "sku_catalog": {
            "basic_bases": ["B12", "B15"],
            "sink_bases": ["SB24", "SB27"],
            "drawer_bases": ["DB30-2", "DB12-3"],
            "special_bases": ["BMC24", "BWB18"],
            "bridge_wall": ["W2412", "W3015"],
            "base_cabinets": ["BCOR33L/R", "BBC36/39L/R", "EZR33"],
            "mouldings": ["TK8", "OCM8-1"],
        },
    }

    audit = audit_brochure_taxonomy_payload(payload, session=catalog_intent_session)
    by_path = {group["brochure_path_text"]: group for group in audit["groups"]}

    assert by_path["Kitchen Cabinets > Base Cabinets > Basic Bases"]["mapping_status"] == "matched"
    assert by_path["Kitchen Cabinets > Base Cabinets > Basic Bases"]["mapping_source"] == "brochure_alias"
    assert by_path["Kitchen Cabinets > Base Cabinets > Sink Bases"]["canonical_taxonomy_path_slug"] == (
        "kitchen-cabinets/base-cabinets/sink-base"
    )
    assert by_path["Kitchen Cabinets > Base Cabinets > Drawer Bases"]["canonical_taxonomy_path_slug"] == (
        "kitchen-cabinets/base-cabinets/drawer-base"
    )
    assert by_path["Kitchen Cabinets > Base Cabinets > Special Bases"]["canonical_taxonomy_path_slug"] == (
        "kitchen-cabinets/base-cabinets/special-base"
    )
    assert by_path["Kitchen Cabinets > Wall Cabinets > Bridge Wall"]["canonical_taxonomy_path_slug"] == (
        "kitchen-cabinets/wall-cabinets/bridge-wall"
    )
    assert by_path["Kitchen Cabinets > Base Cabinets > Base Cabinets"]["canonical_taxonomy_path_slug"] == (
        "kitchen-cabinets/base-cabinets/corner-base"
    )
    assert by_path["Kitchen Cabinets > Mouldings"]["canonical_taxonomy_path_slug"] == "kitchen-cabinets/mouldings"


def test_audit_brochure_taxonomy_payload_filters_note_and_touch_up_noise(catalog_intent_session):
    payload = {
        "collection": {"category_l1": "Kitchen Cabinets"},
        "sku_catalog": {
            "stacked_wall_notes": [
                "Open cabinets with no door and matching finish interior available.",
                "Loose glass doors available.",
            ],
            "accessories": {
                "touch_up_kit": ["SPRAY CAN", "PINT OF PAINT", "QUART OF PAINT", "GALLON OF PAINT"],
                "items": ["SC10", "ROTD-15"],
            },
        },
    }

    audit = audit_brochure_taxonomy_payload(payload, session=catalog_intent_session)
    labels = {group["brochure_path_text"] for group in audit["groups"]}

    assert "Kitchen Cabinets > Stacked Wall Notes" not in labels
    assert "Kitchen Cabinets > Accessories > Touch Up Kit" not in labels
    assert "Kitchen Cabinets > Accessories > Items" in labels


def test_seed_brochure_taxonomy_deactivates_stale_groups(catalog_intent_session):
    from db.brochure_taxonomy import seed_brochure_taxonomy
    from db.models import BrochureTaxonomyGroup, BrochureTaxonomyGroupSku, MasterCollectionRegistry

    hub = MasterTaxonomyNode(
        parent_id=None,
        node_kind="hub",
        code="kitchen-cabinets",
        name="Kitchen Cabinets",
        path_slug="kitchen-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(hub)
    catalog_intent_session.flush()
    wall = MasterTaxonomyNode(
        parent_id=hub.id,
        node_kind="category",
        code="wall-cabinets",
        name="Kitchen Cabinets / Wall Cabinets",
        path_slug="kitchen-cabinets/wall-cabinets",
        is_active=True,
    )
    catalog_intent_session.add(wall)
    catalog_intent_session.flush()
    catalog_intent_session.add(
        MasterTaxonomyNode(
            parent_id=wall.id,
            node_kind="category",
            code="basic-wall",
            name="Kitchen Cabinets / Wall Cabinets / Basic Wall",
            path_slug="kitchen-cabinets/wall-cabinets/basic-wall",
            is_active=True,
        )
    )
    catalog_intent_session.add(
        MasterTaxonomyNode(
            parent_id=wall.id,
            node_kind="category",
            code="single-door-glass-wall-cabinet",
            name="Kitchen Cabinets / Wall Cabinets / Single Door Glass Wall Cabinet",
            path_slug="kitchen-cabinets/wall-cabinets/single-door-glass-wall-cabinet",
            is_active=True,
        )
    )
    registry = MasterCollectionRegistry(code="ACH", name="Anna Caramel Harvest", is_active=True)
    catalog_intent_session.add(registry)
    catalog_intent_session.flush()

    first = {
        "source_document": {"collection_code": "ACH", "file_name": "Anna.json"},
        "collection": {"category_l1": "Kitchen Cabinets"},
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Basic Wall",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Basic Wall",
                "skus": ["W1530", "GDW1530"],
            }
        ],
    }
    seed_brochure_taxonomy(catalog_intent_session, first, collection_registry_id=registry.id)

    second = {
        "source_document": {"collection_code": "ACH", "file_name": "Anna.json"},
        "collection": {"category_l1": "Kitchen Cabinets"},
        "taxonomy_groups": [
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Single Door Glass Wall Cabinet",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Single Door Glass Wall Cabinet",
                "skus": ["GDW1530"],
            },
            {
                "brochure_l1_label": "Wall Cabinets",
                "brochure_l2_label": "Basic Wall",
                "canonical_taxonomy_path": "Kitchen Cabinets/Wall Cabinets/Basic Wall",
                "skus": ["W1530"],
            },
        ],
    }
    result = seed_brochure_taxonomy(catalog_intent_session, second, collection_registry_id=registry.id)

    groups = catalog_intent_session.query(BrochureTaxonomyGroup).filter_by(collection_registry_id=registry.id).all()
    active = [g for g in groups if g.is_active]
    assert result["deactivated_groups"] >= 0
    assert len(active) == 2
    assert {g.brochure_l2_label for g in active} == {"Basic Wall", "Single Door Glass Wall Cabinet"}

    basic = next(g for g in active if g.brochure_l2_label == "Basic Wall")
    basic_skus = (
        catalog_intent_session.query(BrochureTaxonomyGroupSku)
        .filter_by(group_id=basic.id, assignment_status="active")
        .all()
    )
    assert sorted(row.brochure_sku for row in basic_skus) == ["W1530"]


def test_expected_master_sku_prefixes_hyphenated_brochure_skus():
    from db.brochure_taxonomy import _expected_master_sku

    assert _expected_master_sku(
        brochure_collection_code="ACH",
        brochure_sku="GD-W1530",
        explicit_master_sku=None,
    ) == "ACH-GD-W1530"
    assert _expected_master_sku(
        brochure_collection_code="ACH",
        brochure_sku="OCM8-1",
        explicit_master_sku=None,
    ) == "ACH-OCM8-1"
    assert _expected_master_sku(
        brochure_collection_code="ACH",
        brochure_sku="ACH-GD-W1530",
        explicit_master_sku=None,
    ) == "ACH-GD-W1530"
    assert _expected_master_sku(
        brochure_collection_code="ACH",
        brochure_sku="TK8",
        explicit_master_sku=None,
    ) == "ACH-TK8"


def test_seed_collection_brochure_is_idempotent_for_same_scope(catalog_intent_session):
    payload = {
        "source_document": {"collection_code": "ACH", "file_name": "AnnaCaramelHarvest_0226.pdf"},
        "collection": {
            "display_name": "Anna Caramel Harvest",
            "brand_label": "Port & Bell",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "availability": {"modes": [{"code": "grab_and_go", "label": "Grab & Go"}]},
        "sample_products": [{"expected_master_sku": "ACH-SD"}],
    }

    first = seed_collection_brochure(catalog_intent_session, payload, channel_code="magento", connection_id=1)
    second = seed_collection_brochure(catalog_intent_session, payload, channel_code="magento", connection_id=1)

    assert first["collection_registry"]["id"] == second["collection_registry"]["id"]
    assert first["collection_commerce_profile"]["id"] == second["collection_commerce_profile"]["id"]


def test_seed_collection_brochure_expands_all_locations_and_maps_named_locations(catalog_intent_session):
    ensure_default_home_surplus_locations(catalog_intent_session)
    payload = {
        "source_document": {"collection_code": "ASW", "file_name": "AnnaSnowWhite_0226.pdf"},
        "collection": {
            "display_name": "Anna Snow White",
            "brand_label": "Port & Bell",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "availability": {
            "modes": [
                {"code": "grab_and_go", "label": "Grab & Go", "location_scope": "All Locations"},
                {"code": "available", "label": "Available", "location_scope": ["Bellmawr", "Baltimore"]},
            ]
        },
        "sample_products": [{"expected_master_sku": "ASW-SD"}],
    }

    seed_collection_brochure(catalog_intent_session, payload, channel_code="shopify", connection_id=9)
    registry = catalog_intent_session.query(MasterCollectionRegistry).filter_by(code="ASW").one()
    profile = (
        catalog_intent_session.query(CollectionCommerceProfile)
        .filter_by(collection_registry_id=registry.id, channel_code="shopify", connection_id=9)
        .one()
    )
    modes = profile.landing_metadata_json["availability"]["modes"]
    grab = next(item for item in modes if item["code"] == "grab_and_go")
    available = next(item for item in modes if item["code"] == "available")
    assert grab["all_active_locations"] is True
    assert set(grab["location_codes"]) == {"1", "2", "3", "10", "12", "43"}
    assert available["location_codes"] == ["2", "12"]


def test_seed_collection_brochure_respects_explicit_no_sample(catalog_intent_session):
    payload = {
        "source_document": {"collection_code": "CSG", "file_name": "CooperSlateGray_0226.pdf"},
        "collection": {
            "display_name": "Cooper Slate Gray",
            "brand_label": "Port & Bell",
            "line_name": "Cooper",
            "category_l1": "Kitchen Cabinets",
            "product_family": "Cabinets",
        },
        "availability": {"modes": [{"code": "grab_and_go", "label": "Grab & Go"}]},
        "sample_products": [],
    }

    result = seed_collection_brochure(catalog_intent_session, payload, channel_code="shopify", connection_id=11)
    assert result["collection_commerce_profile"]["sample_master_sku"] is None

    registry = catalog_intent_session.query(MasterCollectionRegistry).filter_by(code="CSG").one()
    profile = (
        catalog_intent_session.query(CollectionCommerceProfile)
        .filter_by(collection_registry_id=registry.id, channel_code="shopify", connection_id=11)
        .one()
    )
    assert profile.sample_master_sku is None
