Files
2026-09-12 17:39:13 +08:00

45 lines
1.6 KiB
Python

"""notice service 单元测试(回归富文本 content 空值保护)。"""
import json
from modules.notice.service import notice_service
from modules.notice.models import Notice
from modules.notice.repository import notice_repo
from modules.notice.schemas import NoticeForm
def _resp_body(resp):
return json.loads(resp.body)
def _form(**overrides):
data = dict(title="测试通知", source=1, url="https://example.com", status=1, isTop=1, click=0)
data.update(overrides)
return NoticeForm(**data)
def test_add_notice_content_none_saves_null(fake_request, sqlite_db):
resp = notice_service.add(fake_request, _form(content=None))
assert _resp_body(resp)["code"] == 0
row = notice_repo.filter(Notice.title == "测试通知").first()
assert row is not None
assert row.content is None
def test_add_notice_plain_text_stored_as_is(fake_request, sqlite_db):
resp = notice_service.add(fake_request, _form(title="纯文本通知", content="hello world"))
assert _resp_body(resp)["code"] == 0
row = notice_repo.filter(Notice.title == "纯文本通知").first()
assert row.content == "hello world"
def test_update_notice_content_none_keeps_old(fake_request, sqlite_db):
notice_service.add(fake_request, _form(title="保留旧内容", content="old-content"))
row = notice_repo.filter(Notice.title == "保留旧内容").first()
resp = notice_service.update(
fake_request,
_form(title="保留旧内容", content=None, id=row.id),
)
assert _resp_body(resp)["code"] == 0
assert notice_repo.get_by_id(row.id).content == "old-content"