Skip to content

Commit e906b70

Browse files
committed
test: 进一步提高测试覆盖率
1 parent ce657b3 commit e906b70

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

src/utils/validation/models.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ def prevent_duplication(
7676
project_link = values.get("project_link")
7777

7878
context = info.context
79-
if context is None:
80-
raise ValueError("未获取到验证上下文")
79+
if context is None: # pragma: no cover
80+
raise PydanticCustomError("validation_context", "未获取到验证上下文")
8181
data = context.get("previous_data")
8282
if data is None:
83-
raise ValueError("未获取到数据列表")
83+
raise PydanticCustomError("previous_data", "未获取到数据列表")
8484

8585
if (
8686
module_name
@@ -121,8 +121,8 @@ def collect_valid_values(
121121
cls, v: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo
122122
):
123123
context = info.context
124-
if context is None:
125-
raise ValueError("未获取到验证上下文")
124+
if context is None: # pragma: no cover
125+
raise PydanticCustomError("validation_context", "未获取到验证上下文")
126126

127127
result = handler(v)
128128
context["valid_data"][info.field_name] = result
@@ -180,8 +180,8 @@ def supported_adapters_validator(
180180
info: ValidationInfo,
181181
) -> list[str] | None:
182182
context = info.context
183-
if context is None:
184-
raise ValueError("未获取到验证上下文")
183+
if context is None: # pragma: no cover
184+
raise PydanticCustomError("validation_context", "未获取到验证上下文")
185185

186186
skip_plugin_test = context.get("skip_plugin_test")
187187
# 如果是从 issue 中获取的数据,需要先解码

tests/utils/validation/fields/test_pypi.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,38 @@ async def test_name_duplication(mocked_api: MockRouter) -> None:
9999

100100
assert not mocked_api["project_link1"].called
101101
assert not mocked_api["homepage"].called
102+
103+
104+
async def test_name_duplication_previos_data_missing(mocked_api: MockRouter) -> None:
105+
"""没有提供 previos_data 的情况"""
106+
from src.utils.validation import PublishType, validate_info
107+
108+
data = generate_adapter_data(
109+
module_name="module_name1",
110+
project_link="project_link1",
111+
previous_data=None,
112+
)
113+
114+
result = validate_info(PublishType.ADAPTER, data)
115+
116+
assert not result["valid"]
117+
assert not result["data"]
118+
assert result["errors"] == [
119+
{
120+
"type": "previous_data",
121+
"loc": (),
122+
"msg": "未获取到数据列表",
123+
"input": {
124+
"name": "name",
125+
"desc": "desc",
126+
"author": "author",
127+
"module_name": "module_name1",
128+
"project_link": "project_link1",
129+
"homepage": "https://nonebot.dev",
130+
"tags": '[{"label": "test", "color": "#ffffff"}]',
131+
},
132+
}
133+
]
134+
135+
assert not mocked_api["project_link1"].called
136+
assert not mocked_api["homepage"].called

0 commit comments

Comments
 (0)