34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
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()
|