From d23d94da829729317aad9d74530d9e017a861551 Mon Sep 17 00:00:00 2001 From: ksieuk Date: Sun, 8 Oct 2023 16:40:13 +0300 Subject: [PATCH] fix: [#8] get_api to property --- src/template/lib/app/settings.py | 2 ++ src/template/tests/conftest.py | 4 ++-- src/template/tests/core/split_settings/api.py | 7 +++++-- src/template/tests/core/split_settings/utils.py | 2 +- src/template/tests/functional/models/http.py | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/template/lib/app/settings.py b/src/template/lib/app/settings.py index 95e727e..ffe305b 100644 --- a/src/template/lib/app/settings.py +++ b/src/template/lib/app/settings.py @@ -16,3 +16,5 @@ class Settings(pydantic_settings.BaseSettings): project: app_split_settings.ProjectSettings = pydantic.Field( default_factory=lambda: app_split_settings.ProjectSettings() ) + +print(Settings()) diff --git a/src/template/tests/conftest.py b/src/template/tests/conftest.py index 8e2b4b7..59bcfd9 100644 --- a/src/template/tests/conftest.py +++ b/src/template/tests/conftest.py @@ -12,7 +12,7 @@ import tests.functional.models as functional_models @pytest_asyncio.fixture # type: ignore[reportUntypedFunctionDecorator] async def http_client( - base_url: str = tests_core_settings.tests_settings.api.get_api_url(), + base_url: str = tests_core_settings.tests_settings.api.get_api_url, ) -> typing.AsyncGenerator[httpx.AsyncClient, typing.Any]: session = httpx.AsyncClient(base_url=base_url) yield session @@ -56,7 +56,7 @@ def app() -> fastapi.FastAPI: @pytest_asyncio.fixture # type: ignore[reportUntypedFunctionDecorator] async def app_http_client( app: fastapi.FastAPI, - base_url: str = tests_core_settings.tests_settings.api.get_api_url(), + base_url: str = tests_core_settings.tests_settings.api.get_api_url, ) -> typing.AsyncGenerator[httpx.AsyncClient, typing.Any]: session = httpx.AsyncClient(app=app, base_url=base_url) yield session diff --git a/src/template/tests/core/split_settings/api.py b/src/template/tests/core/split_settings/api.py index 25482e3..c35987b 100644 --- a/src/template/tests/core/split_settings/api.py +++ b/src/template/tests/core/split_settings/api.py @@ -1,3 +1,4 @@ +import pydantic import pydantic_settings import lib.app.split_settings.utils as app_split_settings_utils @@ -6,7 +7,7 @@ import lib.app.split_settings.utils as app_split_settings_utils class ApiSettings(pydantic_settings.BaseSettings): model_config = pydantic_settings.SettingsConfigDict( env_file=app_split_settings_utils.ENV_PATH, - env_prefix="API_", + env_prefix="TEST_API_", env_file_encoding="utf-8", extra="ignore", ) @@ -15,5 +16,7 @@ class ApiSettings(pydantic_settings.BaseSettings): host: str = "0.0.0.0" port: int = 8000 - def get_api_url(self): + @pydantic.computed_field + @property + def get_api_url(self) -> str: return f"{self.protocol}://{self.host}:{self.port}/api/v1" diff --git a/src/template/tests/core/split_settings/utils.py b/src/template/tests/core/split_settings/utils.py index 459631e..7339f5d 100644 --- a/src/template/tests/core/split_settings/utils.py +++ b/src/template/tests/core/split_settings/utils.py @@ -1,4 +1,4 @@ import pathlib -BASE_PATH = pathlib.Path(__file__).parent.parent.parent.parent.resolve() +BASE_PATH = pathlib.Path(__file__).parent.parent.parent.parent.parent.resolve() ENV_PATH = BASE_PATH / ".env" diff --git a/src/template/tests/functional/models/http.py b/src/template/tests/functional/models/http.py index b8ab93f..c241ec7 100644 --- a/src/template/tests/functional/models/http.py +++ b/src/template/tests/functional/models/http.py @@ -26,7 +26,7 @@ class MakeResponseCallableType(typing.Protocol): async def __call__( self, api_method: str = "", - url: str = functional_settings.tests_settings.api.get_api_url(), + url: str = functional_settings.tests_settings.api.get_api_url, method: MethodsEnum = MethodsEnum.GET, headers: dict[str, str] = functional_settings.tests_settings.project.headers, body: dict[str, typing.Any] | None = None,