79
tests/test_generator.py
Normal file
79
tests/test_generator.py
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
"""Tests for interactive cron generator."""
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from unittest.mock import patch, MagicMock
|
||||||
|
from cronparse.generator import (
|
||||||
|
prompt_specific_values,
|
||||||
|
prompt_specific_dow_values,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class TestPromptSpecificValues:
|
||||||
|
"""Tests for prompt_specific_values function."""
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_done_immediately(self, mock_click):
|
||||||
|
"""Test that entering 'done' immediately uses default value."""
|
||||||
|
mock_click.prompt.side_effect = ["done"]
|
||||||
|
result = prompt_specific_values("test", 1, 10)
|
||||||
|
assert result == [1]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_single_value(self, mock_click):
|
||||||
|
"""Test entering a single specific value."""
|
||||||
|
mock_click.prompt.side_effect = ["5", "done"]
|
||||||
|
result = prompt_specific_values("test", 1, 10)
|
||||||
|
assert result == [5]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_multiple_values(self, mock_click):
|
||||||
|
"""Test entering multiple specific values."""
|
||||||
|
mock_click.prompt.side_effect = ["3", "7", "9", "done"]
|
||||||
|
result = prompt_specific_values("test", 1, 10)
|
||||||
|
assert result == [3, 7, 9]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_duplicate_value_not_added(self, mock_click):
|
||||||
|
"""Test that duplicate values are not added."""
|
||||||
|
mock_click.prompt.side_effect = ["5", "5", "done"]
|
||||||
|
result = prompt_specific_values("test", 1, 10)
|
||||||
|
assert result == [5]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_invalid_value_shows_error(self, mock_click):
|
||||||
|
"""Test that invalid values show error and continue."""
|
||||||
|
mock_click.prompt.side_effect = ["invalid", "5", "done"]
|
||||||
|
result = prompt_specific_values("test", 1, 10)
|
||||||
|
assert result == [5]
|
||||||
|
|
||||||
|
|
||||||
|
class TestPromptSpecificDowValues:
|
||||||
|
"""Tests for prompt_specific_dow_values function."""
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_done_immediately(self, mock_click):
|
||||||
|
"""Test that entering 'done' immediately uses default (0=Sunday)."""
|
||||||
|
mock_click.prompt.side_effect = ["done"]
|
||||||
|
result = prompt_specific_dow_values()
|
||||||
|
assert result == [0]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_single_day(self, mock_click):
|
||||||
|
"""Test entering a single day of week."""
|
||||||
|
mock_click.prompt.side_effect = ["1", "done"]
|
||||||
|
result = prompt_specific_dow_values()
|
||||||
|
assert result == [1]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_enter_multiple_days(self, mock_click):
|
||||||
|
"""Test entering multiple days of week."""
|
||||||
|
mock_click.prompt.side_effect = ["1", "3", "5", "done"]
|
||||||
|
result = prompt_specific_dow_values()
|
||||||
|
assert result == [1, 3, 5]
|
||||||
|
|
||||||
|
@patch("cronparse.generator.click")
|
||||||
|
def test_invalid_day_shows_error(self, mock_click):
|
||||||
|
"""Test that invalid day shows error."""
|
||||||
|
mock_click.prompt.side_effect = ["7", "1", "done"]
|
||||||
|
result = prompt_specific_dow_values()
|
||||||
|
assert result == [1]
|
||||||
Reference in New Issue
Block a user