78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
"""Step definitions for main module feature tests."""
|
|
|
|
import importlib
|
|
from unittest.mock import patch
|
|
|
|
from behave import given, then, when
|
|
|
|
|
|
@given("the CLI main function will return {code:d}")
|
|
def step_mock_main_return(context, code):
|
|
"""Mock the CLI main function to return a specific code."""
|
|
context.mock_main_return = code
|
|
|
|
|
|
@when("I call the run function")
|
|
def step_call_run_function(context):
|
|
"""Call the run function."""
|
|
with patch("cleveragents.__main__.main") as mock_main:
|
|
mock_main.return_value = context.mock_main_return
|
|
from cleveragents.__main__ import run
|
|
|
|
context.run_result = run()
|
|
|
|
|
|
@then("the run function should return {code:d}")
|
|
def step_check_run_return(context, code):
|
|
"""Check the run function return value."""
|
|
assert context.run_result == code
|
|
|
|
|
|
@given("the CLI main function will raise an exception")
|
|
def step_mock_main_exception(context):
|
|
"""Mock the CLI main function to raise an exception."""
|
|
context.mock_main_exception = Exception("Test error")
|
|
|
|
|
|
@when("I call the run function expecting an exception")
|
|
def step_call_run_with_exception(context):
|
|
"""Call the run function expecting an exception."""
|
|
context.exception_raised = False
|
|
with patch("cleveragents.__main__.main") as mock_main:
|
|
mock_main.side_effect = context.mock_main_exception
|
|
from cleveragents.__main__ import run
|
|
|
|
try:
|
|
run()
|
|
except Exception as e:
|
|
context.exception_raised = True
|
|
context.raised_exception = e
|
|
|
|
|
|
@then("an exception should be raised")
|
|
def step_check_exception_raised(context):
|
|
"""Check that an exception was raised."""
|
|
assert context.exception_raised, "Expected exception was not raised"
|
|
assert str(context.raised_exception) == "Test error"
|
|
|
|
|
|
@when("I import the __main__ module")
|
|
def step_import_main_module(context):
|
|
"""Import the __main__ module."""
|
|
context.main_module = importlib.import_module("cleveragents.__main__")
|
|
|
|
|
|
@then('the module should have a "{attribute}" attribute')
|
|
def step_check_module_attribute(context, attribute):
|
|
"""Check that the module has a specific attribute."""
|
|
assert hasattr(context.main_module, attribute), (
|
|
f"Module missing {attribute} attribute"
|
|
)
|
|
|
|
|
|
@then('the "{attribute}" attribute should be callable')
|
|
def step_check_attribute_callable(context, attribute):
|
|
"""Check that an attribute is callable."""
|
|
attr = getattr(context.main_module, attribute)
|
|
assert callable(attr), f"{attribute} is not callable"
|