Skip to content

Commit

Permalink
test: make test more explicit
Browse files Browse the repository at this point in the history
  • Loading branch information
PrettyWood committed Nov 29, 2020
1 parent ae238f3 commit ce879ea
Showing 1 changed file with 33 additions and 5 deletions.
38 changes: 33 additions & 5 deletions tests/test_validators.py
Expand Up @@ -551,21 +551,49 @@ def check_foobar(cls, v: Tuple[int, int]) -> Tuple[int, int]:

def test_validation_each_item_recursive():
class Model(BaseModel):
foo_default: List[List[str]]
foo: List[List[str]]
foo_recursive: List[List[str]]
bar: Dict[str, Dict[str, Any]]
bar_recursive: Dict[str, Dict[str, Any]]
bar_deep_recursive: Dict[str, Dict[str, Dict[str, Any]]]

@validator('foo_default', each_item=True)
@validator('foo', each_item=True, allow_reuse=True)
def double(cls, v):
return v * 2

@validator('foo_recursive', each_item=True, recursive=True)
def double_recursive(cls, v):
return v * 2

my_list_of_str = [['a'], ['b'], ['c']]
assert Model(foo_default=my_list_of_str, foo_recursive=my_list_of_str).dict() == {
'foo_default': [['a', 'a'], ['b', 'b'], ['c', 'c']],
@validator('bar', each_item=True)
def set_pika(cls, v):
return 'pika'

@validator('bar_recursive', each_item=True, recursive=True)
def set_recursive_pika(cls, v):
return 'pika'

@validator('bar_deep_recursive', each_item=True, recursive=True)
def set_deep_recursive_pika(cls, v):
return 'pika'

my_list = [['a'], ['b'], ['c']]
my_dict = {
'a1': {'b1': {'c1': 'd1', 'c2': 'd2'}},
'a2': {'b2': {'c3': 'd3'}},
}
assert Model(
foo=my_list,
foo_recursive=my_list,
bar=my_dict,
bar_recursive=my_dict,
bar_deep_recursive=my_dict,
).dict() == {
'foo': [['a', 'a'], ['b', 'b'], ['c', 'c']],
'foo_recursive': [['aa'], ['bb'], ['cc']],
'bar': {'a1': 'pika', 'a2': 'pika'},
'bar_recursive': {'a1': {'b1': 'pika'}, 'a2': {'b2': 'pika'}},
'bar_deep_recursive': {'a1': {'b1': {'c1': 'pika', 'c2': 'pika'}}, 'a2': {'b2': {'c3': 'pika'}}},
}


Expand Down

0 comments on commit ce879ea

Please sign in to comment.