-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathtest_aliases.py
More file actions
49 lines (39 loc) · 1.54 KB
/
Copy pathtest_aliases.py
File metadata and controls
49 lines (39 loc) · 1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from sqlobject import SQLObject, StringCol
from sqlobject.sqlbuilder import Alias, LEFTJOINOn
from sqlobject.tests.dbtest import setupClass
########################################
# Table aliases and self-joins
########################################
class JoinAlias(SQLObject):
name = StringCol()
parent = StringCol()
def test_1syntax():
setupClass(JoinAlias)
alias = Alias(JoinAlias)
select = JoinAlias.select(JoinAlias.q.parent == alias.q.name)
assert str(select) == \
"SELECT join_alias.id, join_alias.name, join_alias.parent " \
"FROM join_alias, join_alias join_alias_alias1 " \
"WHERE ((join_alias.parent) = (join_alias_alias1.name))"
def test_2perform_join():
setupClass(JoinAlias)
JoinAlias(name="grandparent", parent=None)
JoinAlias(name="parent", parent="grandparent")
JoinAlias(name="child", parent="parent")
alias = Alias(JoinAlias)
select = JoinAlias.select(JoinAlias.q.parent == alias.q.name)
assert select.count() == 2
def test_3joins():
setupClass(JoinAlias)
alias = Alias(JoinAlias)
select = JoinAlias.select(
(JoinAlias.q.name == 'a') & (alias.q.name == 'b'),
join=LEFTJOINOn(None, alias, alias.q.name == 'c')
)
assert str(select) == \
"SELECT join_alias.id, join_alias.name, join_alias.parent " \
"FROM join_alias " \
"LEFT JOIN join_alias join_alias_alias3 " \
"ON ((join_alias_alias3.name) = ('c')) " \
"WHERE (((join_alias.name) = ('a')) AND " \
"((join_alias_alias3.name) = ('b')))"