fix: 修复扇区推断及按CGI更新导入
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import unittest
|
||||
|
||||
from app.database import _deduplicate_rows_by_key
|
||||
|
||||
|
||||
class SectorImportTests(unittest.TestCase):
|
||||
def test_duplicate_cgi_uses_last_uploaded_row(self):
|
||||
columns = ["CGI", "扇区", "物理站"]
|
||||
rows = [
|
||||
("460-00-1-1", "旧扇区", "旧物理站"),
|
||||
("460-00-2-1", "新增扇区", "新增物理站"),
|
||||
("460-00-1-1", "新扇区", "新物理站"),
|
||||
]
|
||||
|
||||
result, duplicate_count = _deduplicate_rows_by_key(columns, rows, "CGI")
|
||||
|
||||
self.assertEqual(duplicate_count, 1)
|
||||
self.assertEqual(result, [
|
||||
("460-00-1-1", "新扇区", "新物理站"),
|
||||
("460-00-2-1", "新增扇区", "新增物理站"),
|
||||
])
|
||||
|
||||
def test_blank_cgi_is_rejected(self):
|
||||
with self.assertRaisesRegex(ValueError, "第 2 行 CGI 为空"):
|
||||
_deduplicate_rows_by_key(["CGI", "扇区"], [(" ", "扇区1")], "CGI")
|
||||
|
||||
def test_missing_cgi_column_is_rejected(self):
|
||||
with self.assertRaisesRegex(ValueError, "缺少业务键字段: CGI"):
|
||||
_deduplicate_rows_by_key(["扇区"], [("扇区1",)], "CGI")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user