sqlmodel/tests/test_validation.py
Anton De Meester a7f8a27c20 Upgrade to Pydantic 2
Change imports
Undefined => PydanticUndefined
Update SQLModelMetaclass and SQLModel __init__ and __new__ functions
Update SQL Alchemy type inference
2023-08-06 08:01:04 +00:00

34 lines
919 B
Python

from typing import Optional
import pytest
from pydantic import field_validator
from pydantic.error_wrappers import ValidationError
from sqlmodel import SQLModel
def test_validation(clear_sqlmodel):
"""Test validation of implicit and explict None values.
# For consistency with pydantic, validators are not to be called on
# arguments that are not explicitly provided.
https://github.com/tiangolo/sqlmodel/issues/230
https://github.com/samuelcolvin/pydantic/issues/1223
"""
class Hero(SQLModel):
name: Optional[str] = None
secret_name: Optional[str] = None
age: Optional[int] = None
@field_validator("name", "secret_name", "age")
def reject_none(cls, v):
assert v is not None
return v
Hero.model_validate({"age": 25})
with pytest.raises(ValidationError):
Hero.model_validate({"name": None, "age": 25})