piccolo 1.7.0__py3-none-any.whl → 1.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  from unittest import TestCase
2
2
 
3
3
  from piccolo.querystring import QueryString
4
+ from tests.base import postgres_only
4
5
 
5
6
 
6
7
  # TODO - add more extensive tests (increased nesting and argument count).
@@ -28,3 +29,138 @@ class TestQueryString(TestCase):
28
29
  def test_querystring_with_no_args(self):
29
30
  qs = QueryString("SELECT name FROM band")
30
31
  self.assertEqual(qs.compile_string(), ("SELECT name FROM band", []))
32
+
33
+
34
+ @postgres_only
35
+ class TestQueryStringOperators(TestCase):
36
+ """
37
+ Make sure basic operations can be used on ``QueryString``.
38
+ """
39
+
40
+ def test_add(self):
41
+ query = QueryString("SELECT price") + 1
42
+ self.assertIsInstance(query, QueryString)
43
+ self.assertEqual(
44
+ query.compile_string(),
45
+ ("SELECT price + $1", [1]),
46
+ )
47
+
48
+ def test_multiply(self):
49
+ query = QueryString("SELECT price") * 2
50
+ self.assertIsInstance(query, QueryString)
51
+ self.assertEqual(
52
+ query.compile_string(),
53
+ ("SELECT price * $1", [2]),
54
+ )
55
+
56
+ def test_divide(self):
57
+ query = QueryString("SELECT price") / 1
58
+ self.assertIsInstance(query, QueryString)
59
+ self.assertEqual(
60
+ query.compile_string(),
61
+ ("SELECT price / $1", [1]),
62
+ )
63
+
64
+ def test_power(self):
65
+ query = QueryString("SELECT price") ** 2
66
+ self.assertIsInstance(query, QueryString)
67
+ self.assertEqual(
68
+ query.compile_string(),
69
+ ("SELECT price ^ $1", [2]),
70
+ )
71
+
72
+ def test_subtract(self):
73
+ query = QueryString("SELECT price") - 1
74
+ self.assertIsInstance(query, QueryString)
75
+ self.assertEqual(
76
+ query.compile_string(),
77
+ ("SELECT price - $1", [1]),
78
+ )
79
+
80
+ def test_modulus(self):
81
+ query = QueryString("SELECT price") % 1
82
+ self.assertIsInstance(query, QueryString)
83
+ self.assertEqual(
84
+ query.compile_string(),
85
+ ("SELECT price % $1", [1]),
86
+ )
87
+
88
+ def test_like(self):
89
+ query = QueryString("strip(name)").like("Python%")
90
+ self.assertIsInstance(query, QueryString)
91
+ self.assertEqual(
92
+ query.compile_string(),
93
+ ("strip(name) LIKE $1", ["Python%"]),
94
+ )
95
+
96
+ def test_ilike(self):
97
+ query = QueryString("strip(name)").ilike("Python%")
98
+ self.assertIsInstance(query, QueryString)
99
+ self.assertEqual(
100
+ query.compile_string(),
101
+ ("strip(name) ILIKE $1", ["Python%"]),
102
+ )
103
+
104
+ def test_greater_than(self):
105
+ query = QueryString("SELECT price") > 10
106
+ self.assertIsInstance(query, QueryString)
107
+ self.assertEqual(
108
+ query.compile_string(),
109
+ ("SELECT price > $1", [10]),
110
+ )
111
+
112
+ def test_greater_equal_than(self):
113
+ query = QueryString("SELECT price") >= 10
114
+ self.assertIsInstance(query, QueryString)
115
+ self.assertEqual(
116
+ query.compile_string(),
117
+ ("SELECT price >= $1", [10]),
118
+ )
119
+
120
+ def test_less_than(self):
121
+ query = QueryString("SELECT price") < 10
122
+ self.assertIsInstance(query, QueryString)
123
+ self.assertEqual(
124
+ query.compile_string(),
125
+ ("SELECT price < $1", [10]),
126
+ )
127
+
128
+ def test_less_equal_than(self):
129
+ query = QueryString("SELECT price") <= 10
130
+ self.assertIsInstance(query, QueryString)
131
+ self.assertEqual(
132
+ query.compile_string(),
133
+ ("SELECT price <= $1", [10]),
134
+ )
135
+
136
+ def test_equals(self):
137
+ query = QueryString("SELECT price") == 10
138
+ self.assertIsInstance(query, QueryString)
139
+ self.assertEqual(
140
+ query.compile_string(),
141
+ ("SELECT price = $1", [10]),
142
+ )
143
+
144
+ def test_not_equals(self):
145
+ query = QueryString("SELECT price") != 10
146
+ self.assertIsInstance(query, QueryString)
147
+ self.assertEqual(
148
+ query.compile_string(),
149
+ ("SELECT price != $1", [10]),
150
+ )
151
+
152
+ def test_is_in(self):
153
+ query = QueryString("SELECT price").is_in([10, 20, 30])
154
+ self.assertIsInstance(query, QueryString)
155
+ self.assertEqual(
156
+ query.compile_string(),
157
+ ("SELECT price IN $1", [[10, 20, 30]]),
158
+ )
159
+
160
+ def test_not_in(self):
161
+ query = QueryString("SELECT price").not_in([10, 20, 30])
162
+ self.assertIsInstance(query, QueryString)
163
+ self.assertEqual(
164
+ query.compile_string(),
165
+ ("SELECT price NOT IN $1", [[10, 20, 30]]),
166
+ )