# Copyright (c) 2026 Krzysztof Rudnicki. MIT licence. """Replying to the message that asked, rather than to the room.""" from __future__ import annotations from signal_bot.models import IncomingMessage, parse_envelope from signal_bot.quoting import Quote, quote_of from tests.conftest import envelope def _message( *, source_uuid: str = "uuid-alice", text: str | None = "!cat", timestamp: int = 1719177917717, ) -> IncomingMessage: return IncomingMessage( source_uuid=source_uuid, source_name="Alice", group_id="group.one", text=text, has_sticker=False, is_reaction=False, timestamp=timestamp, ) def test_payload_carries_the_three_keys_v2_send_wants() -> None: assert Quote(17, "uuid-alice", "!cat").payload() == { "quote_timestamp": 17, "quote_author": "uuid-alice", "quote_message": "!cat", } def test_a_real_envelope_can_be_quoted() -> None: """The timestamp used to be parsed away, which made this impossible.""" message = parse_envelope(envelope(text="!cat")) assert message is not None quote = quote_of(message) assert quote == Quote(1719177917717, "uuid-alice", "!cat") def test_a_message_with_no_timestamp_is_not_quoted() -> None: """Answering the room beats sending a payload the container rejects.""" assert quote_of(_message(timestamp=0)) is None def test_a_message_with_no_author_is_not_quoted() -> None: assert quote_of(_message(source_uuid="")) is None def test_a_message_with_no_text_quotes_an_empty_body() -> None: """An image with no caption is still a message worth pointing at.""" quote = quote_of(_message(text=None)) assert quote is not None assert quote.text == ""