42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import sqlalchemy as sa
|
|
from pytest import raises
|
|
from sqlalchemy_utils import NumberRangeType, NumberRange, NumberRangeException
|
|
from tests import DatabaseTestCase
|
|
|
|
|
|
class TestNumberRangeType(DatabaseTestCase):
|
|
def create_models(self):
|
|
class Building(self.Base):
|
|
__tablename__ = 'building'
|
|
id = sa.Column(sa.Integer, primary_key=True)
|
|
persons_at_night = sa.Column(NumberRangeType)
|
|
|
|
def __repr__(self):
|
|
return 'Building(%r)' % self.id
|
|
|
|
self.Building = Building
|
|
|
|
def test_save_number_range(self):
|
|
building = self.Building(
|
|
persons_at_night=NumberRange(1, 3)
|
|
)
|
|
|
|
self.session.add(building)
|
|
self.session.commit()
|
|
|
|
building = self.session.query(self.Building).first()
|
|
assert building.persons_at_night.min_value == 1
|
|
assert building.persons_at_night.max_value == 3
|
|
|
|
|
|
class TestNumberRange(object):
|
|
def test_equality_operator(self):
|
|
assert NumberRange(1, 3) == NumberRange(1, 3)
|
|
|
|
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)
|