[settings] Better impl. of Setting class, tests for it and refactor hardcoded settings to use it.
This commit is contained in:
63
tests/test_settings.py
Normal file
63
tests/test_settings.py
Normal file
@ -0,0 +1,63 @@
|
||||
import logging
|
||||
from os import environ
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
|
||||
from bonobo import settings
|
||||
|
||||
TEST_SETTING = 'TEST_SETTING'
|
||||
|
||||
|
||||
def test_to_bool():
|
||||
assert not settings.to_bool('')
|
||||
assert not settings.to_bool('FALSE')
|
||||
assert not settings.to_bool('NO')
|
||||
assert not settings.to_bool('0')
|
||||
|
||||
assert settings.to_bool('yup')
|
||||
assert settings.to_bool('True')
|
||||
assert settings.to_bool('yes')
|
||||
assert settings.to_bool('1')
|
||||
|
||||
|
||||
def test_setting():
|
||||
s = settings.Setting(TEST_SETTING)
|
||||
assert s.get() is None
|
||||
|
||||
with patch.dict(environ, {TEST_SETTING: 'hello'}):
|
||||
assert s.get() is None
|
||||
s.clear()
|
||||
assert s.get() == 'hello'
|
||||
|
||||
s = settings.Setting(TEST_SETTING, default='nope')
|
||||
assert s.get() is 'nope'
|
||||
|
||||
with patch.dict(environ, {TEST_SETTING: 'hello'}):
|
||||
assert s.get() == 'nope'
|
||||
s.clear()
|
||||
assert s.get() == 'hello'
|
||||
|
||||
|
||||
def test_default_settings():
|
||||
settings.clear_all()
|
||||
|
||||
assert settings.DEBUG.get() == False
|
||||
assert settings.PROFILE.get() == False
|
||||
assert settings.QUIET.get() == False
|
||||
assert settings.LOGGING_LEVEL.get() == logging._checkLevel('INFO')
|
||||
|
||||
with patch.dict(environ, {'DEBUG': 't'}):
|
||||
settings.clear_all()
|
||||
assert settings.LOGGING_LEVEL.get() == logging._checkLevel('DEBUG')
|
||||
|
||||
settings.clear_all()
|
||||
|
||||
|
||||
def test_check():
|
||||
settings.check()
|
||||
with patch.dict(environ, {'DEBUG': 't', 'PROFILE': 't', 'QUIET': 't'}):
|
||||
settings.clear_all()
|
||||
with pytest.raises(RuntimeError):
|
||||
settings.check()
|
||||
settings.clear_all()
|
||||
Reference in New Issue
Block a user