Refactoring DbEngine
This commit is contained in:
89
tests/test_repositories_db_manager.py
Normal file
89
tests/test_repositories_db_manager.py
Normal file
@@ -0,0 +1,89 @@
|
||||
import pytest
|
||||
|
||||
from components.addstuff.settings import RepositoriesDbManager, RepositoriesSettings, Repository, \
|
||||
REPOSITORIES_SETTINGS_ENTRY
|
||||
from core.settings_management import SettingsManager, MemoryDbEngine
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def settings_manager():
|
||||
return SettingsManager(MemoryDbEngine())
|
||||
|
||||
@pytest.fixture
|
||||
def db(session, settings_manager):
|
||||
return RepositoriesDbManager(session, settings_manager)
|
||||
|
||||
def test_add_new_repository(db, settings_manager):
|
||||
"""Test adding a new repository with valid data."""
|
||||
db.add_repository("NewRepo", ["Table1", "Table2"])
|
||||
|
||||
settings = settings_manager.get(db.session, REPOSITORIES_SETTINGS_ENTRY)
|
||||
assert len(settings.repositories) == 1
|
||||
assert settings.repositories[0].name == "NewRepo"
|
||||
assert settings.repositories[0].tables == ["Table1", "Table2"]
|
||||
|
||||
|
||||
def test_add_repository_duplicate_name(db, settings_manager):
|
||||
"""Test adding a repository with an existing name."""
|
||||
settings = RepositoriesSettings()
|
||||
settings.repositories.append(Repository(name="ExistingRepo", tables=[]))
|
||||
settings_manager.put(db.session, REPOSITORIES_SETTINGS_ENTRY, settings)
|
||||
|
||||
with pytest.raises(ValueError, match="Repository 'ExistingRepo' already exists."):
|
||||
db.add_repository("ExistingRepo")
|
||||
|
||||
|
||||
def test_add_repository_empty_name(db):
|
||||
"""Test adding a repository with an empty name."""
|
||||
with pytest.raises(ValueError, match="Repository name cannot be empty."):
|
||||
db.add_repository("")
|
||||
|
||||
|
||||
def test_add_repository_none_name(db):
|
||||
"""Test adding a repository with a None name."""
|
||||
with pytest.raises(ValueError, match="Repository name cannot be empty."):
|
||||
db.add_repository(None)
|
||||
|
||||
|
||||
def test_add_repository_no_tables(db, settings_manager):
|
||||
"""Test adding a repository without specifying tables."""
|
||||
db.add_repository("RepoWithoutTables")
|
||||
|
||||
settings = settings_manager.get(db.session, "Repositories")
|
||||
assert len(settings.repositories) == 1
|
||||
assert settings.repositories[0].name == "RepoWithoutTables"
|
||||
assert settings.repositories[0].tables == []
|
||||
|
||||
def test_get_existing_repository(db, settings_manager):
|
||||
"""Test retrieving an existing repository."""
|
||||
# Pre-populate settings with a repository
|
||||
settings = RepositoriesSettings()
|
||||
repo = Repository(name="ExistingRepo", tables=["Table1"])
|
||||
settings.repositories.append(repo)
|
||||
settings_manager.put(db.session, "Repositories", settings)
|
||||
|
||||
# Retrieve the repository
|
||||
retrieved_repo = db.get_repository("ExistingRepo")
|
||||
|
||||
# Verify the repository is correctly returned
|
||||
assert retrieved_repo.name == "ExistingRepo"
|
||||
assert retrieved_repo.tables == ["Table1"]
|
||||
|
||||
|
||||
def test_get_repository_not_found(db):
|
||||
"""Test retrieving a repository that does not exist."""
|
||||
with pytest.raises(ValueError, match="Repository 'NonExistentRepo' does not exists."):
|
||||
db.get_repository("NonExistentRepo")
|
||||
|
||||
|
||||
def test_get_repository_empty_name(db):
|
||||
"""Test retrieving a repository with an empty name."""
|
||||
with pytest.raises(ValueError, match="Repository name cannot be empty."):
|
||||
db.get_repository("")
|
||||
|
||||
|
||||
def test_get_repository_none_name(db):
|
||||
"""Test retrieving a repository with a None name."""
|
||||
with pytest.raises(ValueError, match="Repository name cannot be empty."):
|
||||
db.get_repository(None)
|
||||
|
||||
Reference in New Issue
Block a user