diff --git a/app/config.py b/app/config.py index 81722b7..6f1126e 100644 --- a/app/config.py +++ b/app/config.py @@ -85,6 +85,19 @@ class Settings(BaseSettings): @computed_field @property def test_asyncpg_url(self) -> PostgresDsn: + """ + This is a computed field that generates a PostgresDsn URL for the test database using asyncpg. + + The URL is built using the MultiHostUrl.build method, which takes the following parameters: + - scheme: The scheme of the URL. In this case, it is "postgresql+asyncpg". + - username: The username for the Postgres database, retrieved from the POSTGRES_USER environment variable. + - password: The password for the Postgres database, retrieved from the POSTGRES_PASSWORD environment variable. + - host: The host of the Postgres database, retrieved from the POSTGRES_HOST environment variable. + - path: The path of the Postgres test database, retrieved from the POSTGRES_TEST_DB environment variable. + + Returns: + PostgresDsn: The constructed PostgresDsn URL for the test database with asyncpg. + """ return MultiHostUrl.build( scheme="postgresql+asyncpg", username=self.POSTGRES_USER, @@ -93,6 +106,7 @@ class Settings(BaseSettings): path=self.POSTGRES_TEST_DB, ) + @computed_field @property def postgres_url(self) -> PostgresDsn: diff --git a/tests/conftest.py b/tests/conftest.py index 21df394..8d5b600 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -35,8 +35,9 @@ def _create_db(conn) -> None: def _create_db_schema(conn) -> None: """Create a database schema if it doesn't exist.""" try: - conn.execute(text("CREATE SCHEMA happy_hog")) - conn.execute(text("CREATE SCHEMA shakespeare")) + """Create a database schema if it doesn't exist.""" + conn.execute(text("CREATE SCHEMA IF NOT EXISTS happy_hog")) + conn.execute(text("CREATE SCHEMA IF NOT EXISTS shakespeare")) except ProgrammingError: # This might be raised by databases that don't support `IF NOT EXISTS` # and the schema already exists. You can choose to ignore it. @@ -54,7 +55,6 @@ async def start_db(): # Now, connect to the newly created `testdb` with `test_engine` async with test_engine.begin() as conn: - await conn.run_sync(_create_db_schema) await conn.run_sync(Base.metadata.drop_all) await conn.run_sync(Base.metadata.create_all)