Files
BiblioGame/tests/test_controller.py
2026-02-15 20:53:32 +01:00

149 lines
5.5 KiB
Python

import os
import unittest
from sqlalchemy.exc import NoResultFound
from app.api.actions import install
from app.schema.library import Library, Tag, Book, BookTag, Path, Env
from app.controller import LibraryController
from app.controller.exceptions import LibraryReadException
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
class TestController(unittest.TestCase):
def setUp(self):
os.environ["DEV_URIA_BIBLIOGAME_CONFIG_DB"] = "sqlite:///"
os.environ["DEV_URIA_BIBLIOGAME_DEBUG"] = "false"
self.engine = install()
self.library = LibraryController(engine = self.engine)
self.tags = [
Tag(
name="Foo"
),
Tag(
name="Bar"
)
]
self.library.create(Library(
name="Library Test",
notes="My duckling library test",
paths=[
Path(
path="/home/ivan/Documentos/ttprpg"
)
],
envs=[
Env(
key="ENVIRONMENT_VARIABLE",
value="Clearly an environment variable"
)
],
books=[
Book(
name="Test book",
tags=[
BookTag(
tag=self.tags[0]
)
]
),
],
tags=self.tags
))
return super().setUp()
def test_install(self):
library = LibraryController(1, engine=self.engine)
library_string = str(library.data)
self.assertEqual(library_string, str(self.library.data))
def test_read_name(self):
library = LibraryController(1, engine=self.engine)
logger.debug(f"Name: {library.data.name}")
self.assertEqual(library.data.name, self.library.data.name)
self.assertEqual(library.data.name, "Library Test")
def test_read_notes(self):
library = LibraryController(1, engine=self.engine)
logger.debug(f"Notes: {library.data.notes}")
self.assertEqual(library.data.notes, self.library.data.notes)
self.assertEqual(library.data.notes, "My duckling library test")
def test_read_path(self):
library = LibraryController(1, engine=self.engine)
logger.debug(f"PATH: {library.data.paths[0].path}")
self.assertEqual(library.data.paths[0].path, self.library.data.paths[0].path)
self.assertEqual(library.data.paths[0].path, "/home/ivan/Documentos/ttprpg")
def test_read_env(self):
library = LibraryController(1, engine=self.engine)
logger.debug(f"ENV: {library.data.envs[0].key} - {library.data.envs[0].value}")
self.assertEqual(library.data.envs[0].key, self.library.data.envs[0].key)
self.assertEqual(library.data.envs[0].value, self.library.data.envs[0].value)
self.assertEqual(library.data.envs[0].key, "ENVIRONMENT_VARIABLE")
self.assertEqual(library.data.envs[0].value, "Clearly an environment variable")
def test_read_book(self):
library = LibraryController(1, engine=self.engine)
book = library.data.books[0]
logger.debug(f"BOOK: {book}")
self.assertEqual(book.name, self.library.data.books[0].name)
self.assertEqual(book.name, "Test book")
def test_read_tags(self):
library = LibraryController(1, engine=self.engine)
tags = library.data.tags
self.assertEqual(str(tags), str(self.library.data.tags))
self.assertEqual(str(tags[0]), str(self.tags[0]))
self.assertEqual(tags[0].name, self.tags[0].name)
self.assertEqual(tags[0].name, "Foo")
self.assertEqual(str(tags[1]), str(self.tags[1]))
self.assertEqual(tags[1].name, self.tags[1].name)
self.assertEqual(tags[1].name, "Bar")
def test_read_book_tags(self):
library = LibraryController(1, engine=self.engine)
book = library.data.books[0]
tags = library.data.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(tags[0]))
self.assertEqual(book.tags[0].tag.name, tags[0].name)
self.assertEqual(book.tags[0].tag.name, "Foo")
self.assertNotEqual(book.tags[0].tag.name, "Bar")
def test_update_name(self):
library = LibraryController(1, engine=self.engine)
library.data.name = "Another Library"
library.update()
library1 = LibraryController(1, engine=self.engine)
self.assertEqual(library1.data.name, self.library.data.name)
self.assertNotEqual(library1.data.name, "Library Test")
self.assertEqual(library1.data.name, "Another Library")
def test_update_name(self):
library = LibraryController(1, engine=self.engine)
library.data.books[0].name = "Another Book on the shelf"
library.update()
library1 = LibraryController(1, engine=self.engine)
book = library1.data.books[0]
self.assertEqual(book.name, self.library.data.books[0].name)
self.assertNotEqual(book.name, "Test book")
self.assertEqual(book.name, "Another Book on the shelf")
def test_delete_library(self):
library = LibraryController(1, engine=self.engine)
library.delete()
self.assertRaises(LibraryReadException, LibraryController, 1, engine=self.engine)
if __name__ == "__main__":
unittest.main()