Files
MetaORM/tests/test_settings.py

48 lines
1.4 KiB
Python

import pytest
from pydantic import ValidationError
from metaorm import RepositorySettings
class TestRepositorySettings:
def test_default_values(self) -> None:
settings = RepositorySettings()
assert settings.dsn == "sqlite+aiosqlite:///db.sqlite3"
assert settings.pool_size == 5
assert settings.pool_recycle == 60
assert settings.pool_timeout == 60
def test_custom_values(self) -> None:
settings = RepositorySettings(
dsn="postgresql+asyncpg://user:pass@localhost/db",
pool_size=10,
pool_recycle=120,
pool_timeout=30,
)
assert settings.dsn == "postgresql+asyncpg://user:pass@localhost/db"
assert settings.pool_size == 10
assert settings.pool_recycle == 120
assert settings.pool_timeout == 30
def test_dsn_must_match_pattern(self) -> None:
with pytest.raises(ValidationError):
RepositorySettings(dsn="invalid_dsn")
@pytest.mark.parametrize(
"field_name,invalid_value",
[
("pool_size", 0),
("pool_recycle", 0),
("pool_timeout", 0),
],
)
def test_integer_fields_must_be_greater_or_equal_one(
self,
field_name: str,
invalid_value: int,
) -> None:
with pytest.raises(ValidationError):
RepositorySettings(**{field_name: invalid_value})