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
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Tests for the formatting utilities module.
3This module contains tests for the formatting utility functions in Lintro.
4"""
6from unittest.mock import mock_open, patch
8import pytest
9from assertpy import assert_that
11from lintro.utils.formatting import read_ascii_art
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"])
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([])
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()