26 lines
785 B
Python
26 lines
785 B
Python
import pytest
|
|
|
|
from app.crud.crm.contract import (
|
|
CONTRACT_EDITABLE_STATUSES,
|
|
CONTRACT_NON_EDITABLE_STATUSES,
|
|
assert_contract_editable_for_update,
|
|
)
|
|
|
|
|
|
def test_editable_statuses():
|
|
assert CONTRACT_NON_EDITABLE_STATUSES == frozenset({"finished"})
|
|
assert CONTRACT_EDITABLE_STATUSES == frozenset(
|
|
{"draft", "approving", "approved", "executing", "invalid"}
|
|
)
|
|
assert "finished" not in CONTRACT_EDITABLE_STATUSES
|
|
|
|
|
|
def test_assert_allows_editable():
|
|
for s in ("draft", "approving", "approved", "executing", "invalid", None, ""):
|
|
assert_contract_editable_for_update(s)
|
|
|
|
|
|
def test_assert_rejects_non_editable():
|
|
with pytest.raises(ValueError, match="已完成的合同不能修改"):
|
|
assert_contract_editable_for_update("finished")
|