Refactor NumberRange coercion

This commit is contained in:
Konsta Vesterinen
2014-01-09 15:42:59 +02:00
parent a8aca0caf0
commit 0c42443b9c
2 changed files with 12 additions and 10 deletions

View File

@@ -68,12 +68,6 @@ class NumberRangeType(types.TypeDecorator, ScalarCoercible):
return value return value
def _coerce(self, value): def _coerce(self, value):
if value is not None and not isinstance(value, NumberRange): if value is not None:
if ( value = NumberRange(value)
isinstance(value, six.string_types) or
isinstance(value, six.integer_types)
):
value = NumberRange(value)
else:
raise TypeError('Could not coerce value to NumberRange.')
return value return value

View File

@@ -1,3 +1,4 @@
from pytest import mark
import sqlalchemy as sa import sqlalchemy as sa
from tests import TestCase from tests import TestCase
from sqlalchemy_utils import ( from sqlalchemy_utils import (
@@ -19,9 +20,16 @@ class TestNumberRangeType(TestCase):
self.Building = Building self.Building = Building
def test_save_number_range(self): @mark.parametrize(
'number_range',
(
(1, 3),
'1-3'
)
)
def test_save_number_range(self, number_range):
building = self.Building( building = self.Building(
persons_at_night=NumberRange(1, 3) persons_at_night=number_range
) )
self.session.add(building) self.session.add(building)