Added badly constructed range handling
This commit is contained in:
@@ -6,6 +6,7 @@ from .types import (
|
||||
PhoneNumber,
|
||||
PhoneNumberType,
|
||||
NumberRange,
|
||||
NumberRangeException,
|
||||
NumberRangeRawType,
|
||||
NumberRangeType
|
||||
)
|
||||
@@ -20,6 +21,7 @@ __all__ = (
|
||||
InstrumentedList,
|
||||
Merger,
|
||||
NumberRange,
|
||||
NumberRangeException,
|
||||
NumberRangeRawType,
|
||||
NumberRangeType,
|
||||
PhoneNumber,
|
||||
|
@@ -90,8 +90,18 @@ class NumberRangeType(types.TypeDecorator):
|
||||
return NumberRange.from_normalized_str(value)
|
||||
|
||||
|
||||
class NumberRangeException(Exception):
|
||||
def __init__(self, min_value, max_value):
|
||||
self.message = 'Min value %d is bigger than max value %d.' % (
|
||||
min_value,
|
||||
max_value
|
||||
)
|
||||
|
||||
|
||||
class NumberRange(object):
|
||||
def __init__(self, min_value, max_value):
|
||||
if min_value > max_value:
|
||||
raise NumberRangeException(min_value, max_value)
|
||||
self.min_value = min_value
|
||||
self.max_value = max_value
|
||||
|
||||
|
@@ -1,5 +1,6 @@
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy_utils import NumberRangeType, NumberRange
|
||||
from pytest import raises
|
||||
from sqlalchemy_utils import NumberRangeType, NumberRange, NumberRangeException
|
||||
from tests import DatabaseTestCase
|
||||
|
||||
|
||||
@@ -34,3 +35,7 @@ class TestNumberRange(object):
|
||||
|
||||
def test_str_representation(self):
|
||||
assert str(NumberRange(1, 3)) == '[1, 3]'
|
||||
|
||||
def test_raises_exception_for_badly_constructed_range(self):
|
||||
with raises(NumberRangeException):
|
||||
NumberRange(3, 2)
|
||||
|
Reference in New Issue
Block a user