Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
Friskes committed Apr 29, 2024
1 parent 85fa53f commit 93a0054
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
21 changes: 21 additions & 0 deletions tests/serializers.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers

from tests.models import Person
Expand All @@ -8,11 +10,30 @@ class PersonCars(serializers.Serializer):
car_price = serializers.IntegerField()


class PersonHouse(serializers.Serializer):
address = serializers.CharField()


class PersonSerializer1(serializers.Serializer):
name = serializers.CharField()
age = serializers.IntegerField()
birthday = serializers.DateTimeField()

height = serializers.SerializerMethodField()

def get_height(self, obj: object) -> int:
return 184

weight = serializers.SerializerMethodField()

@extend_schema_field(OpenApiTypes.INT)
def get_weight(self, obj): # type: ignore[no-untyped-def]
return 78

cars = PersonCars(many=True)

house = PersonHouse()


class PersonSerializer2(serializers.ModelSerializer):
class Meta:
Expand Down
37 changes: 35 additions & 2 deletions tests/test_decorators.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from time import sleep
from unittest.mock import ANY

from src.drf_serializer_dumps.decorators import serializer_dumps

from tests.serializers import PersonSerializer1, PersonSerializer2
Expand All @@ -7,11 +10,41 @@
# pytest -s ./tests
def test_serializer_dumps() -> None:
""""""
result = serializer_dumps(PersonSerializer1)
assert result == {'name': 'string', 'age': 1, 'cars': [{'car_name': 'string', 'car_price': 1}]}
result = serializer_dumps(PersonSerializer1, exclude_fields=['age'])
assert result == {
'name': 'string',
'birthday': ANY,
'height': 1,
'weight': 1,
'cars': [{'car_name': 'string', 'car_price': 1}],
'house': {'address': 'string'},
}


def test_model_serializer_dumps() -> None:
""""""
result = serializer_dumps(PersonSerializer2)
assert result == {'id': 1, 'name': 'string', 'phones': ['string']}


def test_renew_type_value() -> None:
""""""
expected = {
'name': 'string',
'age': 1,
'birthday': ANY,
'height': 1,
'weight': 1,
'cars': [{'car_name': 'string', 'car_price': 1}],
'house': {'address': 'string'},
}

result1 = serializer_dumps(PersonSerializer1, renew_type_value=True)
assert result1 == expected

sleep(0.01)

result2 = serializer_dumps(PersonSerializer1, renew_type_value=True)
assert result2 == expected

assert result1['birthday'] != result2['birthday']

0 comments on commit 93a0054

Please sign in to comment.