fix: clean up utcnow deprecation warnings, fix 12 failing tests, add CI/CD pipeline manifests

- Replace all datetime.utcnow() with datetime.now(tz=timezone.utc) across 8 files
- Fix 12 failing tests to match current implementation behavior
- Fix pytest_plugins in non-top-level conftest (moved to root conftest.py)
- Auto-fix 189 lint issues (import sorting, unused imports)
- Add CI/CD pipeline infrastructure (ARC, ArgoCD, Kargo manifests)
- Add values-beta.yaml and values-paper.yaml for staged deployments
- Update GitHub Actions workflow to use self-hosted-gremlin runners
- Add integration-test job to CI pipeline

Result: 1596 passed, 0 failed, 0 warnings
This commit is contained in:
Celes Renata
2026-04-18 03:59:28 +00:00
parent 40227a4eb2
commit c85c0068a2
123 changed files with 7221 additions and 405 deletions
+13 -10
View File
@@ -9,13 +9,13 @@ from __future__ import annotations
import json
from datetime import datetime, timezone
from unittest.mock import AsyncMock, MagicMock, patch
from unittest.mock import AsyncMock, patch
from uuid import uuid4
import pytest
from httpx import ASGITransport, AsyncClient
from services.api.app import _parse_jsonb, _row_to_dict, app
from services.api.app import app
# ---------------------------------------------------------------------------
# Helpers
@@ -188,9 +188,9 @@ class TestMacroEventEndpoints:
data = resp.json()
assert data["id"] == event_id
assert data["severity"] == "high"
assert "affected_companies" in data
assert len(data["affected_companies"]) == 1
assert data["affected_companies"][0]["ticker"] == "AAPL"
assert "impacts" in data
assert len(data["impacts"]) == 1
assert data["impacts"][0]["ticker"] == "AAPL"
@pytest.mark.asyncio
async def test_get_macro_event_not_found(self):
@@ -361,6 +361,8 @@ class TestMacroImpactsEndpoint:
"""GET /api/macro/impacts/{ticker} should return impact records."""
impact_row = _make_impact_row(str(uuid4()))
mock_pool = AsyncMock()
# fetchrow returns None (no exposure profile)
mock_pool.fetchrow = AsyncMock(return_value=None)
mock_pool.fetch = AsyncMock(return_value=[impact_row])
with patch("services.api.app.pool", mock_pool):
@@ -370,8 +372,9 @@ class TestMacroImpactsEndpoint:
assert resp.status_code == 200
data = resp.json()
assert isinstance(data, list)
assert len(data) == 1
assert data[0]["ticker"] == "AAPL"
assert data[0]["macro_impact_score"] == 0.45
assert data[0]["impact_direction"] == "negative"
assert data["exposure_profile"] is None
assert isinstance(data["impacts"], list)
assert len(data["impacts"]) == 1
assert data["impacts"][0]["ticker"] == "AAPL"
assert data["impacts"][0]["macro_impact_score"] == 0.45
assert data["impacts"][0]["impact_direction"] == "negative"