Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Kludex committed Jul 14, 2023
1 parent 4de73c6 commit 515fc21
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 1 deletion.
8 changes: 7 additions & 1 deletion bump_pydantic/codemods/con_func.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,13 @@ def leave_ann_assign_constr_call(self, original_node: cst.AnnAssign, updated_nod
def leave_constr_call(self, original_node: cst.Call, updated_node: cst.Call) -> cst.Call:
self._remove_import(original_node.func)
AddImportsVisitor.add_needed_import(context=self.context, module="pydantic", obj="StringConstraints")
return updated_node.with_changes(func=cst.Name("StringConstraints"))
return updated_node.with_changes(
func=cst.Name("StringConstraints"),
args=[
arg if arg.keyword and arg.keyword.value != "regex" else arg.with_changes(keyword=cst.Name("pattern"))
for arg in updated_node.args
],
)

@m.leave(CON_NUMBER_CALL)
def leave_con_number_call(self, original_node: cst.Call, updated_node: cst.Call) -> cst.Call:
Expand Down
2 changes: 2 additions & 0 deletions tests/integration/cases/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from ..folder import Folder
from .add_none import cases as add_none_cases
from .base_settings import cases as base_settings_cases
from .con_func import cases as con_func_cases
from .config_to_model import cases as config_to_model_cases
from .field import cases as generic_model_cases
from .folder_inside_folder import cases as folder_inside_folder_cases
Expand All @@ -26,6 +27,7 @@
*generic_model_cases,
*folder_inside_folder_cases,
*unicode_cases,
*con_func_cases,
]
before = Folder("project", *[case.source for case in cases])
expected = Folder("project", *[case.expected for case in cases])
43 changes: 43 additions & 0 deletions tests/integration/cases/con_func.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from ..case import Case
from ..file import File

cases = [
Case(
name="Con* functions",
source=File(
"con_func.py",
content=[
"from pydantic import BaseModel, constr, conlist, conint, conbytes, condecimal, confloat, conset",
"",
"",
"class Potato(BaseModel):",
" a: constr(regex='[a-z]+')",
" b: conlist(int, min_items=1, max_items=10)",
" c: conint(gt=0, lt=10)",
" d: conbytes(min_length=1, max_length=10)",
" e: condecimal(gt=0, lt=10)",
" f: confloat(gt=0, lt=10)",
" g: conset(int, min_items=1, max_items=10)",
],
),
expected=File(
"con_func.py",
content=[
"from pydantic import Field, StringConstraints, BaseModel",
"from decimal import Decimal",
"from typing import List, Set",
"from typing_extensions import Annotated",
"",
"",
"class Potato(BaseModel):",
" a: Annotated[str, StringConstraints(pattern='[a-z]+')]",
" b: Annotated[List[int], Field(min_length=1, max_length=10)]",
" c: Annotated[int, Field(gt=0, lt=10)]",
" d: Annotated[bytes, Field(min_length=1, max_length=10)]",
" e: Annotated[Decimal, Field(gt=0, lt=10)]",
" f: Annotated[float, Field(gt=0, lt=10)]",
" g: Annotated[Set[int], Field(min_length=1, max_length=10)]",
],
),
)
]

0 comments on commit 515fc21

Please sign in to comment.