Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions example/config-app/config/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,8 @@

@dataclass
class RedisConfig:
host: str = field(default_factory=lambda: env('REDIS_HOST'))
port: int = field(default_factory=lambda: env('REDIS_PORT'))
db: int = field(default_factory=lambda: env('REDIS_DB'))
host: str = field(default_factory=lambda: env("REDIS_HOST"))
port: int = field(default_factory=lambda: env("REDIS_PORT"))
db: int = field(default_factory=lambda: env("REDIS_DB"))

options: dict = field(default_factory=lambda: {
'decode_responses': True
})
options: dict = field(default_factory=lambda: {"decode_responses": True})
35 changes: 18 additions & 17 deletions example/config-app/tests/test_config_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

class ConfigTest(unittest.TestCase):
def test_it_loads_env_from_arguments(self):
os.environ.pop('PYTEST_CURRENT_TEST', None)
os.environ.pop("PYTEST_CURRENT_TEST", None)
from fastapi_startkit import Application

# We initialize the application with no env, so it should load the default env
Expand Down Expand Up @@ -39,20 +39,20 @@ def test_it_loads_env_from_arguments(self):
self.assertEqual(RedisConfig().db, 0)

def test_app_loads_env_data(self):
os.environ.pop('PYTEST_CURRENT_TEST', None)
os.environ.pop("PYTEST_CURRENT_TEST", None)
from bootstrap.application import app

self.assertEqual(RedisConfig().host, "host.default")
self.assertEqual(RedisConfig().port, 0000)
self.assertEqual(RedisConfig().db, 0)

app.set_environment('testing')
app.set_environment("testing")
app.load_environment()
self.assertEqual(RedisConfig().host, "host.testing")
self.assertEqual(RedisConfig().port, 2222)
self.assertEqual(RedisConfig().db, 2)

app.set_environment('production')
app.set_environment("production")
app.load_environment()

self.assertEqual(RedisConfig().host, "host.production")
Expand All @@ -62,36 +62,37 @@ def test_app_loads_env_data(self):

class ConfigFacadeTest(unittest.TestCase):
def setUp(self):
os.environ.pop('PYTEST_CURRENT_TEST', None)
os.environ.pop("PYTEST_CURRENT_TEST", None)
from fastapi_startkit import Application

self.app = Application(base_path=Path(__file__).resolve().parent.parent)
Config.set('redis', RedisConfig())
Config.set("redis", RedisConfig())

def test_get_string_field(self):
self.assertEqual(Config.get('redis.host'), 'host.default')
self.assertEqual(Config.get("redis.host"), "host.default")

def test_get_int_field(self):
self.assertEqual(Config.get('redis.port'), 0)
self.assertIsInstance(Config.get('redis.port'), int)
self.assertEqual(Config.get("redis.port"), 0)
self.assertIsInstance(Config.get("redis.port"), int)

def test_get_dict_field(self):
self.assertEqual(Config.get('redis.options'), {'decode_responses': True})
self.assertEqual(Config.get("redis.options"), {"decode_responses": True})

def test_get_nested_dotted_key(self):
self.assertIs(Config.get('redis.options.decode_responses'), True)
self.assertIs(Config.get("redis.options.decode_responses"), True)

def test_has_existing_key(self):
self.assertTrue(Config.has('redis'))
self.assertTrue(Config.has("redis"))

def test_has_missing_key(self):
self.assertFalse(Config.has('redis.nonexistent'))
self.assertFalse(Config.has("redis.nonexistent"))

def test_get_missing_key_returns_none(self):
self.assertIsNone(Config.get('redis.nonexistent'))
self.assertIsNone(Config.get("redis.nonexistent"))

def test_get_missing_key_returns_default(self):
self.assertEqual(Config.get('redis.nonexistent', 'fallback'), 'fallback')
self.assertEqual(Config.get("redis.nonexistent", "fallback"), "fallback")

def test_set_overrides_value_at_runtime(self):
Config.set('redis.host', 'overridden-host')
self.assertEqual(Config.get('redis.host'), 'overridden-host')
Config.set("redis.host", "overridden-host")
self.assertEqual(Config.get("redis.host"), "overridden-host")
Loading