Initial public ModelForge release
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import pytest
|
||||
|
||||
from modelforge_api.domain.enums import (
|
||||
MigrationStatus,
|
||||
ModelLifecycle,
|
||||
UpgradeClass,
|
||||
VerificationStatus,
|
||||
)
|
||||
from modelforge_api.domain.lifecycle import (
|
||||
InvalidTransition,
|
||||
assert_model_transition,
|
||||
assert_promotion_allowed,
|
||||
)
|
||||
|
||||
|
||||
def test_model_lifecycle_allows_only_declared_transition() -> None:
|
||||
assert_model_transition(ModelLifecycle.DISCOVERED, ModelLifecycle.CANDIDATE)
|
||||
with pytest.raises(InvalidTransition):
|
||||
assert_model_transition(ModelLifecycle.DISCOVERED, ModelLifecycle.ACTIVE)
|
||||
|
||||
|
||||
def test_stable_promotion_requires_complete_evidence() -> None:
|
||||
with pytest.raises(InvalidTransition, match="benchmark"):
|
||||
assert_promotion_allowed(
|
||||
upgrade_class=UpgradeClass.BEHAVIORAL,
|
||||
verification_status=VerificationStatus.VERIFIED,
|
||||
local_benchmark_ids=[],
|
||||
project_benchmark_ids=[],
|
||||
operator_approval_id="approval",
|
||||
rollback_deployment_id="old",
|
||||
)
|
||||
|
||||
|
||||
def test_reindex_promotion_requires_ready_migration() -> None:
|
||||
kwargs = {
|
||||
"upgrade_class": UpgradeClass.REQUIRES_REINDEX,
|
||||
"verification_status": VerificationStatus.VERIFIED,
|
||||
"local_benchmark_ids": ["local"],
|
||||
"project_benchmark_ids": ["project"],
|
||||
"operator_approval_id": "approval",
|
||||
"rollback_deployment_id": "old",
|
||||
}
|
||||
with pytest.raises(InvalidTransition, match="migration"):
|
||||
assert_promotion_allowed(**kwargs, migration_status=MigrationStatus.BACKFILLING)
|
||||
assert_promotion_allowed(**kwargs, migration_status=MigrationStatus.READY)
|
||||
Reference in New Issue
Block a user