feat(analytics): 数据分析板块四新表+迁移——stat_daily_staff/敏感词三表/fetched_at 索引
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""新表建模冒烟:create_all 建表 + 唯一约束生效(迁移幂等由 alembic 链保证)。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from app.db.models import SensitiveHit, SensitiveWord
|
||||
|
||||
|
||||
async def test_sensitive_word_unique(make_client):
|
||||
async def seed(session):
|
||||
session.add(SensitiveWord(word="私单", category="飞单"))
|
||||
await session.flush()
|
||||
# 同词二插必须撞 UNIQUE(word)
|
||||
session.add(SensitiveWord(word="私单"))
|
||||
with pytest.raises(IntegrityError):
|
||||
await session.flush()
|
||||
|
||||
client = await make_client(seed)
|
||||
r = await client.get("/api/health")
|
||||
assert r.status_code == 200 # app boots with new models
|
||||
|
||||
|
||||
async def test_hit_unique_word_msg(make_client):
|
||||
async def seed(session):
|
||||
w = SensitiveWord(word="私单")
|
||||
session.add(w)
|
||||
await session.flush()
|
||||
session.add(
|
||||
SensitiveHit(word_id=w.id, msg_id="m1", channel="wechat")
|
||||
)
|
||||
session.add(
|
||||
SensitiveHit(word_id=w.id, msg_id="m1", channel="wechat")
|
||||
)
|
||||
with pytest.raises(IntegrityError):
|
||||
await session.flush()
|
||||
|
||||
client = await make_client(seed)
|
||||
r = await client.get("/api/health")
|
||||
assert r.status_code == 200 # app boots with new models
|
||||
Reference in New Issue
Block a user