Files
temp/features/steps/action_cli_additional_coverage_steps.py
T

59 lines
2.1 KiB
Python

"""Step definitions for additional action CLI coverage."""
from __future__ import annotations
from types import SimpleNamespace
from unittest.mock import MagicMock, patch
from behave import given, then, when
from cleveragents.application.services.plan_lifecycle_service import (
PlanLifecycleService,
)
from cleveragents.cli.commands.action import _get_lifecycle_service
@given("a mocked container settings for action lifecycle")
def step_mock_container_settings(context) -> None:
"""Mock container settings to resolve lifecycle service."""
context.settings = MagicMock()
container = SimpleNamespace(settings=MagicMock(return_value=context.settings))
patcher = patch(
"cleveragents.cli.commands.action.get_container",
return_value=container,
)
patcher.start()
context.container_patcher = patcher
if not hasattr(context, "_cleanup_handlers"):
context._cleanup_handlers = []
context._cleanup_handlers.append(patcher.stop)
@when("I resolve the action lifecycle service")
def step_resolve_lifecycle_service(context) -> None:
"""Call the lifecycle service helper."""
context.lifecycle_service = _get_lifecycle_service()
@when("I resolve the action lifecycle service twice")
def step_resolve_lifecycle_service_twice(context) -> None:
"""Call the lifecycle service helper twice."""
context.lifecycle_services = [_get_lifecycle_service(), _get_lifecycle_service()]
@then("the lifecycle service should use container settings")
def step_assert_lifecycle_service_settings(context) -> None:
"""Verify the lifecycle service uses the mocked settings."""
services = getattr(context, "lifecycle_services", None)
if services is None:
services = [context.lifecycle_service]
for service in services:
assert isinstance(service, PlanLifecycleService)
assert service.settings is context.settings
@then("the lifecycle service instances should be distinct")
def step_assert_lifecycle_service_distinct(context) -> None:
"""Verify each lifecycle service instance is unique."""
assert context.lifecycle_services[0] is not context.lifecycle_services[1]