123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import datetime
- from typing import Any, Dict, Type
- import pytest
- from reflex.utils import serializers
- @pytest.mark.parametrize(
- "type_,expected",
- [
- (str, True),
- (dict, True),
- (Dict[int, int], True),
- ],
- )
- def test_has_serializer(type_: Type, expected: bool):
- """Test that has_serializer returns the correct value.
- Args:
- type_: The type to check.
- expected: The expected result.
- """
- assert serializers.has_serializer(type_) == expected
- @pytest.mark.parametrize(
- "type_,expected",
- [
- (str, serializers.serialize_str),
- (dict, serializers.serialize_dict),
- (Dict[int, int], serializers.serialize_dict),
- (datetime.datetime, serializers.serialize_datetime),
- (datetime.date, serializers.serialize_datetime),
- (datetime.time, serializers.serialize_datetime),
- (datetime.timedelta, serializers.serialize_datetime),
- ],
- )
- def test_get_serializer(type_: Type, expected: serializers.Serializer):
- """Test that get_serializer returns the correct value.
- Args:
- type_: The type to check.
- expected: The expected result.
- """
- assert serializers.get_serializer(type_) == expected
- def test_add_serializer():
- """Test that adding a serializer works."""
- def serialize_test(value: int) -> str:
- """Serialize an int to a string.
- Args:
- value: The value to serialize.
- Returns:
- The serialized value.
- """
- return str(value)
- # Initially there should be no serializer for int.
- assert not serializers.has_serializer(int)
- assert serializers.serialize(5) is None
- # Register the serializer.
- assert serializers.serializer(serialize_test) == serialize_test
- # There should now be a serializer for int.
- assert serializers.has_serializer(int)
- assert serializers.get_serializer(int) == serialize_test
- assert serializers.serialize(5) == "5"
- # Remove the serializer.
- serializers.SERIALIZERS.pop(int)
- @pytest.mark.parametrize(
- "value,expected",
- [
- ("test", "test"),
- (datetime.datetime(2021, 1, 1, 1, 1, 1, 1), "2021-01-01 01:01:01.000001"),
- (datetime.date(2021, 1, 1), "2021-01-01"),
- (datetime.time(1, 1, 1, 1), "01:01:01.000001"),
- (datetime.timedelta(1, 1, 1), "1 day, 0:00:01.000001"),
- (5, None),
- (None, None),
- ([], None),
- ],
- )
- def test_serialize(value: Any, expected: str):
- """Test that serialize returns the correct value.
- Args:
- value: The value to serialize.
- expected: The expected result.
- """
- assert serializers.serialize(value) == expected
|