[FEA] Added Conroller for sanity

This commit is contained in:
2026-02-15 08:38:55 +01:00
parent 5f7b4102bc
commit f50a9d0916
4 changed files with 58 additions and 59 deletions

View File

@@ -11,4 +11,5 @@ def create(session:Session, library:Base):
session.commit() session.commit()
logger.debug("Committed Library") logger.debug("Committed Library")
session.refresh(library) session.refresh(library)
logger.debug("Rerfreshed Library") logger.debug("Refreshed Library")
return library

View File

@@ -18,10 +18,14 @@ class LibraryController:
else: else:
self._engine = engine self._engine = engine
self._Session = sessionmaker(bind=self.engine) self._Session = sessionmaker(bind=self.engine)
self._session = self._Session()
self._library = None self._library = None
if library_id is not None: if library_id is not None:
self.read(library_id) self.read(library_id)
def __del__(self):
self.session.close()
@property @property
def data(self): def data(self):
return self._library return self._library
@@ -36,25 +40,20 @@ class LibraryController:
@property @property
def session(self): def session(self):
return self.Session() return self._session
def create(self, library:Library): def create(self, library:Library):
with self.session as session: self._library = create(self.session, library)
self._library = create(session, library)
return self return self
def read(self, _id): def read(self, _id):
with self.session as session: self._library = read(self.session, _id, Library)
self._library = read(session, _id, Library)
return self return self
def update(self): def update(self):
with self.session as session: self.session.commit()
session.commit()
def delete(self): def delete(self):
with self.session as session: delete(self.session, self)
delete(session, self) del(self)
del(self)

View File

@@ -15,7 +15,7 @@ class TestDB(unittest.TestCase):
def setUp(self): def setUp(self):
os.environ["DEV_URIA_BIBLIOGAME_CONFIG_DB"] = "sqlite:///" os.environ["DEV_URIA_BIBLIOGAME_CONFIG_DB"] = "sqlite:///"
os.environ["DEV_URIA_BIBLIOGAME_DEBUG"] = "true" os.environ["DEV_URIA_BIBLIOGAME_DEBUG"] = "false"
self.engine = install() self.engine = install()
self.library = LibraryController(engine = self.engine) self.library = LibraryController(engine = self.engine)
@@ -57,48 +57,47 @@ class TestDB(unittest.TestCase):
return super().setUp() return super().setUp()
def test_install(self): def test_install(self):
library = LibraryController(1, engine = self.engine) library = LibraryController(1, engine=self.engine)
library_string = str(library.data) library_string = str(library.data)
self.assertEqual(library_string, str(self.library.data)) self.assertEqual(library_string, str(self.library.data))
"""
def test_read_name(self): def test_read_name(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
logger.debug(f"Name: {library.name}") logger.debug(f"Name: {library.data.name}")
self.assertEqual(library.name, self.library.name) self.assertEqual(library.data.name, self.library.data.name)
self.assertEqual(library.name, "Library Test") self.assertEqual(library.data.name, "Library Test")
def test_read_notes(self): def test_read_notes(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
logger.debug(f"Notes: {library.notes}") logger.debug(f"Notes: {library.data.notes}")
self.assertEqual(library.notes, self.library.notes) self.assertEqual(library.data.notes, self.library.data.notes)
self.assertEqual(library.notes, "My duckling library test") self.assertEqual(library.data.notes, "My duckling library test")
def test_read_path(self): def test_read_path(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
logger.debug(f"PATH: {library.paths[0].path}") logger.debug(f"PATH: {library.data.paths[0].path}")
self.assertEqual(library.paths[0].path, self.library.paths[0].path) self.assertEqual(library.data.paths[0].path, self.library.data.paths[0].path)
self.assertEqual(library.paths[0].path, "/home/ivan/Documentos/ttprpg") self.assertEqual(library.data.paths[0].path, "/home/ivan/Documentos/ttprpg")
def test_read_env(self): def test_read_env(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
logger.debug(f"ENV: {library.envs[0].key} - {library.envs[0].value}") logger.debug(f"ENV: {library.data.envs[0].key} - {library.data.envs[0].value}")
self.assertEqual(library.envs[0].key, self.library.envs[0].key) self.assertEqual(library.data.envs[0].key, self.library.data.envs[0].key)
self.assertEqual(library.envs[0].value, self.library.envs[0].value) self.assertEqual(library.data.envs[0].value, self.library.data.envs[0].value)
self.assertEqual(library.envs[0].key, "ENVIRONMENT_VARIABLE") self.assertEqual(library.data.envs[0].key, "ENVIRONMENT_VARIABLE")
self.assertEqual(library.envs[0].value, "Clearly an environment variable") self.assertEqual(library.data.envs[0].value, "Clearly an environment variable")
def test_read_book(self): def test_read_book(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
book = library.books[0] book = library.data.books[0]
logger.debug(f"BOOK: {book}") logger.debug(f"BOOK: {book}")
self.assertEqual(book.name, self.library.books[0].name) self.assertEqual(book.name, self.library.data.books[0].name)
self.assertEqual(book.name, "Test book") self.assertEqual(book.name, "Test book")
def test_read_tags(self): def test_read_tags(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
tags = library.tags tags = library.data.tags
self.assertEqual(tags, self.library.tags) self.assertEqual(str(tags), str(self.library.data.tags))
self.assertEqual(tags, self.tags)
self.assertEqual(str(tags[0]), str(self.tags[0])) self.assertEqual(str(tags[0]), str(self.tags[0]))
self.assertEqual(tags[0].name, self.tags[0].name) self.assertEqual(tags[0].name, self.tags[0].name)
self.assertEqual(tags[0].name, "Foo") self.assertEqual(tags[0].name, "Foo")
@@ -107,9 +106,9 @@ class TestDB(unittest.TestCase):
self.assertEqual(tags[1].name, "Bar") self.assertEqual(tags[1].name, "Bar")
def test_read_book_tags(self): def test_read_book_tags(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
book = library.books[0] book = library.data.books[0]
tags = library.tags tags = library.data.tags
logger.debug(f"BOOK TAGS: {book.tags}") logger.debug(f"BOOK TAGS: {book.tags}")
self.assertEqual(str(book.tags[0].tag), str(self.tags[0])) self.assertEqual(str(book.tags[0].tag), str(self.tags[0]))
self.assertEqual(str(book.tags[0].tag), str(tags[0])) self.assertEqual(str(book.tags[0].tag), str(tags[0]))
@@ -118,26 +117,26 @@ class TestDB(unittest.TestCase):
self.assertNotEqual(book.tags[0].tag.name, "Bar") self.assertNotEqual(book.tags[0].tag.name, "Bar")
def test_update_name(self): def test_update_name(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
library.name = "Another Library" library.data.name = "Another Library"
update(self.session, library) library.update()
library1 = read(self.session, 1) library1 = LibraryController(1, engine=self.engine)
self.assertEqual(library1.name, self.library.name) self.assertEqual(library1.data.name, self.library.data.name)
self.assertNotEqual(library1.name, "Library Test") self.assertNotEqual(library1.data.name, "Library Test")
self.assertEqual(library1.name, "Another Library") self.assertEqual(library1.data.name, "Another Library")
def test_update_name(self): def test_update_name(self):
library = read(self.session, 1) library = LibraryController(1, engine=self.engine)
library.books[0].name = "Another Book on the shelf" library.data.books[0].name = "Another Book on the shelf"
update(self.session, library) library.update()
library1 = read(self.session, 1) library1 = LibraryController(1, engine=self.engine)
book = library1.books[0] book = library1.data.books[0]
self.assertEqual(book.name, self.library.books[0].name) self.assertEqual(book.name, self.library.data.books[0].name)
self.assertNotEqual(book.name, "Test book") self.assertNotEqual(book.name, "Test book")
self.assertEqual(book.name, "Another Book on the shelf") self.assertEqual(book.name, "Another Book on the shelf")
"""
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()

View File

@@ -15,7 +15,7 @@ class TestDB(unittest.TestCase):
def setUp(self): def setUp(self):
os.environ["DEV_URIA_BIBLIOGAME_CONFIG_DB"] = "sqlite:///" os.environ["DEV_URIA_BIBLIOGAME_CONFIG_DB"] = "sqlite:///"
os.environ["DEV_URIA_BIBLIOGAME_DEBUG"] = "true" os.environ["DEV_URIA_BIBLIOGAME_DEBUG"] = "false"
self.engine = install() self.engine = install()
self.tags = [ self.tags = [
Tag( Tag(