from db.collection_filter_cleanup import cleanup_polluted_collection_filter_profiles
from db.models import MasterCollectionRegistry, MasterProduct


def test_cleanup_polluted_collection_filter_profiles_removes_suffix_only_aliases(catalog_intent_session):
    session = catalog_intent_session
    session.add(
        MasterProduct(
            sku="ASG-B12",
            name="Base",
            category_l1="Kitchen Cabinets",
            collection="Anna Stone Gray",
            row_hash="h1",
            is_active=True,
        )
    )
    polluted = MasterCollectionRegistry(
        code="stone-gray",
        name="Stone Gray",
        path_slug="kitchen-cabinets/stone-gray",
        aliases={
            "filter_attributes": {"color": "Grey"},
            "brochure_filter_attributes": {"color": "Grey"},
        },
        is_active=True,
    )
    valid = MasterCollectionRegistry(
        code="anna-stone-gray",
        name="Anna Stone Gray",
        path_slug="kitchen-cabinets/anna-stone-gray",
        aliases={
            "filter_attributes": {"color": "Grey"},
        },
        is_active=True,
    )
    session.add_all([polluted, valid])
    session.commit()

    result = cleanup_polluted_collection_filter_profiles(session, dry_run=False)
    session.commit()
    session.refresh(polluted)
    session.refresh(valid)

    assert result["updated"] == 1
    assert "filter_attributes" not in (polluted.aliases or {})
    assert "brochure_filter_attributes" not in (polluted.aliases or {})
    assert valid.aliases["filter_attributes"]["color"] == "Grey"
