"""Defensive dedupe for recommendation payloads.""" from __future__ import annotations from backend.recommendations import _take_unique_kink_items def test_take_unique_kink_items_first_wins_and_respects_limit(): a = {"kink": {"id": "x", "name": "A"}, "score": 1.0} b = {"kink": {"id": "y", "name": "B"}, "score": 0.9} c = {"kink": {"id": "x", "name": "A-dup"}, "score": 0.8} out = _take_unique_kink_items([a, b, c], limit=10, excluded_ids=set()) assert [i["kink"]["id"] for i in out] == ["x", "y"] assert out[0]["score"] == 1.0 def test_take_unique_excludes_played(): a = {"kink": {"id": "p", "name": "Played"}, "score": 1.0} b = {"kink": {"id": "q", "name": "New"}, "score": 0.5} out = _take_unique_kink_items([a, b], limit=5, excluded_ids={"p"}) assert [i["kink"]["id"] for i in out] == ["q"]