Files
DeletedPosts/Bot/sqlitewrapper/tests.py

84 lines
2.2 KiB
Python
Raw Normal View History

2026-02-23 22:48:25 +00:00
# mypy: disable-error-code=attr-defined
import unittest
import os
from pathlib import Path
from .model import (
Row,
Model,
Datatype
)
class TestRow(unittest.TestCase):
def setUp(self) -> None:
return super().setUp()
def tearDown(self) -> None:
return super().tearDown()
def test_init(self) -> None:
name, age = 'Mary', 14
row = Row(name=name, age=age)
result = row.values()
self.assertEqual(result, (name, age))
class TestModel(unittest.TestCase):
def setUp(self) -> None:
self.base_dir = Path(__file__).parent
self.name = 'testdb'
self.db = Model(
self.name,
self.base_dir,
name=Datatype.STR,
age=Datatype.INT,
)
self.db.init()
return super().setUp()
def tearDown(self) -> None:
os.remove(self.db.path)
return super().tearDown()
def test_init(self) -> None:
self.assertTrue(os.path.exists(self.db.path))
def test_save(self) -> None:
name, age = 'John', 14
self.db.save(Row(name=name, age=age))
self.db.get(name=name, age=age) # This must not raise an Exception
with self.assertRaises(ValueError):
self.db.save(Row(name='test'))
def test_delete(self) -> None:
name, age = 'John', 14
self.db.save(Row(name=name, age=age))
self.db.delete(name=name, age=age)
self.assertEqual(len(tuple(self.db.fetch_all())), 0)
def test_edit(self) -> None:
name, age = 'John', 14
self.db.save(Row(name=name, age=age))
r = self.db.get(name=name, age=age)
r.name = 'Mary'
self.db.edit(r)
self.assertEqual(len(tuple(self.db.fetch_all())), 1)
self.db.get(name='Mary', age=age) # This should not raise an exception
def test_filter(self) -> None:
data = (
('John', 14),
('Mary', 14),
('Mary', 15),
)
for i in data:
self.db.save(Row(name=i[0], age=i[1]))
age = 14
filtered = self.db.filter(age=age)
data = list(filtered) # type: ignore
self.assertTrue(all(i.age == age for i in data)) # type: ignore
self.assertEqual(len(data), 2)