refactor(status): introduce OrderStatus enum, replace string literals
Centralized order status values in api/app/constants.py via a str-valued Enum so comparisons keep working. Replaced literals in: - services: sync_service, sqlite_service, retry_service - routers: sync, dashboard - templates: dashboard.html, logs.html - static JS: shared (ORDER_STATUS mirror), dashboard, logs - tests: requirements, order_items_overwrite, business_rules MALFORMED intentionally NOT added — introduced in follow-up PR2 (per-order failure isolation). Full test suite: 231 unit + 33 e2e pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,7 @@ from unittest.mock import MagicMock, patch
|
||||
|
||||
from app.services.import_service import build_articles_json, compute_discount_split
|
||||
from app.services.order_reader import OrderData, OrderItem
|
||||
from app.constants import OrderStatus
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -857,14 +858,14 @@ class TestRefreshOrderAddress:
|
||||
|
||||
def test_null_address_ids_returns_422(self, client, db):
|
||||
"""Orders without Oracle address IDs return 422."""
|
||||
db.execute("INSERT OR IGNORE INTO orders (order_number, status) VALUES ('test-no-addr', 'IMPORTED')")
|
||||
db.execute(f"INSERT OR IGNORE INTO orders (order_number, status) VALUES ('test-no-addr', '{OrderStatus.IMPORTED.value}')")
|
||||
db.commit()
|
||||
res = client.post("/api/orders/test-no-addr/refresh-address")
|
||||
assert res.status_code == 422
|
||||
|
||||
def test_oracle_unavailable_returns_503(self, client, db, monkeypatch):
|
||||
"""Oracle connection failure returns 503."""
|
||||
db.execute("INSERT OR IGNORE INTO orders (order_number, status, id_adresa_livrare) VALUES ('test-oracle-fail', 'IMPORTED', 4116)")
|
||||
db.execute(f"INSERT OR IGNORE INTO orders (order_number, status, id_adresa_livrare) VALUES ('test-oracle-fail', '{OrderStatus.IMPORTED.value}', 4116)")
|
||||
db.commit()
|
||||
|
||||
import asyncio as _asyncio
|
||||
@@ -878,7 +879,7 @@ class TestRefreshOrderAddress:
|
||||
|
||||
def test_refresh_returns_8_fields(self, client, db, monkeypatch):
|
||||
"""Successful refresh returns 8-field address dict."""
|
||||
db.execute("INSERT OR IGNORE INTO orders (order_number, status, id_adresa_livrare) VALUES ('test-refresh-ok', 'IMPORTED', 4116)")
|
||||
db.execute(f"INSERT OR IGNORE INTO orders (order_number, status, id_adresa_livrare) VALUES ('test-refresh-ok', '{OrderStatus.IMPORTED.value}', 4116)")
|
||||
db.commit()
|
||||
|
||||
mock_result = (
|
||||
@@ -908,7 +909,7 @@ class TestRefreshOrderAddress:
|
||||
from unittest.mock import AsyncMock # noqa: E402 (already imported MagicMock/patch above)
|
||||
|
||||
|
||||
def _make_order_detail(status='IMPORTED', id_comanda=12345, factura_numar=None):
|
||||
def _make_order_detail(status=OrderStatus.IMPORTED.value, id_comanda=12345, factura_numar=None):
|
||||
return {
|
||||
"order": {
|
||||
"order_number": "1001",
|
||||
@@ -983,7 +984,7 @@ class TestResyncDeleteSafetyGates:
|
||||
from app.services import retry_service
|
||||
|
||||
with patch('app.services.sqlite_service.get_order_detail',
|
||||
new=AsyncMock(return_value=_make_order_detail(status='ERROR'))), \
|
||||
new=AsyncMock(return_value=_make_order_detail(status=OrderStatus.ERROR.value))), \
|
||||
patch('app.services.sync_service._sync_lock', new=_unlocked_lock()):
|
||||
result = await retry_service.resync_single_order("1001", {})
|
||||
|
||||
@@ -1051,7 +1052,7 @@ class TestResyncDeleteHappyPaths:
|
||||
from app.services import retry_service
|
||||
|
||||
with patch('app.services.sqlite_service.get_order_detail',
|
||||
new=AsyncMock(return_value=_make_order_detail(status='DELETED_IN_ROA'))), \
|
||||
new=AsyncMock(return_value=_make_order_detail(status=OrderStatus.DELETED_IN_ROA.value))), \
|
||||
patch('app.services.sync_service._sync_lock', new=_unlocked_lock()), \
|
||||
patch('app.services.retry_service._download_and_reimport',
|
||||
new=AsyncMock(return_value={"success": True, "message": "ok"})):
|
||||
|
||||
Reference in New Issue
Block a user