Coverage for tests / unit / enums / test_output_format.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-04-03 18:53 +0000

1"""Tests for lintro.enums.output_format module.""" 

2 

3from __future__ import annotations 

4 

5import pytest 

6from assertpy import assert_that 

7 

8from lintro.enums.output_format import OutputFormat, normalize_output_format 

9 

10 

11@pytest.mark.parametrize( 

12 ("member", "expected"), 

13 [ 

14 (OutputFormat.PLAIN, "plain"), 

15 (OutputFormat.GRID, "grid"), 

16 (OutputFormat.MARKDOWN, "markdown"), 

17 (OutputFormat.HTML, "html"), 

18 (OutputFormat.JSON, "json"), 

19 (OutputFormat.CSV, "csv"), 

20 ], 

21) 

22def test_output_format_values(member: OutputFormat, expected: str) -> None: 

23 """OutputFormat members have correct lowercase string values. 

24 

25 Args: 

26 member: The OutputFormat enum member to test. 

27 expected: The expected string value. 

28 """ 

29 assert_that(member.value).is_equal_to(expected) 

30 

31 

32def test_output_format_is_str_enum() -> None: 

33 """OutputFormat members are string instances.""" 

34 assert_that(OutputFormat.GRID).is_instance_of(str) 

35 

36 

37def test_normalize_output_format_from_string() -> None: 

38 """normalize_output_format converts string to OutputFormat.""" 

39 assert_that(normalize_output_format("json")).is_equal_to(OutputFormat.JSON) 

40 

41 

42def test_normalize_output_format_case_insensitive() -> None: 

43 """normalize_output_format is case-insensitive.""" 

44 assert_that(normalize_output_format("JSON")).is_equal_to(OutputFormat.JSON) 

45 assert_that(normalize_output_format("Json")).is_equal_to(OutputFormat.JSON) 

46 

47 

48def test_normalize_output_format_passthrough() -> None: 

49 """normalize_output_format returns OutputFormat unchanged.""" 

50 assert_that(normalize_output_format(OutputFormat.JSON)).is_equal_to( 

51 OutputFormat.JSON, 

52 ) 

53 

54 

55def test_normalize_output_format_invalid_defaults_to_grid() -> None: 

56 """normalize_output_format defaults to GRID for invalid values.""" 

57 assert_that(normalize_output_format("invalid")).is_equal_to(OutputFormat.GRID) 

58 

59 

60def test_normalize_output_format_none_defaults_to_grid() -> None: 

61 """normalize_output_format defaults to GRID for None.""" 

62 # None has no .upper() method, triggers AttributeError 

63 assert_that(normalize_output_format(None)).is_equal_to(OutputFormat.GRID) # type: ignore[arg-type]