Skip to content

Commit

Permalink
Merge remote-tracking branch 'canassa/feat/metadata-fields'
Browse files Browse the repository at this point in the history
  • Loading branch information
lidatong committed Nov 18, 2018
2 parents e3a28c5 + 558ea66 commit 149758f
Showing 1 changed file with 34 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tests/test_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import datetime
from dataclasses import dataclass, field

import pytest
from marshmallow import fields, ValidationError

from dataclasses_json import DataClassJsonMixin


@dataclass
class Car(DataClassJsonMixin):
license_number: str = field(metadata={'mm': fields.String(required=False)})


@dataclass
class StringDate(DataClassJsonMixin):
string_date: datetime.datetime = field(metadata={'mm': fields.String(required=False)})


car_schema = Car.schema()
string_date_schema = StringDate.schema()


class TestMetadataField:

def test_validation_error_raises(self):
with pytest.raises(ValidationError) as e:
car_schema.load({'license_number': 123})
assert e.value.messages == {'license_number': ['Not a valid string.']}

def test_mm_field_takes_precedence_over_types(self):
obj = string_date_schema.load({'string_date': 'yesterday'})
assert isinstance(obj, StringDate)
assert obj.string_date == 'yesterday'

0 comments on commit 149758f

Please sign in to comment.