Coverage for tests / utils / test_formatting.py: 100%

22 statements  

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

1"""Tests for the formatting utilities module. 

2 

3This module contains tests for the formatting utility functions in Lintro. 

4""" 

5 

6from unittest.mock import mock_open, patch 

7 

8import pytest 

9from assertpy import assert_that 

10 

11from lintro.utils.formatting import read_ascii_art 

12 

13 

14@pytest.mark.utils 

15def test_read_ascii_art() -> None: 

16 """Test reading ASCII art from file.""" 

17 mock_content = "line1\nline2\nline3\n" 

18 with ( 

19 patch("builtins.open", mock_open(read_data=mock_content)), 

20 patch("pathlib.Path.open", mock_open(read_data=mock_content)), 

21 ): 

22 result = read_ascii_art("test.txt") 

23 assert_that(result).is_equal_to(["line1", "line2", "line3"]) 

24 

25 

26@pytest.mark.utils 

27def test_read_ascii_art_file_not_found() -> None: 

28 """Test reading ASCII art when file doesn't exist.""" 

29 result = read_ascii_art("nonexistent.txt") 

30 assert_that(result).is_equal_to([]) 

31 

32 

33@pytest.mark.utils 

34def test_read_ascii_art_with_sections() -> None: 

35 """Test reading ASCII art file with multiple sections.""" 

36 mock_content = "section1_line1\nsection1_line2\n\nsection2_line1\nsection2_line2\n" 

37 with ( 

38 patch("builtins.open", mock_open(read_data=mock_content)), 

39 patch("pathlib.Path.open", mock_open(read_data=mock_content)), 

40 patch("secrets.choice") as mock_choice, 

41 ): 

42 mock_choice.return_value = ["section1_line1", "section1_line2"] 

43 result = read_ascii_art("test.txt") 

44 assert_that(result).is_equal_to(["section1_line1", "section1_line2"]) 

45 mock_choice.assert_called_once()