Test para in

This commit is contained in:
2014-11-26 10:32:51 +01:00
parent d920c773d3
commit f202bb8915
2 changed files with 14 additions and 7 deletions

View File

@@ -1,3 +1,4 @@
from __future__ import unicode_literals
import datetime
import copy
@@ -100,7 +101,7 @@ class Q(QMixin):
def _get_value(self, value):
if isinstance(value, int) or isinstance(value, float):
return str(value)
return unicode(value)
if isinstance(value, datetime.datetime):
return "'%s'" % value.strftime("%Y-%m-%d %H:%M:%S")
@@ -111,8 +112,8 @@ class Q(QMixin):
if isinstance(value, list) or isinstance(value, set):
return ", ".join([self._get_value(item) for item in value])
if isinstance(value, F):
return value
if isinstance(value, F) or isinstance(value, QMixin) or isinstance(value, SQLQuery):
return unicode(value)
return "'%s'" % value
@@ -212,7 +213,7 @@ class SQLQuery(object):
clone._order_by = args
return clone
def group_by(clone, *args):
def group_by(self, *args):
clone = self._clone()
clone._group_by = args
return clone
@@ -253,7 +254,7 @@ class SQLCompiler(object):
def get_where(self):
filters = self._filters & ~self._excludes
if filters:
return "WHERE " + str(filters)
return "WHERE " + unicode(filters)
def get_order_by(self,):
conds = []

View File

@@ -68,10 +68,16 @@ class TestSqlBuilder(unittest.TestCase):
str(sql), "SELECT * FROM users WHERE (name in ('jose', 'andres'))")
sql = Queryset("users")
sql = sql.filter(year__in=[2012, 2014, "jose"])
sql = sql.filter(year__in=[2012, 2014, u"José"])
self.assertEqual(
str(sql), "SELECT * FROM users WHERE (year in (2012, 2014, 'jose'))")
unicode(sql), u"SELECT * FROM users WHERE (year in (2012, 2014, 'José'))")
user = Queryset("users").filter(id=100).values("id")
self.assertEqual(str(user), "SELECT id FROM users WHERE (id=100)")
invoices = Queryset("invoices").filter(user_id__in=user)
self.assertEqual(
str(invoices), "SELECT * FROM invoices WHERE (user_id in (SELECT id FROM users WHERE (id=100)))")
if __name__ == '__main__':
unittest.main()