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

Closed
tsygankoviva wants to merge 1 commits from AURORA-1098 into test
2 changed files with 28 additions and 8 deletions

View File

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

View File

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