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
def _coerce(self, value):
if value is not None and not isinstance(value, NumberRange):
if (
isinstance(value, six.string_types) or
isinstance(value, six.integer_types)
):
value = NumberRange(value)
else:
raise TypeError('Could not coerce value to NumberRange.')
if value is not None:
value = NumberRange(value)
return value

View File

@@ -1,3 +1,4 @@
from pytest import mark
import sqlalchemy as sa
from tests import TestCase
from sqlalchemy_utils import (
@@ -19,9 +20,16 @@ class TestNumberRangeType(TestCase):
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(
persons_at_night=NumberRange(1, 3)
persons_at_night=number_range
)
self.session.add(building)