mirror of
https://github.com/sstent/go-garth.git
synced 2026-01-25 16:42:28 +00:00
66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
from dataclasses import dataclass
|
|
from datetime import date, datetime
|
|
|
|
from garth.utils import (
|
|
asdict,
|
|
camel_to_snake,
|
|
camel_to_snake_dict,
|
|
format_end_date,
|
|
)
|
|
|
|
|
|
def test_camel_to_snake():
|
|
assert camel_to_snake("hiThereHuman") == "hi_there_human"
|
|
|
|
|
|
def test_camel_to_snake_dict():
|
|
assert camel_to_snake_dict({"hiThereHuman": "hi"}) == {
|
|
"hi_there_human": "hi"
|
|
}
|
|
|
|
|
|
def test_format_end_date():
|
|
assert format_end_date("2021-01-01") == date(2021, 1, 1)
|
|
assert format_end_date(None) == date.today()
|
|
assert format_end_date(date(2021, 1, 1)) == date(2021, 1, 1)
|
|
|
|
|
|
@dataclass
|
|
class AsDictTestClass:
|
|
name: str
|
|
age: int
|
|
birth_date: date
|
|
|
|
|
|
def test_asdict():
|
|
# Test for dataclass instance
|
|
instance = AsDictTestClass("Test", 20, date.today())
|
|
assert asdict(instance) == {
|
|
"name": "Test",
|
|
"age": 20,
|
|
"birth_date": date.today().isoformat(),
|
|
}
|
|
|
|
# Test for list of dataclass instances
|
|
instances = [
|
|
AsDictTestClass("Test1", 20, date.today()),
|
|
AsDictTestClass("Test2", 30, date.today()),
|
|
]
|
|
expected_output = [
|
|
{"name": "Test1", "age": 20, "birth_date": date.today().isoformat()},
|
|
{"name": "Test2", "age": 30, "birth_date": date.today().isoformat()},
|
|
]
|
|
assert asdict(instances) == expected_output
|
|
|
|
# Test for date instance
|
|
assert asdict(date.today()) == date.today().isoformat()
|
|
|
|
# Test for datetime instance
|
|
now = datetime.now()
|
|
assert asdict(now) == now.isoformat()
|
|
|
|
# Test for regular types
|
|
assert asdict("Test") == "Test"
|
|
assert asdict(123) == 123
|
|
assert asdict(None) is None
|