mirror of
https://github.com/zulip/zulip.git
synced 2025-10-27 01:53:59 +00:00
This adds the Python copy of `hash_util.parse_narrow`. In the web app, it will mainly be used in the import process later on. So, although it has the same purpose as its frontend twin, there are differences: - This doesn't convert a user-id-slug into a list of user emails. It will instead parse it into a list of user IDs, as that is the preferred form for those kinds of operators. It will also help in later operations to remap the object IDs during import. - To the same effect as the first point, operands can be an actual list or int instead of a list or int as a string (e.g., "12,14,15" or "93"). - It has fewer validations than its frontend counterpart. It doesn't look up the parsed object IDs for validity. This is partly because of its main use case in import.
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
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)
|