From ee05ad2f2867eb69e33631b576133149747b6232 Mon Sep 17 00:00:00 2001 From: Abhimanyu Saharan Date: Sun, 15 Feb 2026 06:08:25 +0000 Subject: [PATCH] test: cover GitHub PR URL parsing --- backend/tests/test_github_client.py | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 backend/tests/test_github_client.py diff --git a/backend/tests/test_github_client.py b/backend/tests/test_github_client.py new file mode 100644 index 00000000..a642e442 --- /dev/null +++ b/backend/tests/test_github_client.py @@ -0,0 +1,40 @@ +from __future__ import annotations + +from app.services.github.client import parse_pull_request_url + + +def test_parse_pull_request_url_empty_is_none() -> None: + assert parse_pull_request_url("") is None + assert parse_pull_request_url(" ") is None + + +def test_parse_pull_request_url_non_github_is_none() -> None: + assert parse_pull_request_url("https://example.com/a/b/pull/1") is None + assert parse_pull_request_url("https://github.com/a/b/issues/1") is None + + +def test_parse_pull_request_url_valid_https_returns_canonical() -> None: + pr = parse_pull_request_url("https://github.com/acme/widgets/pull/123") + assert pr is not None + assert pr.owner == "acme" + assert pr.repo == "widgets" + assert pr.number == 123 + assert pr.url == "https://github.com/acme/widgets/pull/123" + + +def test_parse_pull_request_url_http_normalizes_to_canonical() -> None: + pr = parse_pull_request_url("http://github.com/acme/widgets/pull/123") + assert pr is not None + assert pr.url == "https://github.com/acme/widgets/pull/123" + + +def test_parse_pull_request_url_invalid_number_is_none() -> None: + assert parse_pull_request_url("https://github.com/acme/widgets/pull/0") is None + assert parse_pull_request_url("https://github.com/acme/widgets/pull/-1") is None + assert parse_pull_request_url("https://github.com/acme/widgets/pull/not-a-number") is None + + +def test_parse_pull_request_url_extra_segments_still_parses() -> None: + pr = parse_pull_request_url("https://github.com/acme/widgets/pull/123/files") + assert pr is not None + assert pr.url == "https://github.com/acme/widgets/pull/123"