File: test_epoch.py

package info (click to toggle)
pydantic-extra-types 2.11.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 852 kB
  • sloc: python: 7,589; makefile: 48
file content (39 lines) | stat: -rw-r--r-- 981 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
import datetime

import pytest

from pydantic_extra_types import epoch


@pytest.mark.parametrize('type_,cls_', [(int, epoch.Integer), (float, epoch.Number)], ids=['integer', 'number'])
def test_type(type_, cls_):
    from pydantic import BaseModel

    class A(BaseModel):
        epoch: cls_

    now = datetime.datetime.now(tz=datetime.timezone.utc)
    ts = type_(now.timestamp())
    a = A.model_validate({'epoch': ts})
    v = a.model_dump()
    assert v['epoch'] == ts

    b = A.model_construct(epoch=now)

    v = b.model_dump()
    assert v['epoch'] == ts

    c = A.model_validate(dict(epoch=ts))
    v = c.model_dump()
    assert v['epoch'] == ts


@pytest.mark.parametrize('cls_', [(epoch.Integer), (epoch.Number)], ids=['integer', 'number'])
def test_schema(cls_):
    from pydantic import BaseModel

    class A(BaseModel):
        dt: cls_

    v = A.model_json_schema()
    assert (dt := v['properties']['dt'])['type'] == cls_.TYPE and dt['format'] == 'date-time'