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 49
|
from datetime import date
from typing import List
from mashumaro.codecs.orjson import (
ORJSONDecoder,
ORJSONEncoder,
json_decode,
json_encode,
)
from mashumaro.dialect import Dialect
class MyDialect(Dialect):
serialization_strategy = {
date: {
"serialize": date.toordinal,
"deserialize": date.fromordinal,
},
}
def test_json_decode():
assert json_decode('["2023-09-22", "2023-09-23"]', List[date]) == [
date(2023, 9, 22),
date(2023, 9, 23),
]
def test_json_encode():
assert (
json_encode([date(2023, 9, 22), date(2023, 9, 23)], List[date])
== b'["2023-09-22","2023-09-23"]'
)
def test_decoder_with_default_dialect():
decoder = ORJSONDecoder(List[date], default_dialect=MyDialect)
assert decoder.decode("[738785, 738786]") == [
date(2023, 9, 22),
date(2023, 9, 23),
]
def test_encoder_with_default_dialect():
encoder = ORJSONEncoder(List[date], default_dialect=MyDialect)
assert (
encoder.encode([date(2023, 9, 22), date(2023, 9, 23)])
== b"[738785,738786]"
)
|