Skip to content

Commit

Permalink
Add EnumKeySerializer tests
Browse files Browse the repository at this point in the history
RFDAP-5724
  • Loading branch information
Arthur Mesquita Pickcius committed Mar 27, 2023
1 parent d83e1de commit aa56abd
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/serialchemy/_tests/sample_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from sqlalchemy.sql import sqltypes
from sqlalchemy_utils import ChoiceType

from serialchemy.enum_serializer import EnumKeySerializer
from serialchemy.enum_field import EnumKeyField
from serialchemy.field import Field
from serialchemy.model_serializer import ModelSerializer
from serialchemy.nested_fields import NestedModelField, NestedModelListField
Expand Down Expand Up @@ -165,4 +165,4 @@ class EmployeeSerializer(ModelSerializer):
company_name = Field(dump_only=True)
address = NestedModelField(Address)
contacts = NestedModelListField(Contact)
marital_status = Field(serializer=EnumKeySerializer(MaritalStatus))
marital_status = EnumKeyField(MaritalStatus)
22 changes: 20 additions & 2 deletions src/serialchemy/_tests/test_serialization.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import pytest

from serialchemy._tests.sample_model import (
Address, Company, ContractType, Department, Employee, Engineer, Manager, MaritalStatus,
SpecialistEngineer)
Address, Company, ContractType, Department, Employee, EmployeeSerializer, Engineer, Manager,
MaritalStatus, SpecialistEngineer)
from serialchemy.field import Field
from serialchemy.func import dump
from serialchemy.model_serializer import ModelSerializer
Expand Down Expand Up @@ -79,6 +79,12 @@ def test_model_dump(db_session, data_regression):
serialized = serializer.dump(emp)
data_regression.Check(serialized)

def test_enum_key_field_dump(db_session, data_regression):
emp = db_session.query(Employee).get(1)
serializer = EmployeeSerializer(Employee)
serialized = serializer.dump(emp)
data_regression.Check(serialized)


def test_model_load(data_regression):
serializer = ModelSerializer(Employee)
Expand All @@ -92,6 +98,18 @@ def test_model_load(data_regression):
model = serializer.load(employee_dict)
data_regression.Check(dump(model))

def test_enum_key_field_load(data_regression):
serializer = EmployeeSerializer(Employee)
employee_dict = {
"firstname": "Sarah",
"lastname": "Kerrigan",
"email": "sarahk@blitz.com",
"admission": "2152-01-02T00:00:00",
"marital_status": "MARRIED"
}
model = serializer.load(employee_dict)
data_regression.Check(dump(model))


def test_one2one_pk_field(db_session, data_regression):
serializer = EmployeeSerializerPrimaryKeyFields(Employee)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
address:
city: Tarsonis
id: 1
number: '943'
state: null
street: 5 Av
zip: null
address_id: 1
admission: '2000-01-01'
company_id: 5
company_name: Terrans
contacts: []
contract_type: null
created_at: '2000-01-02T00:00:00'
email: null
firstname: Jim
id: 1
lastname: Raynor
marital_status: MARRIED
role: Manager
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
address_id: null
admission: '2152-01-02'
company_id: null
contract_type: null
created_at: null
email: sarahk@blitz.com
firstname: Sarah
id: null
lastname: Kerrigan
marital_status: Married
password: null
role: Employee
2 changes: 1 addition & 1 deletion src/serialchemy/enum_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

class EnumKeyField(Field):
def __init__(self, enum_class, dump_only=False, load_only=False, creation_only=False):
super().__init__(dump_only, load_only, creation_only, EnumKeySerializer(enum_class))
super().__init__(dump_only=dump_only, load_only=load_only, creation_only=creation_only, serializer=EnumKeySerializer(enum_class))

0 comments on commit aa56abd

Please sign in to comment.