Skip to content

Commit 5823703

Browse files
committed
Add tests
1 parent 466e85c commit 5823703

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

tests/test_lazy.py

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import os
2+
import sys
3+
import sqlite3
4+
import unittest
5+
import lazysql
6+
from lazysql import LazySql
7+
8+
9+
class TestLazySql(unittest.TestCase):
10+
11+
def setUp(self):
12+
if 'lazysql_test.db' in os.listdir():
13+
exit('lazysql_test.db already exists in current working directory.\nDelete the current instance or pick another directory to run test.')
14+
os.system('touch lazysql_test.db')
15+
16+
with sqlite3.connect('lazysql_test.db') as conn:
17+
cur = conn.cursor()
18+
cur.execute("""CREATE TABLE test(
19+
id INTEGER PRIMARY KEY,
20+
_str STRING NOT NULL,
21+
_int INTEGER NOT NULL,
22+
_float FLOAT NOT NULL);""")
23+
conn.commit()
24+
for i in range(0, 10):
25+
cur.execute(
26+
f"INSERT INTO test(_str, _int, _float) VALUES('test{i}', {i}, {i+0.5});")
27+
conn.commit()
28+
self.db = LazySql(sqlite3, 'lazysql_test.db')
29+
print('Setup complete, starting tests...')
30+
31+
def tearDown(self):
32+
try:
33+
os.system('rm -rf lazysql_test.db')
34+
return True
35+
except Exception as e:
36+
print(e)
37+
return False
38+
39+
def test_read(self):
40+
res = self.db.query("SELECT * FROM test WHERE _str='test1';")
41+
data = res[0]
42+
self.assertEqual(data['_str'], 'test1')
43+
self.assertEqual(data['_int'], 1)
44+
self.assertEqual(data['_float'], 1.5)
45+
46+
def test_read_non_existant_data(self):
47+
res = self.db.query("SELECT * FROM test WHERE _str='invalidString';")
48+
self.assertEqual(res, [])
49+
50+
def test_read_invalid_query(self):
51+
res = self.db.query(
52+
"SELECT invalid_table FROM test WHERE _str='test1';")
53+
self.assertEqual(res, False)
54+
55+
def test_write(self):
56+
write_res = self.db.query(
57+
"INSERT INTO test(_str, _int, _float) VALUES('test11', 11, 11.5);", commit=True)
58+
read_res = self.db.query("SELECT * FROM test WHERE _str='test11';")
59+
data = read_res[0]
60+
self.assertEqual(write_res, True)
61+
self.assertEqual(data['_str'], 'test11')
62+
self.assertEqual(data['_int'], 11)
63+
self.assertEqual(data['_float'], 11.5)
64+
65+
def test_async_read(self):
66+
queries = [{"query": f"SELECT * FROM test WHERE _str=?;", "data": [f"test{n}"]}
67+
for n in range(1, 4)]
68+
res = self.db.async_query(queries)
69+
for i, q in enumerate(res):
70+
i += 1
71+
self.assertEqual(q[0]['_str'], f"test{i}")
72+
self.assertEqual(q[0]['_int'], i)
73+
self.assertEqual(q[0]['_float'], i+0.5)
74+
75+
def test_async_read_with_non_existant_data(self):
76+
queries = [{"query": f"SELECT * FROM test WHERE _str=?;", "data": [f"test{n}"]}
77+
for n in range(1, 4)]
78+
# Overwrite to make query2 error
79+
queries[1]['query'] = "SELECT * FROM test WHERE _str=?;"
80+
queries[1]['data'] = ['test11']
81+
query1, query2, query3 = self.db.async_query(queries)
82+
self.assertEqual(query1[0]['_str'], f"test1")
83+
self.assertEqual(query1[0]['_int'], 1)
84+
self.assertEqual(query1[0]['_float'], 1.5)
85+
self.assertEqual(query2, [])
86+
self.assertEqual(query3[0]['_str'], f"test3")
87+
self.assertEqual(query3[0]['_int'], 3)
88+
self.assertEqual(query3[0]['_float'], 3.5)
89+
90+
def test_async_read_with_invalid_query(self):
91+
queries = [{"query": f"SELECT * FROM test WHERE _str=?;", "data": [f"test{n}"]}
92+
for n in range(1, 4)]
93+
# Overwrite to make query2 error
94+
queries[1]['query'] = "SELECT * FROM invalid_table WHERE _str=?;"
95+
query1, query2, query3 = self.db.async_query(queries)
96+
self.assertEqual(query1[0]['_str'], f"test1")
97+
self.assertEqual(query1[0]['_int'], 1)
98+
self.assertEqual(query1[0]['_float'], 1.5)
99+
self.assertEqual(query2, False)
100+
self.assertEqual(query3[0]['_str'], f"test3")
101+
self.assertEqual(query3[0]['_int'], 3)
102+
self.assertEqual(query3[0]['_float'], 3.5)
103+
104+
105+
if __name__ == '__main__':
106+
unittest.main()

0 commit comments

Comments
 (0)