|
2 | 2 | from unittest.mock import ANY, Mock, call, patch |
3 | 3 | from zoneinfo import ZoneInfo |
4 | 4 |
|
| 5 | +import pytest |
5 | 6 | from click.testing import CliRunner |
6 | 7 | from freezegun import freeze_time |
7 | 8 | from lightman_ai import cli |
@@ -57,6 +58,37 @@ def test_arguments(self, m_prompt: Mock, m_config: Mock, m_lightman: Mock, m_loa |
57 | 58 | assert m_prompt.call_args == call(path="prompt file") |
58 | 59 | assert m_load_dotenv.call_args == call(".env") # Default env file |
59 | 60 |
|
| 61 | + @pytest.mark.parametrize( |
| 62 | + ("field1", "field2", "field3"), |
| 63 | + [ |
| 64 | + ("--today", "--yesterday", ""), |
| 65 | + ("--today", "--start-date", "2025-07-29"), |
| 66 | + ("--yesterday", "--start-date", "2025-07-29"), |
| 67 | + ], |
| 68 | + ) |
| 69 | + @patch("lightman_ai.cli.lightman") |
| 70 | + def test_today_yesterday_start_date_mutualle_exlusive( |
| 71 | + self, |
| 72 | + m_lightman: Mock, |
| 73 | + field1: str, |
| 74 | + field2: str, |
| 75 | + field3: str, |
| 76 | + ) -> None: |
| 77 | + runner = CliRunner() |
| 78 | + |
| 79 | + args = [field1, field2] |
| 80 | + if field3: |
| 81 | + args.append(field3) |
| 82 | + with patch_config_file(): |
| 83 | + result = runner.invoke( |
| 84 | + cli.run, |
| 85 | + args, |
| 86 | + ) |
| 87 | + |
| 88 | + assert result.exit_code == 2 |
| 89 | + assert "--today, --yesterday and --start-date are mutually exclusive. Set one at a time." in result.output |
| 90 | + assert m_lightman.call_count == 0 |
| 91 | + |
60 | 92 | @patch("lightman_ai.cli.load_dotenv") |
61 | 93 | @patch("lightman_ai.cli.lightman") |
62 | 94 | @patch("lightman_ai.cli.FileConfig.get_config_from_file") |
|
0 commit comments