File: test_mock.py

package info (click to toggle)
python-apischema 0.18.3-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,636 kB
  • sloc: python: 15,281; makefile: 3; sh: 2
file content (48 lines) | stat: -rw-r--r-- 1,104 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from dataclasses import dataclass
from typing import ClassVar, cast

import pytest

from apischema.fields import FIELDS_SET_ATTR
from apischema.validation.mock import NonTrivialDependency, ValidatorMock


@dataclass
class Data:
    a: int
    b: str = "1"
    c: ClassVar[int] = 42
    d = 0

    @property
    def property(self) -> int:
        return int(self.b) + self.a

    def method(self, arg: int) -> int:
        return self.a + arg

    @classmethod
    def classmethod(cls, arg: int):
        return cls.c + arg


class SubData(Data):
    pass


def test_mock():
    mock = cast(Data, ValidatorMock(Data, {"a": 0}))
    assert mock.a == 0
    assert mock.b == "1"
    assert mock.c == 42
    assert mock.d == 0
    assert mock.__dict__ == {"a": 0, FIELDS_SET_ATTR: {"a"}}
    assert getattr(mock, FIELDS_SET_ATTR) == {"a"}
    assert mock.property == 1
    assert mock.method(1) == 1
    assert mock.classmethod(0) == 42
    assert mock.__class__ == Data
    assert isinstance(mock, Data)
    assert type(mock) is ValidatorMock
    with pytest.raises(NonTrivialDependency):
        _ = mock.e