@@ -0,0 +1,79 @@
|
||||
"""API /api/sklad — CRUD остатков (root sklad.py)."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
import uuid
|
||||
|
||||
from app import create_app, db
|
||||
from app.models import Component
|
||||
from app.services.setup_state import mark_setup_complete
|
||||
from tests.helpers.zootech_test_helpers import ZootechTestConfig
|
||||
|
||||
|
||||
class SkladApiTests(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"},
|
||||
)
|
||||
self.comp_id = str(uuid.uuid4())
|
||||
db.session.add(
|
||||
Component(
|
||||
id=self.comp_id,
|
||||
name="Зерно склад",
|
||||
type="grain",
|
||||
dry_matter=85.0,
|
||||
protein=0.0,
|
||||
energy=0.0,
|
||||
price=0.0,
|
||||
)
|
||||
)
|
||||
db.session.commit()
|
||||
|
||||
def tearDown(self) -> None:
|
||||
db.session.remove()
|
||||
db.drop_all()
|
||||
self.ctx.pop()
|
||||
|
||||
def test_sklad_add_set_move_delete_flow(self) -> None:
|
||||
add = self.client.post("/api/sklad/add", json={"component_id": self.comp_id})
|
||||
self.assertEqual(add.status_code, 200)
|
||||
self.assertTrue(add.get_json()["success"])
|
||||
|
||||
listed = self.client.get("/api/sklad")
|
||||
self.assertEqual(listed.status_code, 200)
|
||||
items = listed.get_json()["items"]
|
||||
self.assertEqual(len(items), 1)
|
||||
|
||||
set_total = self.client.post(
|
||||
f"/api/sklad/{self.comp_id}",
|
||||
json={"total_kg": 1000.0, "inflow_kg": 50.0},
|
||||
)
|
||||
self.assertEqual(set_total.status_code, 200)
|
||||
self.assertEqual(set_total.get_json()["item"]["total_kg"], 1000.0)
|
||||
|
||||
move = self.client.put(
|
||||
f"/api/sklad/{self.comp_id}/move",
|
||||
json={"to_index": 0},
|
||||
)
|
||||
self.assertEqual(move.status_code, 200)
|
||||
|
||||
chart = self.client.get(f"/api/sklad/{self.comp_id}/chart")
|
||||
self.assertEqual(chart.status_code, 200)
|
||||
self.assertIn("points", chart.get_json())
|
||||
|
||||
delete = self.client.delete(f"/api/sklad/{self.comp_id}")
|
||||
self.assertEqual(delete.status_code, 200)
|
||||
empty = self.client.get("/api/sklad")
|
||||
self.assertEqual(len(empty.get_json()["items"]), 0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user