"""Tests for the remove_peer use case.""" from neotalk.core.entities.peer import Peer from neotalk.core.entities.responses import ResponseTypes from neotalk.core.use_cases.roster.remove_peer import remove_peer_use_case def _peer(peer_id: str) -> Peer: return Peer(peer_id, peer_id, "host", 1, b"k", 0.0) def test_remove_peer_drops_the_peer(): # Given a roster with two peers roster = {"a": _peer("a"), "b": _peer("b")} # When one says goodbye response = remove_peer_use_case(roster, "a") # Then only the other remains assert response["type"] == ResponseTypes.SUCCESS assert set(response["data"]["roster"]) == {"b"} def test_remove_unknown_peer_is_a_parameters_error(): # Given a roster without the peer roster = {"a": _peer("a")} # When removing an unknown id response = remove_peer_use_case(roster, "ghost") # Then it is a parameters error assert response["type"] == ResponseTypes.PARAMETERS_ERROR