45 lines
1.6 KiB
Python
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"
|