Author: phd
Date: Mon Dec 27 09:35:37 2010
New Revision: 4320
Log:
Merged revisions 4318, 4319 from branch 0.14: more tests for SQLBuilder; fixed spaces after commas.
Modified:
SQLObject/branches/0.15/sqlobject/sqlbuilder.py
SQLObject/branches/0.15/sqlobject/tests/test_sqlbuilder.py
Modified: SQLObject/branches/0.15/sqlobject/sqlbuilder.py
==============================================================================
--- SQLObject/branches/0.15/sqlobject/sqlbuilder.py Mon Dec 27 09:33:58 2010 (r4319)
+++ SQLObject/branches/0.15/sqlobject/sqlbuilder.py Mon Dec 27 09:35:37 2010 (r4320)
@@ -412,7 +412,7 @@
class SQLObjectTableWithJoins(SQLObjectTable):
def __getattr__(self, attr):
- if attr+'ID' in [k for (k,v) in self.soClass.sqlmeta.columns.items() if v.foreignKey]:
+ if attr+'ID' in [k for (k, v) in self.soClass.sqlmeta.columns.items() if v.foreignKey]:
column = self.soClass.sqlmeta.columns[attr+'ID']
return self._getattrFromForeignKey(column, attr)
elif attr in [x.joinMethodName for x in self.soClass.sqlmeta.joins]:
@@ -477,7 +477,7 @@
def __init__(self, table, alias=None):
if hasattr(table, "sqlmeta"):
tableName = SQLConstant(table.sqlmeta.table)
- elif isinstance(table, (Select,Union)):
+ elif isinstance(table, (Select, Union)):
assert alias is not None, "Alias name cannot be constructed from Select instances, please provide 'alias' kw."
tableName = Subquery('', table)
table = None
@@ -527,7 +527,7 @@
if isinstance(t, Table):
t = t.tableName
if not isinstance(t, SQLExpression):
- t = SQLConstant(t.sqlmeta.table)
+ t = SQLConstant(t)
tabs.append(t)
self.tables = tabs
@@ -1246,7 +1246,7 @@
self.sqlmeta = _Delay_proxy(table=_DelayClass(self, clsName))
self.q = self
self.soClass = None
- classregistry.registry(registry).addClassCallback(clsName,lambda foreign, me: setattr(me, 'soClass', foreign), self)
+ classregistry.registry(registry).addClassCallback(clsName, lambda foreign, me: setattr(me, 'soClass', foreign), self)
def __nonzero__(self):
return True
Modified: SQLObject/branches/0.15/sqlobject/tests/test_sqlbuilder.py
==============================================================================
--- SQLObject/branches/0.15/sqlobject/tests/test_sqlbuilder.py Mon Dec 27 09:33:58 2010 (r4319)
+++ SQLObject/branches/0.15/sqlobject/tests/test_sqlbuilder.py Mon Dec 27 09:35:37 2010 (r4320)
@@ -1,4 +1,25 @@
-from sqlobject.sqlbuilder import AND, SQLOp, sqlrepr
+from sqlobject import *
+from sqlobject.sqlbuilder import *
+from sqlobject.tests.dbtest import *
+
+class TestSQLBuilder(SQLObject):
+ name = StringCol()
+ value = IntCol()
+
+def test_Select():
+ setupClass(TestSQLBuilder)
+
+ select1 = Select([const.id, func.MAX(const.salary)], staticTables=['employees'])
+ assert sqlrepr(select1) == 'SELECT id, MAX(salary) FROM employees'
+
+ select2 = Select([TestSQLBuilder.q.name, TestSQLBuilder.q.value])
+ assert sqlrepr(select2) == 'SELECT test_sql_builder.name, test_sql_builder.value FROM test_sql_builder'
+
+ union = Union(select1, select2)
+ assert sqlrepr(union) == 'SELECT id, MAX(salary) FROM employees UNION SELECT test_sql_builder.name, test_sql_builder.value FROM test_sql_builder'
+
+ union = Union(TestSQLBuilder.select().queryForSelect())
+ assert sqlrepr(union) == 'SELECT test_sql_builder.id, test_sql_builder.name, test_sql_builder.value FROM test_sql_builder WHERE 1 = 1'
def test_empty_AND():
assert AND() == None
|