From 3f96c9c6502243b06efd4bb34a189e72e3a5557c Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 19:24:55 +0800
Subject: [PATCH] 复制项目
---
backend/tests/test_import_service.py | 62 +++++++++++++++++++++++++++++++
1 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/backend/tests/test_import_service.py b/backend/tests/test_import_service.py
new file mode 100644
index 0000000..33f20f5
--- /dev/null
+++ b/backend/tests/test_import_service.py
@@ -0,0 +1,62 @@
+import pytest
+from fastapi import HTTPException
+
+from app.import_service import (
+ _collect_exam_ids,
+ _parse_exam_to_paper_sql_map,
+ _resolve_exam_paper_map,
+)
+
+
+def test_collect_exam_ids_ok():
+ rows = [{"exam_id": 102}, {"exam_id": 101}, {"exam_id": 101}]
+ assert _collect_exam_ids(rows) == [101, 102]
+
+
+def test_collect_exam_ids_empty():
+ with pytest.raises(HTTPException) as exc:
+ _collect_exam_ids([{"exam_id": None}, {}])
+ assert exc.value.status_code == 400
+
+
+def test_parse_exam_to_paper_sql_map():
+ sql = """
+ INSERT INTO examination_exam (id, paper_source_id, name) VALUES (101, 9001, 'a');
+ INSERT INTO examination_exam (id, paper_id, name) VALUES (102, 9002, 'b');
+ """
+ m = _parse_exam_to_paper_sql_map(sql)
+ assert m == {101: 9001, 102: 9002}
+
+
+def test_resolve_single_paper_multi_exam():
+ paper_rows = [
+ {"id": 9001, "external_paper_id": "P1", "revision": "1"},
+ ]
+ exam_rows_exam_ids = [101, 102]
+ files: dict[str, bytes] = {}
+ m = _resolve_exam_paper_map(exam_rows_exam_ids, paper_rows, files)
+ assert m == {101: 9001, 102: 9001}
+
+
+def test_resolve_multi_paper_requires_exam_sql():
+ paper_rows = [
+ {"id": 9001, "external_paper_id": "P1", "revision": "1"},
+ {"id": 9002, "external_paper_id": "P2", "revision": "1"},
+ ]
+ with pytest.raises(HTTPException) as exc:
+ _resolve_exam_paper_map([101, 102], paper_rows, {})
+ assert "examination_exam" in exc.value.detail
+
+
+def test_resolve_multi_paper_with_exam_sql():
+ paper_rows = [
+ {"id": 9001, "external_paper_id": "P1", "revision": "1"},
+ {"id": 9002, "external_paper_id": "P2", "revision": "1"},
+ ]
+ exam_sql = """
+ INSERT INTO examination_exam (id, paper_source_id) VALUES (101, 9001);
+ INSERT INTO examination_exam (id, paper_source_id) VALUES (102, 9002);
+ """
+ files = {"examination_exam.sql": exam_sql.encode()}
+ m = _resolve_exam_paper_map([101, 102], paper_rows, files)
+ assert m == {101: 9001, 102: 9002}
--
Gitblit v1.8.0