test: cover GitHub PR URL parsing

This commit is contained in:
Abhimanyu Saharan
2026-02-15 06:08:25 +00:00
parent d44bbedf0e
commit ee05ad2f28

View File

@@ -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"