b2c20ec43d
- 新增微信告警服务(wechat_service)和告警任务(alert_tasks) - 新增 WebSocket 实时推送端点 - 新增监控管理模块(monitor) - 增强统计仪表板:趋势图、区域分布、光功率历史 - 设备管理:添加坐标信息、标签系统、复合索引优化 - 前端:重构Dashboard/Charts页面,新增业务组件 - 新增5个数据库迁移(坐标、复合索引、标签、光功率历史、显示名) - 更新部署配置和脚本 - 新增测试框架基础结构
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
"""数据导入服务测试"""
|
|
import io
|
|
import pytest
|
|
from app.services.import_service import ImportService
|
|
|
|
|
|
class TestImportService:
|
|
def test_validate_mac(self, db_session):
|
|
svc = ImportService(db_session)
|
|
valid = [{"mac_address": "1484-778f-aa60", "region": "城区", "school_name": "测试学校"}]
|
|
result = svc.validate_data(valid)
|
|
assert len(result["valid"]) == 1
|
|
assert len(result["invalid"]) == 0
|
|
|
|
def test_invalid_mac_rejected(self, db_session):
|
|
svc = ImportService(db_session)
|
|
data = [{"mac_address": "invalid", "region": "城区", "school_name": "测试学校"}]
|
|
result = svc.validate_data(data)
|
|
assert len(result["invalid"]) > 0
|
|
|
|
def test_missing_required_fields(self, db_session):
|
|
svc = ImportService(db_session)
|
|
# MAC format valid but empty region/school may or may not be rejected
|
|
# depending on validation rules — just verify it doesn't crash
|
|
data = [{"mac_address": "1484-778f-aa60", "region": "", "school_name": ""}]
|
|
result = svc.validate_data(data)
|
|
assert "valid" in result or "invalid" in result
|
|
|
|
|
|
class TestCleanValue:
|
|
def test_strips_whitespace(self):
|
|
from app.services.import_service import clean_value
|
|
assert clean_value(" test ") == "test"
|
|
|
|
def test_none_returns_empty(self):
|
|
from app.services.import_service import clean_value
|
|
assert clean_value(None) == ''
|
|
|
|
def test_nan_returns_empty(self):
|
|
from app.services.import_service import clean_value
|
|
import math
|
|
assert clean_value(float('nan')) == ''
|