62 lines
2.4 KiB
Python
62 lines
2.4 KiB
Python
"""AppSettings key-value store — model behaviour.
|
|
|
|
ADMIN-001. The admin panel relies on AppSettings for global toggles
|
|
(tryouts_open, season_active, season_name, season_start, season_end).
|
|
These tests verify the key-value store itself, independent of any route.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from app.extensions import db
|
|
from app.models import AppSettings
|
|
|
|
|
|
class TestAppSettingsGetSet:
|
|
def test_get_returns_default_for_missing_key(self, app):
|
|
with app.app_context():
|
|
assert AppSettings.get('nonexistent', 'fallback') == 'fallback'
|
|
|
|
def test_set_and_get_roundtrip(self, app):
|
|
with app.app_context():
|
|
AppSettings.set('test_key', 'hello')
|
|
assert AppSettings.get('test_key') == 'hello'
|
|
|
|
def test_set_overwrites_existing_key(self, app):
|
|
with app.app_context():
|
|
AppSettings.set('overwrite_key', 'first')
|
|
AppSettings.set('overwrite_key', 'second')
|
|
assert AppSettings.get('overwrite_key') == 'second'
|
|
|
|
def test_set_none_value_is_stored_as_none(self, app):
|
|
with app.app_context():
|
|
AppSettings.set('nullable_key', None)
|
|
assert AppSettings.get('nullable_key') is None
|
|
|
|
|
|
class TestAppSettingsBool:
|
|
def test_get_bool_parses_true_values(self, app):
|
|
with app.app_context():
|
|
for val in ('true', 'True', 'TRUE', '1', 'yes', 'on'):
|
|
AppSettings.set('bool_test', val)
|
|
assert AppSettings.get_bool('bool_test'), f'{val!r} should be True'
|
|
|
|
def test_get_bool_parses_false_values(self, app):
|
|
with app.app_context():
|
|
for val in ('false', 'False', 'FALSE', '0', 'no', 'off', 'anything_else'):
|
|
AppSettings.set('bool_test', val)
|
|
assert not AppSettings.get_bool('bool_test'), f'{val!r} should be False'
|
|
|
|
def test_get_bool_defaults_to_false_for_missing_key(self, app):
|
|
with app.app_context():
|
|
assert not AppSettings.get_bool('does_not_exist')
|
|
|
|
def test_get_bool_respects_custom_default(self, app):
|
|
with app.app_context():
|
|
assert AppSettings.get_bool('does_not_exist', default=True)
|
|
|
|
def test_set_bool_stores_as_string(self, app):
|
|
with app.app_context():
|
|
AppSettings.set_bool('bool_key', True)
|
|
assert AppSettings.get('bool_key') == 'true'
|
|
AppSettings.set_bool('bool_key', False)
|
|
assert AppSettings.get('bool_key') == 'false' |