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

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) 

8 

9 

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 

14 

15 

16def test_parse_query_params() -> None: 

17 url = "https://localhost:8000/?packages=duckdb&packages=pandas&time_range=1month" 

18 result = parse_query_params(url) 

19 

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 

27 

28 

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 

37 

38 

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 

45 

46 

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

57 

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