Added different queries & unittests
This commit is contained in:
0
src/cpl_query/tests/__init__.py
Normal file
0
src/cpl_query/tests/__init__.py
Normal file
12
src/cpl_query/tests/models.py
Normal file
12
src/cpl_query/tests/models.py
Normal file
@@ -0,0 +1,12 @@
|
||||
class User:
|
||||
|
||||
def __init__(self, name, address):
|
||||
self.name = name
|
||||
self.address = address
|
||||
|
||||
|
||||
class Address:
|
||||
|
||||
def __init__(self, street, nr):
|
||||
self.street = street
|
||||
self.nr = nr
|
111
src/cpl_query/tests/query_test.py
Normal file
111
src/cpl_query/tests/query_test.py
Normal file
@@ -0,0 +1,111 @@
|
||||
import string
|
||||
import unittest
|
||||
from random import randint
|
||||
|
||||
from cpl.utils import String
|
||||
from cpl_query.extension.list import List
|
||||
from cpl_query.tests.models import User, Address
|
||||
|
||||
|
||||
class QueryTest(unittest.TestCase):
|
||||
|
||||
def setUp(self) -> None:
|
||||
self._tests = List()
|
||||
self._t_user = User(
|
||||
'Test user',
|
||||
Address(
|
||||
'teststr.',
|
||||
15
|
||||
)
|
||||
)
|
||||
|
||||
self._generate_test_data()
|
||||
|
||||
def _generate_test_data(self):
|
||||
for i in range(0, 100):
|
||||
user = User(
|
||||
String.random_string(string.ascii_letters, 8),
|
||||
Address(
|
||||
String.random_string(string.ascii_letters, 10),
|
||||
randint(0, 10)
|
||||
)
|
||||
)
|
||||
|
||||
self._tests.append(user)
|
||||
|
||||
self._tests.append(self._t_user)
|
||||
|
||||
def test_any(self):
|
||||
results = []
|
||||
for user in self._tests:
|
||||
if user.address.nr == 10:
|
||||
results.append(user)
|
||||
|
||||
res = self._tests.any(f'User.address.nr == 10')
|
||||
n_res = self._tests.any(f'User.address.nr == 100')
|
||||
|
||||
self.assertTrue(res)
|
||||
self.assertFalse(n_res)
|
||||
|
||||
def test_first(self):
|
||||
results = []
|
||||
for user in self._tests:
|
||||
if user.address.nr == 10:
|
||||
results.append(user)
|
||||
|
||||
res = self._tests.where(f'User.address.nr == 10')
|
||||
s_res = self._tests.where(f'User.address.nr == 10').first()
|
||||
|
||||
self.assertEqual(len(res), len(results))
|
||||
self.assertIsNotNone(s_res)
|
||||
|
||||
def test_first_or_default(self):
|
||||
results = []
|
||||
for user in self._tests:
|
||||
if user.address.nr == 10:
|
||||
results.append(user)
|
||||
|
||||
res = self._tests.where(f'User.address.nr == 10')
|
||||
s_res = self._tests.where(f'User.address.nr == 10').first_or_default()
|
||||
sn_res = self._tests.where(f'User.address.nr == 11').first_or_default()
|
||||
|
||||
self.assertEqual(len(res), len(results))
|
||||
self.assertIsNotNone(s_res)
|
||||
self.assertIsNone(sn_res)
|
||||
|
||||
def test_for_each(self):
|
||||
users = []
|
||||
self._tests.for_each(
|
||||
lambda user: (
|
||||
# Console.write_line(f'User: {user.name} | '),
|
||||
# Console.write(f'Address: {user.address.street}'),
|
||||
users.append(user)
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(len(users), len(self._tests))
|
||||
|
||||
def test_single(self):
|
||||
res = self._tests.where(f'User.address.nr == {self._t_user.address.nr}')
|
||||
s_res = self._tests.where(f'User.address.nr == {self._t_user.address.nr}').single()
|
||||
|
||||
self.assertEqual(len(res), 1)
|
||||
self.assertEqual(self._t_user, s_res)
|
||||
|
||||
def test_single_or_default(self):
|
||||
res = self._tests.where(f'User.address.nr == {self._t_user.address.nr}')
|
||||
s_res = self._tests.where(f'User.address.nr == {self._t_user.address.nr}').single_or_default()
|
||||
sn_res = self._tests.where(f'User.address.nr == {self._t_user.address.nr + 1}').single_or_default()
|
||||
|
||||
self.assertEqual(len(res), 1)
|
||||
self.assertEqual(self._t_user, s_res)
|
||||
self.assertIsNone(sn_res)
|
||||
|
||||
def test_where(self):
|
||||
results = []
|
||||
for user in self._tests:
|
||||
if user.address.nr == 5:
|
||||
results.append(user)
|
||||
|
||||
res = self._tests.where('User.address.nr == 5')
|
||||
self.assertEqual(len(results), len(res))
|
23
src/cpl_query/tests/tester.py
Normal file
23
src/cpl_query/tests/tester.py
Normal file
@@ -0,0 +1,23 @@
|
||||
import unittest
|
||||
|
||||
from cpl_query.tests.query_test import QueryTest
|
||||
|
||||
|
||||
class Tester:
|
||||
|
||||
def __init__(self):
|
||||
self._suite = unittest.TestSuite()
|
||||
|
||||
def create(self):
|
||||
loader = unittest.TestLoader()
|
||||
self._suite.addTests(loader.loadTestsFromTestCase(QueryTest))
|
||||
|
||||
def start(self):
|
||||
runner = unittest.TextTestRunner()
|
||||
runner.run(self._suite)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
tester = Tester()
|
||||
tester.create()
|
||||
tester.start()
|
Reference in New Issue
Block a user