AURORA-1098: датавремя этапа сохраняется верно с часовым поясом

This commit is contained in:
tsygankoviva 2026-06-18 11:51:26 +03:00
parent d292b2fbb0
commit 18930e72e1
2 changed files with 28 additions and 8 deletions

View File

@ -402,15 +402,15 @@ class FormPhaseCreate(BaseModel):
phase_code: str
role: FormPhaseRole
column_keys: list[str]
opens_at: datetime
closes_at: datetime
opens_at: date
closes_at: date
class FormPhaseUpdate(BaseModel):
role: FormPhaseRole | None = None
column_keys: list[str] | None = None
opens_at: datetime | None = None
closes_at: datetime | None = None
opens_at: date | None = None
closes_at: date | None = None
class AuditLogBase(BaseModel):

View File

@ -1,3 +1,5 @@
from datetime import UTC, datetime
import pytest
@ -83,20 +85,29 @@ def test_form_phases_delete_forbidden(client, isp_tokens):
def test_form_phases_create(client, admin_tokens):
opened_at = "2026-01-01T00:00:00+03:00"
closed_at = "2026-12-31T00:00:00+03:00"
body = {
"budget_form_id": 1,
"sheet": "AHR",
"phase_code": "new_phase",
"role": "DFIP",
"column_keys": ["plan.q1"],
"opens_at": "2026-01-01T00:00:00Z",
"closes_at": "2026-12-31T00:00:00Z",
"opens_at": opened_at[:10],
"closes_at": closed_at[:10],
}
response = client.post(
"/api/v1/stages/form/1",
json=body,
headers=_auth_headers(admin_tokens),
)
body["opens_at"] = str(
datetime.fromisoformat(opened_at).astimezone(UTC)
).replace('+00:00', 'Z').replace(" ", "T")
body["closes_at"] = str(
datetime.fromisoformat(closed_at).astimezone(UTC)
).replace('+00:00', 'Z').replace(" ", "T")
assert response.status_code == 200
payload = response.json()
assert "success" in payload
@ -107,20 +118,29 @@ def test_form_phases_create(client, admin_tokens):
def test_form_phases_update(client, admin_tokens):
opened_at = "2026-01-01T00:00:00+03:00"
closed_at = "2026-12-31T00:00:00+03:00"
body = {
"budget_form_id": 1,
"sheet": "AHR",
"phase_code": "test",
"role": "EXECUTOR_RF",
"column_keys": ["plan.q1"],
"opens_at": "2026-01-01T00:00:00Z",
"closes_at": "2026-12-31T00:00:00Z",
"opens_at": opened_at,
"closes_at": closed_at,
}
response = client.patch(
"/api/v1/stages/form/1/AHR/test",
json=body,
headers=_auth_headers(admin_tokens),
)
body["opens_at"] = str(
datetime.fromisoformat(opened_at).astimezone(UTC)
).replace('+00:00', 'Z').replace(" ", "T")
body["closes_at"] = str(
datetime.fromisoformat(closed_at).astimezone(UTC)
).replace('+00:00', 'Z').replace(" ", "T")
assert response.status_code == 200
payload = response.json()