def test_diff_new_and_cleared_and_rearm(): from app.trade_alerts import diff_firing reported = [{"ticker": "005930", "kind": "buy", "condition": "buy_breakout", "price": 71500, "detail": {}}] # 최초: prev 비어있음 → 신규 d1 = diff_firing(reported, prev=set()) assert [a["condition"] for a in d1["new"]] == ["buy_breakout"] assert d1["cleared"] == [] # 유지: prev에 이미 있음 → 신규 없음 prev = {("005930", "buy", "buy_breakout")} d2 = diff_firing(reported, prev=prev) assert d2["new"] == [] # 해제: reported 비었고 prev에 있음 → cleared d3 = diff_firing([], prev=prev) assert d3["cleared"] == [("005930", "buy", "buy_breakout")] # 재무장 후 재발화: prev 다시 비면 신규 d4 = diff_firing(reported, prev=set()) assert len(d4["new"]) == 1