import orjson from zerver.lib.narrow_helpers import NarrowTerm from zerver.lib.test_classes import ZulipTestCase from zerver.lib.url_decoding import is_same_server_message_link, parse_narrow_url class URLDecodeTest(ZulipTestCase): def test_is_same_server_message_link(self) -> None: tests = orjson.loads(self.fixture_data("message_link_test_cases.json")) for test in tests: self.assertEqual( is_same_server_message_link(test["message_link"]), test["expected_output"] ) class NarrowURLDecodeTest(ZulipTestCase): def test_decode_narrow_url(self) -> None: tests = orjson.loads(self.fixture_data("narrow_url_to_narrow_terms.json")) for test_case in tests: with self.subTest(name=test_case["name"]): parsed_terms = parse_narrow_url(test_case["near_link"]) expected_output = test_case.get("expected_output") if expected_output is None: self.assertEqual(parsed_terms, expected_output) else: assert parsed_terms is not None expected_narrow_terms: list[NarrowTerm] = [ NarrowTerm(**term) for term in expected_output ] self.assertListEqual(parsed_terms, expected_narrow_terms)