Add tests for literal param processing

This commit is contained in:
Konsta Vesterinen
2016-01-20 15:07:13 +02:00
parent b34c03ca6f
commit 5529a86481
8 changed files with 45 additions and 11 deletions

View File

@@ -24,7 +24,6 @@ def init_models(Document):
@pytest.mark.skipif('types.color.python_colour_type is None')
class TestColorType(object):
def test_string_parameter_processing(self, session, Document):
from colour import Color
@@ -44,10 +43,7 @@ class TestColorType(object):
def test_color_parameter_processing(self, session, Document):
from colour import Color
document = Document(
bg_color=Color(u'white')
)
document = Document(bg_color=Color(u'white'))
session.add(document)
session.commit()
@@ -58,5 +54,9 @@ class TestColorType(object):
from colour import Color
document = Document(bg_color='white')
assert isinstance(document.bg_color, Color)
def test_literal_param(self, session, Document):
clause = Document.bg_color == 'white'
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == "document.bg_color = 'white'"

View File

@@ -38,3 +38,8 @@ class TestCountryType(object):
def test_scalar_attributes_get_coerced_to_objects(self, User):
user = User(country='FI')
assert isinstance(user.country, Country)
def test_literal_param(self, session, User):
clause = User.country == 'FI'
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == '"user".country = \'FI\''

View File

@@ -49,3 +49,8 @@ class TestCurrencyType(object):
):
user = User(currency='USD')
assert isinstance(user.currency, Currency)
def test_literal_param(self, session, User):
clause = User.currency == 'USD'
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == '"user".currency = \'USD\''

View File

@@ -115,3 +115,11 @@ class TestDateRangeOnPostgres(object):
session.query(Booking.during.length)
)
assert query.scalar() == length
def test_literal_param(self, session, Booking):
clause = Booking.during == [
datetime(2015, 1, 1).date(),
datetime(2015, 1, 3).date()
]
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == "booking.during = '[2015-01-01, 2015-01-03]'"

View File

@@ -17,14 +17,16 @@ def User(Base):
class TestEmailType(object):
def test_saves_email_as_lowercased(self, session, User):
user = User(
email=u'Someone@example.com'
)
user = User(email=u'Someone@example.com')
session.add(user)
session.commit()
user = session.query(User).first()
assert user.email == u'someone@example.com'
def test_literal_param(self, session, User):
clause = User.email == 'Someone@example.com'
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == '"user".email = lower(\'Someone@example.com\')'

View File

@@ -106,7 +106,6 @@ class NumberRangeTestCase(object):
@pytest.mark.usefixtures('postgresql_dsn')
class TestIntRangeTypeOnPostgres(NumberRangeTestCase):
@pytest.mark.parametrize(
'number_range',
(
@@ -391,6 +390,11 @@ class TestIntRangeTypeOnPostgres(NumberRangeTestCase):
)
assert query.count()
def test_literal_param(self, session, Building):
clause = Building.persons_at_night == [1, 3]
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == "building.persons_at_night = '[1, 3]'"
class TestNumberRangeTypeOnSqlite(NumberRangeTestCase):
pass

View File

@@ -55,3 +55,8 @@ class TestLocaleType(object):
def test_unknown_locale_throws_exception(self, User):
with pytest.raises(locale.babel.UnknownLocaleError):
User(locale=u'unknown')
def test_literal_param(self, session, User):
clause = User.locale == 'en_US'
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == '"user".locale = \'en_US\''

View File

@@ -116,6 +116,11 @@ class TestNumericRangeOnPostgres(NumericRangeTestCase):
)
assert query.scalar() == length
def test_literal_param(self, session, Car):
clause = Car.price_range == [1, 3]
compiled = str(clause.compile(compile_kwargs={'literal_binds': True}))
assert compiled == "car.price_range = '[1, 3]'"
@pytest.mark.skipif('intervals is None')
class TestNumericRangeWithStep(object):