Coverage for app/tests/test_utils.py: 100%
27 statements
« prev ^ index » next coverage.py v7.6.10, created at 2026-06-04 22:29 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2026-06-04 22:29 +0000
1from app.models import QueryParams, TimeRange
2from app.utils import (
3 extract_last_script_tag,
4 generate_hx_push_url,
5 parse_query_params,
6 start_of_week,
7)
10def test_start_of_week() -> None:
11 result = start_of_week("2024-12-06")
12 expected_result = "2024-12-02"
13 assert result == expected_result
16def test_parse_query_params() -> None:
17 url = "https://localhost:8000/?packages=duckdb&packages=pandas&time_range=1month"
18 result = parse_query_params(url)
20 expected_result = QueryParams(
21 packages=["duckdb", "pandas"],
22 time_range=TimeRange(value="1month"),
23 show_percentage=None,
24 )
25 assert result.packages == expected_result.packages
26 assert result.time_range.value == expected_result.time_range.value
29def test_generate_hx_push_url_packages() -> None:
30 result = generate_hx_push_url(
31 QueryParams(
32 packages=["duckdb", "pandas"], time_range=TimeRange(), show_percentage=None
33 )
34 )
35 expected_result = "?packages=duckdb&packages=pandas&time_range=3months"
36 assert result == expected_result
39def test_generate_hx_push_url_no_packages() -> None:
40 result = generate_hx_push_url(
41 QueryParams(packages=[], time_range=TimeRange(), show_percentage=None)
42 )
43 expected_result = "/"
44 assert result == expected_result
47def test_extract_last_script_tag() -> None:
48 html_content = """
49 <html>
50 <script>First script</script>
51 <div>Some content</div>
52 <script>Last script</script>
53 </html>
54 """
55 result = extract_last_script_tag(html_content)
56 assert result == "<script>Last script</script>"
58 html_content_no_script = "<html><div>No script here</div></html>"
59 result_no_script = extract_last_script_tag(html_content_no_script)
60 assert result_no_script is None