Files
deb-python-sqlalchemy-utils/tests/test_scalar_list.py
2013-06-21 00:08:51 -07:00

74 lines
1.9 KiB
Python

import six
import sqlalchemy as sa
from sqlalchemy_utils import ScalarListType
from pytest import raises
from tests import TestCase
class TestScalarIntegerList(TestCase):
def create_models(self):
class User(self.Base):
__tablename__ = 'user'
id = sa.Column(sa.Integer, primary_key=True)
some_list = sa.Column(ScalarListType(int))
def __repr__(self):
return 'User(%r)' % self.id
self.User = User
def test_save_integer_list(self):
user = self.User(
some_list=[1, 2, 3, 4]
)
self.session.add(user)
self.session.commit()
user = self.session.query(self.User).first()
assert user.some_list == [1, 2, 3, 4]
class TestScalarUnicodeList(TestCase):
def create_models(self):
class User(self.Base):
__tablename__ = 'user'
id = sa.Column(sa.Integer, primary_key=True)
some_list = sa.Column(ScalarListType(six.text_type))
def __repr__(self):
return 'User(%r)' % self.id
self.User = User
def test_throws_exception_if_using_separator_in_list_values(self):
user = self.User(
some_list=[u',']
)
self.session.add(user)
with raises(sa.exc.StatementError):
self.session.commit()
def test_save_unicode_list(self):
user = self.User(
some_list=[u'1', u'2', u'3', u'4']
)
self.session.add(user)
self.session.commit()
user = self.session.query(self.User).first()
assert user.some_list == [u'1', u'2', u'3', u'4']
def test_save_and_retrieve_empty_list(self):
user = self.User(
some_list=[]
)
self.session.add(user)
self.session.commit()
user = self.session.query(self.User).first()
assert user.some_list == []