bot testing: Allow check_expected_responses to take Sequence[Tuple].

Ordered data is required for logical testing of stateful bots, as
compared to the previous use of a dict.
This commit is contained in:
neiljp (Neil Pilgrim) 2017-07-27 17:45:56 -07:00 committed by Tim Abbott
parent 3e4d1fc02e
commit 2bd81eaff1

View file

@ -56,12 +56,16 @@ class BotTestCase(TestCase):
email="foo_sender@zulip.com", recipient="foo", subject="foo",
sender_id=0, sender_full_name="Foo Bar", type="all",
state_handler=None):
# type: (Dict[str, Any], str, str, str, str, int, str, str, Optional[StateHandler]) -> None
# type: (Union[Sequence[Tuple[str, Any]], Dict[str, Any]], str, str, str, str, int, str, str, Optional[StateHandler]) -> None
# To test send_message, Any would be a Dict type,
# to test send_reply, Any would be a str type.
if type not in ["private", "stream", "all"]:
logging.exception("check_expected_response expects type to be 'private', 'stream' or 'all'")
for m, r in expectations.items():
if isinstance(expectations, dict):
expected = [(k, v) for k, v in expectations.items()]
else:
expected = expectations
for m, r in expected:
# For calls with send_reply, r is a string (the content of a message),
# so we need to add it to a Dict as the value of 'content'.
# For calls with send_message, r is already a Dict.