"""Unit tests for ExperimentStatus enum.""" from model_manager.utils.models.experiment_status import ExperimentStatus def test_experiment_status_values(): """Test that all expected status values exist.""" assert ExperimentStatus.MAGE_WAITING_PROC == 'MAGE_WAITING_PROC' assert ExperimentStatus.TRAINING_SUCCESS == 'TRAINING_SUCCESS' assert ExperimentStatus.TRAINING_ERROR == 'TRAINING_ERROR' assert ExperimentStatus.MLFLOW_SENT == 'MLFLOW_SENT' assert ExperimentStatus.MLFLOW_SEND_ERROR == 'MLFLOW_SEND_ERROR' assert ExperimentStatus.FILE_DELETED == 'FILE_DELETED' assert ExperimentStatus.FILE_DELETE_ERROR == 'FILE_DELETE_ERROR' def test_experiment_status_count(): """Test that enum has exactly 8 status values.""" assert len(ExperimentStatus) == 8 def test_experiment_status_is_string(): """Test that enum values are strings.""" for status in ExperimentStatus: assert isinstance(status.value, str) assert isinstance(status, str) def test_experiment_status_membership(): """Test membership checks for status values.""" assert 'MAGE_WAITING_PROC' in [s.value for s in ExperimentStatus] assert 'TRAINING_SUCCESS' in [s.value for s in ExperimentStatus] assert 'TRAINING_ERROR' in [s.value for s in ExperimentStatus] assert 'MLFLOW_SENT' in [s.value for s in ExperimentStatus] assert 'MLFLOW_SEND_ERROR' in [s.value for s in ExperimentStatus] assert 'FILE_DELETED' in [s.value for s in ExperimentStatus] assert 'FILE_DELETE_ERROR' in [s.value for s in ExperimentStatus] def test_experiment_status_iteration(): """Test that enum can be iterated.""" statuses = list(ExperimentStatus) assert len(statuses) == 8 assert ExperimentStatus.MAGE_WAITING_PROC in statuses assert ExperimentStatus.TRAINING_SUCCESS in statuses assert ExperimentStatus.TRAINING_ERROR in statuses assert ExperimentStatus.MLFLOW_SENT in statuses assert ExperimentStatus.MLFLOW_SEND_ERROR in statuses assert ExperimentStatus.FILE_DELETED in statuses assert ExperimentStatus.FILE_DELETE_ERROR in statuses def test_experiment_status_comparison(): """Test that enum values can be compared with strings.""" assert ExperimentStatus.MAGE_WAITING_PROC == 'MAGE_WAITING_PROC' assert ExperimentStatus.TRAINING_SUCCESS == 'TRAINING_SUCCESS' assert ExperimentStatus.TRAINING_ERROR != 'TRAINING_SUCCESS' def test_experiment_status_access_by_name(): """Test accessing enum members by name.""" assert ExperimentStatus['MAGE_WAITING_PROC'] == ExperimentStatus.MAGE_WAITING_PROC assert ExperimentStatus['TRAINING_SUCCESS'] == ExperimentStatus.TRAINING_SUCCESS assert ExperimentStatus['TRAINING_ERROR'] == ExperimentStatus.TRAINING_ERROR assert ExperimentStatus['MLFLOW_SENT'] == ExperimentStatus.MLFLOW_SENT assert ExperimentStatus['MLFLOW_SEND_ERROR'] == ExperimentStatus.MLFLOW_SEND_ERROR assert ExperimentStatus['FILE_DELETED'] == ExperimentStatus.FILE_DELETED assert ExperimentStatus['FILE_DELETE_ERROR'] == ExperimentStatus.FILE_DELETE_ERROR def test_experiment_status_access_by_value(): """Test accessing enum members by value.""" assert ExperimentStatus('MAGE_WAITING_PROC') == ExperimentStatus.MAGE_WAITING_PROC assert ExperimentStatus('TRAINING_SUCCESS') == ExperimentStatus.TRAINING_SUCCESS assert ExperimentStatus('TRAINING_ERROR') == ExperimentStatus.TRAINING_ERROR assert ExperimentStatus('MLFLOW_SENT') == ExperimentStatus.MLFLOW_SENT assert ExperimentStatus('MLFLOW_SEND_ERROR') == ExperimentStatus.MLFLOW_SEND_ERROR assert ExperimentStatus('FILE_DELETED') == ExperimentStatus.FILE_DELETED assert ExperimentStatus('FILE_DELETE_ERROR') == ExperimentStatus.FILE_DELETE_ERROR