MIL-001: project foundation #32
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
## @file __init__.py
|
||||||
|
# @brief Root package of the Day 54 Flask lecture project.
|
||||||
|
"""Day 54 Flask lecture project, organised in layers."""
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## @file __init__.py
|
||||||
|
# @brief Application layer: use cases and the ports they need.
|
||||||
|
"""Application layer: use cases and ports."""
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## @file __init__.py
|
||||||
|
# @brief Domain layer: pure rules, no input or output, no framework.
|
||||||
|
"""Domain layer: pure rules with no framework and no input or output."""
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
## @file constants.py
|
||||||
|
# @brief Constants of the domain layer.
|
||||||
|
"""Constants of the domain layer."""
|
||||||
|
|
||||||
|
from typing import Final
|
||||||
|
|
||||||
|
## @brief The greeting shown by the first Flask route.
|
||||||
|
GREETING: Final[str] = "Hello, World!"
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## @file __init__.py
|
||||||
|
# @brief Infrastructure layer: server settings and configuration.
|
||||||
|
"""Infrastructure layer: server settings and configuration."""
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
## @file constants.py
|
||||||
|
# @brief Constants of the infrastructure layer (server settings).
|
||||||
|
"""Server settings used by the entry point."""
|
||||||
|
|
||||||
|
from typing import Final
|
||||||
|
|
||||||
|
## @brief Interface the development server binds to.
|
||||||
|
HOST: Final[str] = "127.0.0.1"
|
||||||
|
|
||||||
|
## @brief TCP port of the development server.
|
||||||
|
PORT: Final[int] = 5000
|
||||||
|
|
||||||
|
## @brief Whether the development server runs in debug mode.
|
||||||
|
DEBUG: Final[bool] = True
|
||||||
|
|
||||||
|
## @brief Dotted module path of the Flask application.
|
||||||
|
APP_MODULE: Final[str] = "flask_day_54.presentation.hello"
|
||||||
|
|
||||||
|
## @brief Name of the environment variable Flask reads to find the application.
|
||||||
|
FLASK_APP_ENV_VAR: Final[str] = "FLASK_APP"
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## @file __init__.py
|
||||||
|
# @brief Presentation layer: entry points, the Flask application.
|
||||||
|
"""Presentation layer: entry points and the Flask application."""
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
## @file test_domain_constants.py
|
||||||
|
# @brief Unit tests for the domain constants.
|
||||||
|
"""Unit tests for the domain constants."""
|
||||||
|
|
||||||
|
from flask_day_54.domain import constants
|
||||||
|
|
||||||
|
|
||||||
|
def test_greeting_has_expected_value() -> None:
|
||||||
|
assert constants.GREETING == "Hello, World!"
|
||||||
|
|
||||||
|
|
||||||
|
def test_greeting_is_not_empty() -> None:
|
||||||
|
assert constants.GREETING.strip() != ""
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
## @file test_infrastructure_constants.py
|
||||||
|
# @brief Unit tests for the infrastructure constants.
|
||||||
|
"""Unit tests for the infrastructure constants."""
|
||||||
|
|
||||||
|
from flask_day_54.infrastructure import constants
|
||||||
|
|
||||||
|
|
||||||
|
def test_host_is_loopback() -> None:
|
||||||
|
assert constants.HOST == "127.0.0.1"
|
||||||
|
|
||||||
|
|
||||||
|
def test_port_is_int_in_unprivileged_range() -> None:
|
||||||
|
assert isinstance(constants.PORT, int)
|
||||||
|
assert 1024 <= constants.PORT <= 65535
|
||||||
|
|
||||||
|
|
||||||
|
def test_port_has_expected_value() -> None:
|
||||||
|
assert constants.PORT == 5000
|
||||||
|
|
||||||
|
|
||||||
|
def test_debug_is_enabled() -> None:
|
||||||
|
assert constants.DEBUG is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_app_module_points_to_presentation_hello() -> None:
|
||||||
|
assert constants.APP_MODULE == "flask_day_54.presentation.hello"
|
||||||
|
|
||||||
|
|
||||||
|
def test_flask_app_env_var_name() -> None:
|
||||||
|
assert constants.FLASK_APP_ENV_VAR == "FLASK_APP"
|
||||||
Reference in new issue
Block a user