# -*- coding: utf-8 -*-
"""
test_routes_export.py — 报告导出路由测试

覆盖 routes/export.py：export_report（加 @login_required 后，P1 收尾三项）
"""


class TestExport:
    """POST /api/export"""

    def test_requires_login(self, client):
        """未登录返回 401（加鉴权后）"""
        r = client.post("/api/export", json={})
        assert r.status_code == 401
        assert r.get_json()["error"]["code"] == 1004

    def test_export_success(self, auth_client):
        """已登录导出返回 Word 文件流"""
        r = auth_client.post("/api/export", json={
            "project_name": "测试项目",
            "query": "mqtt 连接失败",
            "response": "### 排查步骤\nStep 1: docker ps",
            "matched_cases": [],
        })
        assert r.status_code == 200
        assert "wordprocessingml" in r.mimetype
        # Word 文件应是二进制（PK zip 头）
        assert r.data[:2] == b"PK"

    def test_export_minimal_params(self, auth_client):
        """空参数也能导出（无必填校验，生成空报告）"""
        r = auth_client.post("/api/export", json={})
        assert r.status_code == 200
