Skip to content

Commit a078a44

Browse files
author
Kareem Zidane
committed
Move common tests to SQLTests
1 parent a06139d commit a078a44

File tree

1 file changed

+56
-55
lines changed

1 file changed

+56
-55
lines changed

tests/sql.py

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def test_delete_returns_affected_rows(self):
2727
def test_insert_returns_last_row_id(self):
2828
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('foo')"), 1)
2929
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('bar')"), 2)
30+
self.assertEqual(self.db.execute("INSERT INTO cs50(val) VALUES('qux')"), 3)
3031

3132
def test_select_all(self):
3233
self.assertEqual(self.db.execute("SELECT * FROM cs50"), [])
@@ -131,55 +132,13 @@ def test_rollback(self):
131132
def test_identifier_case(self):
132133
self.assertIn("count", self.db.execute("SELECT 1 AS count")[0])
133134

134-
def tearDown(self):
135-
self.db.execute("DROP TABLE IF EXISTS cs50")
136-
self.db.execute("DROP TABLE IF EXISTS foo")
137-
self.db.execute("DROP TABLE IF EXISTS bar")
138-
139-
class MySQLTests(SQLTests):
140-
@classmethod
141-
def setUpClass(self):
142-
self.db = SQL("mysql://[email protected]/test")
143-
144-
def setUp(self):
145-
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER NOT NULL AUTO_INCREMENT, val VARCHAR(16), bin BLOB, PRIMARY KEY (id))")
146-
self.db.execute("DELETE FROM cs50")
147-
148-
class PostgresTests(SQLTests):
149-
@classmethod
150-
def setUpClass(self):
151-
self.db = SQL("postgresql://postgres:[email protected]/test")
152-
153-
def setUp(self):
154-
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id SERIAL PRIMARY KEY, val VARCHAR(16), bin BYTEA)")
155-
self.db.execute("DELETE FROM cs50")
156-
157-
def test_cte(self):
158-
self.assertEqual(self.db.execute("WITH foo AS ( SELECT 1 AS bar ) SELECT bar FROM foo"), [{"bar": 1}])
159-
160-
def test_postgres_scheme(self):
161-
db = SQL("postgres://postgres:[email protected]/test")
162-
db.execute("SELECT 1")
163-
164-
class SQLiteTests(SQLTests):
165-
@classmethod
166-
def setUpClass(self):
167-
open("test.db", "w").close()
168-
self.db = SQL("sqlite:///test.db")
169-
170-
def setUp(self):
171-
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER PRIMARY KEY, val TEXT, bin BLOB)")
172-
self.db.execute("DELETE FROM cs50")
173-
174-
def test_lastrowid(self):
175-
self.db.execute("CREATE TABLE foo(id INTEGER PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT)")
176-
self.assertEqual(self.db.execute("INSERT INTO foo (firstname, lastname) VALUES('firstname', 'lastname')"), 1)
177-
self.assertRaises(ValueError, self.db.execute, "INSERT INTO foo (id, firstname, lastname) VALUES(1, 'firstname', 'lastname')")
178-
self.assertEqual(self.db.execute("INSERT OR IGNORE INTO foo (id, firstname, lastname) VALUES(1, 'firstname', 'lastname')"), None)
135+
def test_none(self):
136+
self.db.execute("CREATE TABLE foo (val INTEGER)")
137+
self.db.execute("SELECT * FROM foo WHERE val = ?", None)
179138

180139
def test_integrity_constraints(self):
181140
self.db.execute("CREATE TABLE foo(id INTEGER PRIMARY KEY)")
182-
self.assertEqual(self.db.execute("INSERT INTO foo VALUES(1)"), 1)
141+
self.db.execute("INSERT INTO foo VALUES(1)")
183142
self.assertRaises(ValueError, self.db.execute, "INSERT INTO foo VALUES(1)")
184143

185144
def test_foreign_key_support(self):
@@ -188,7 +147,7 @@ def test_foreign_key_support(self):
188147
self.assertRaises(ValueError, self.db.execute, "INSERT INTO bar VALUES(50)")
189148

190149
def test_qmark(self):
191-
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
150+
self.db.execute("CREATE TABLE foo (firstname VARCHAR(255), lastname VARCHAR(255))")
192151

193152
self.db.execute("INSERT INTO foo VALUES (?, 'bar')", "baz")
194153
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
@@ -218,7 +177,7 @@ def test_qmark(self):
218177
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
219178
self.db.execute("DELETE FROM foo")
220179

221-
self.db.execute("CREATE TABLE bar (firstname STRING)")
180+
self.db.execute("CREATE TABLE bar (firstname VARCHAR(255))")
222181

223182
self.db.execute("INSERT INTO bar VALUES (?)", "baz")
224183
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
@@ -242,7 +201,7 @@ def test_qmark(self):
242201
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (?, ?)", 'bar', baz='baz')
243202

244203
def test_named(self):
245-
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
204+
self.db.execute("CREATE TABLE foo (firstname VARCHAR(255), lastname VARCHAR(255))")
246205

247206
self.db.execute("INSERT INTO foo VALUES (:baz, 'bar')", baz="baz")
248207
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
@@ -264,7 +223,7 @@ def test_named(self):
264223
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
265224
self.db.execute("DELETE FROM foo")
266225

267-
self.db.execute("CREATE TABLE bar (firstname STRING)")
226+
self.db.execute("CREATE TABLE bar (firstname VARCHAR(255))")
268227
self.db.execute("INSERT INTO bar VALUES (:baz)", baz="baz")
269228
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
270229

@@ -274,7 +233,7 @@ def test_named(self):
274233
self.assertRaises(RuntimeError, self.db.execute, "INSERT INTO foo VALUES (:bar, :baz)", 'baz', bar='bar')
275234

276235
def test_numeric(self):
277-
self.db.execute("CREATE TABLE foo (firstname STRING, lastname STRING)")
236+
self.db.execute("CREATE TABLE foo (firstname VARCHAR(255), lastname VARCHAR(255))")
278237

279238
self.db.execute("INSERT INTO foo VALUES (:1, 'bar')", "baz")
280239
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "baz", "lastname": "bar"}])
@@ -296,7 +255,7 @@ def test_numeric(self):
296255
self.assertEqual(self.db.execute("SELECT * FROM foo"), [{"firstname": "bar", "lastname": "baz"}])
297256
self.db.execute("DELETE FROM foo")
298257

299-
self.db.execute("CREATE TABLE bar (firstname STRING)")
258+
self.db.execute("CREATE TABLE bar (firstname VARCHAR(255))")
300259
self.db.execute("INSERT INTO bar VALUES (:1)", "baz")
301260
self.assertEqual(self.db.execute("SELECT * FROM bar"), [{"firstname": "baz"}])
302261

@@ -308,9 +267,51 @@ def test_numeric(self):
308267
def test_cte(self):
309268
self.assertEqual(self.db.execute("WITH foo AS ( SELECT 1 AS bar ) SELECT bar FROM foo"), [{"bar": 1}])
310269

311-
def test_none(self):
312-
self.db.execute("CREATE TABLE foo (val INTEGER)")
313-
self.db.execute("SELECT * FROM foo WHERE val = ?", None)
270+
def tearDown(self):
271+
self.db.execute("DROP TABLE IF EXISTS cs50")
272+
self.db.execute("DROP TABLE IF EXISTS bar")
273+
self.db.execute("DROP TABLE IF EXISTS foo")
274+
275+
class MySQLTests(SQLTests):
276+
@classmethod
277+
def setUpClass(self):
278+
self.db = SQL("mysql://[email protected]/test")
279+
280+
def setUp(self):
281+
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER NOT NULL AUTO_INCREMENT, val VARCHAR(16), bin BLOB, PRIMARY KEY (id))")
282+
self.db.execute("DELETE FROM cs50")
283+
284+
class PostgresTests(SQLTests):
285+
@classmethod
286+
def setUpClass(self):
287+
self.db = SQL("postgresql://postgres:[email protected]/test")
288+
289+
def setUp(self):
290+
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id SERIAL PRIMARY KEY, val VARCHAR(16), bin BYTEA)")
291+
self.db.execute("DELETE FROM cs50")
292+
293+
def test_cte(self):
294+
self.assertEqual(self.db.execute("WITH foo AS ( SELECT 1 AS bar ) SELECT bar FROM foo"), [{"bar": 1}])
295+
296+
def test_postgres_scheme(self):
297+
db = SQL("postgres://postgres:[email protected]/test")
298+
db.execute("SELECT 1")
299+
300+
class SQLiteTests(SQLTests):
301+
@classmethod
302+
def setUpClass(self):
303+
open("test.db", "w").close()
304+
self.db = SQL("sqlite:///test.db")
305+
306+
def setUp(self):
307+
self.db.execute("CREATE TABLE IF NOT EXISTS cs50 (id INTEGER PRIMARY KEY, val TEXT, bin BLOB)")
308+
self.db.execute("DELETE FROM cs50")
309+
310+
def test_lastrowid(self):
311+
self.db.execute("CREATE TABLE foo(id INTEGER PRIMARY KEY AUTOINCREMENT, firstname TEXT, lastname TEXT)")
312+
self.assertEqual(self.db.execute("INSERT INTO foo (firstname, lastname) VALUES('firstname', 'lastname')"), 1)
313+
self.assertRaises(ValueError, self.db.execute, "INSERT INTO foo (id, firstname, lastname) VALUES(1, 'firstname', 'lastname')")
314+
self.assertEqual(self.db.execute("INSERT OR IGNORE INTO foo (id, firstname, lastname) VALUES(1, 'firstname', 'lastname')"), None)
314315

315316
if __name__ == "__main__":
316317
suite = unittest.TestSuite([

0 commit comments

Comments
 (0)