Files
site/WESP_REL/tests/test_reports_api.py
T
2026-07-17 12:57:18 +03:00

64 lines
2.0 KiB
Python

"""API /api/reports — фильтр по датам."""
from __future__ import annotations
import unittest
from datetime import datetime, timedelta
from app import create_app, db
from app.models import LoadingReport
from app.services.setup_state import mark_setup_complete
from tests.helpers.zootech_test_helpers import ZootechTestConfig
class ReportsApiTests(unittest.TestCase):
def setUp(self) -> None:
self.app = create_app(ZootechTestConfig)
self.client = self.app.test_client()
self.ctx = self.app.app_context()
self.ctx.push()
db.create_all()
mark_setup_complete(self.app)
self.client.post(
"/api/auth/login",
json={"login": "zootech-test-admin", "password": "zootech-test-secret"},
)
today = datetime.now()
yesterday = today - timedelta(days=1)
old = today - timedelta(days=10)
for rid, start, name in (
("rep-today", today, "Today"),
("rep-yesterday", yesterday, "Yesterday"),
("rep-old", old, "Old"),
):
db.session.add(
LoadingReport(
id=rid,
recipe_id="r-reports",
recipe_name=name,
start_time=start,
dispenser_type="dispenser",
)
)
db.session.commit()
def tearDown(self) -> None:
db.session.remove()
db.drop_all()
self.ctx.pop()
def test_reports_date_filter_excludes_out_of_range(self) -> None:
today_s = datetime.now().strftime("%Y-%m-%d")
resp = self.client.get(f"/api/reports?date_from={today_s}&date_to={today_s}")
self.assertEqual(resp.status_code, 200)
payload = resp.get_json()
self.assertIsInstance(payload, list)
ids = {row["id"] for row in payload}
self.assertIn("rep-today", ids)
self.assertNotIn("rep-old", ids)
if __name__ == "__main__":
unittest.main()