@@ -0,0 +1,63 @@
|
||||
"""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()
|
||||
Reference in New Issue
Block a user