"""
|
FSM Test Configuration.
|
|
Ensures proper test isolation for FSM tests.
|
"""
|
|
import logging
|
from copy import deepcopy
|
|
import pytest
|
from django.core.cache import cache
|
from fsm.registry import state_choices_registry, state_model_registry, transition_registry
|
from fsm.state_manager import StateManager
|
|
logger = logging.getLogger(__name__)
|
|
|
@pytest.fixture(autouse=True, scope='function')
|
def fsm_test_isolation():
|
"""
|
Ensure test isolation by:
|
1. Saving and restoring the transition registry
|
2. Clearing CurrentContext and cache
|
|
This prevents test leakage when tests clear the registry for their own purposes.
|
"""
|
from core.current_request import CurrentContext
|
|
# Restore original registry state after test to avoid test pollution
|
original_transitions = deepcopy(transition_registry._transitions)
|
original_state_choices = deepcopy(state_choices_registry._choices)
|
original_state_models = deepcopy(state_model_registry._models)
|
|
yield
|
|
# Clear context and cache after test
|
CurrentContext.clear()
|
cache.clear()
|
StateManager.clear_fsm_cache()
|
transition_registry.clear()
|
state_choices_registry.clear()
|
state_model_registry.clear()
|
|
transition_registry._transitions = original_transitions
|
state_choices_registry._choices = original_state_choices
|
state_model_registry._models = original_state_models
|