Squashed 'core/' content from commit 92ec910
git-subtree-dir: core git-subtree-split: 92ec910a132e379a3a6e442a75bcb07cac0f0010
This commit is contained in:
79
backend/tests/test_reports.py
Normal file
79
backend/tests/test_reports.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import pytest
|
||||
from conftest import auth_header
|
||||
|
||||
|
||||
class TestReportTemplates:
|
||||
async def test_list_report_templates(self, client, admin_user, admin_token, seed_report_template):
|
||||
resp = await client.get("/api/v1/reports/templates", headers=auth_header(admin_token))
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert isinstance(body, list)
|
||||
assert len(body) >= 1
|
||||
assert "name" in body[0]
|
||||
assert "report_type" in body[0]
|
||||
|
||||
async def test_create_report_template(self, client, admin_user, admin_token):
|
||||
resp = await client.post(
|
||||
"/api/v1/reports/templates",
|
||||
json={
|
||||
"name": "月报模板", "report_type": "monthly",
|
||||
"description": "每月能耗报表",
|
||||
"fields": [{"name": "consumption", "label": "能耗"}],
|
||||
"aggregation": "sum", "time_granularity": "day",
|
||||
},
|
||||
headers=auth_header(admin_token),
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert body["name"] == "月报模板"
|
||||
assert "id" in body
|
||||
|
||||
async def test_list_templates_unauthenticated(self, client):
|
||||
resp = await client.get("/api/v1/reports/templates")
|
||||
assert resp.status_code == 401
|
||||
|
||||
|
||||
class TestReportTasks:
|
||||
async def test_list_report_tasks(self, client, admin_user, admin_token, seed_report_task):
|
||||
resp = await client.get("/api/v1/reports/tasks", headers=auth_header(admin_token))
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert isinstance(body, list)
|
||||
assert len(body) >= 1
|
||||
|
||||
async def test_create_report_task(self, client, admin_user, admin_token, seed_report_template):
|
||||
resp = await client.post(
|
||||
"/api/v1/reports/tasks",
|
||||
json={
|
||||
"template_id": seed_report_template.id,
|
||||
"name": "新任务",
|
||||
"export_format": "csv",
|
||||
},
|
||||
headers=auth_header(admin_token),
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert "id" in body
|
||||
|
||||
async def test_run_report_task(self, client, admin_user, admin_token, seed_report_task):
|
||||
resp = await client.post(
|
||||
f"/api/v1/reports/tasks/{seed_report_task.id}/run",
|
||||
headers=auth_header(admin_token),
|
||||
)
|
||||
assert resp.status_code == 200
|
||||
body = resp.json()
|
||||
assert "task_id" in body
|
||||
|
||||
async def test_run_nonexistent_task(self, client, admin_user, admin_token):
|
||||
resp = await client.post(
|
||||
"/api/v1/reports/tasks/99999/run",
|
||||
headers=auth_header(admin_token),
|
||||
)
|
||||
assert resp.status_code == 404
|
||||
|
||||
async def test_create_task_unauthenticated(self, client):
|
||||
resp = await client.post(
|
||||
"/api/v1/reports/tasks",
|
||||
json={"template_id": 1, "name": "test"},
|
||||
)
|
||||
assert resp.status_code == 401
|
||||
Reference in New Issue
Block a user