File size: 904 Bytes
fc87e83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from __future__ import annotations

import inspect

from pydantic import BaseModel

from redstack.engines.validation import ValidationEngine


def test_validation_engine_does_not_shadow_pydantic_validate() -> None:
    """Regression: the engine's ranking-check method must not be named
    ``validate`` -- that name is pydantic.BaseModel's own deprecated
    classmethod (``validate(value) -> Self``), and overriding it with an
    unrelated instance method is a Liskov violation (caught by mypy --strict
    as an incompatible override) that also makes ``ValidationEngine.validate``
    silently stop behaving like the inherited pydantic API.
    """
    assert hasattr(ValidationEngine, "validate_ranking")
    assert ValidationEngine.validate.__func__ is BaseModel.validate.__func__
    sig = inspect.signature(ValidationEngine.validate_ranking)
    assert list(sig.parameters) == ["self", "ranking"]