Mercurial > kallithea
changeset 5900:83c34fbb2139
tests: illustrate current behavior of list-valued settings
author | Konstantin Veretennicov <kveretennicov@gmail.com> |
---|---|
date | Thu, 05 May 2016 17:57:46 +0200 |
parents | 106259896c7c |
children | ef1187159860 |
files | kallithea/tests/models/test_settings.py |
diffstat | 1 files changed, 49 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kallithea/tests/models/test_settings.py Thu May 05 17:57:46 2016 +0200 @@ -0,0 +1,49 @@ +from kallithea.model.meta import Session +from kallithea.model.db import Setting + + +name = 'spam-setting-name' + +def test_passing_list_setting_value_results_in_string_valued_setting(): + assert Setting.get_by_name(name) is None + setting = Setting.create_or_update(name, ['spam', 'eggs']) + Session().add(setting) + Session().flush() + try: + assert Setting.get_by_name(name) is not None + # Quirk: list value is stringified. + assert Setting.get_by_name(name).app_settings_value \ + == "['spam', 'eggs']" + assert Setting.get_by_name(name).app_settings_type == 'unicode' + finally: + Session().delete(setting) + Session().flush() + +def test_list_valued_setting_creation_requires_manual_value_formatting(): + assert Setting.get_by_name(name) is None + # Quirk: need manual formatting of list setting value. + setting = Setting.create_or_update(name, 'spam,eggs', type='list') + Session().add(setting) + Session().flush() + try: + assert setting.app_settings_value == ['spam', 'eggs'] + finally: + Session().delete(setting) + Session().flush() + +def test_list_valued_setting_update(): + assert Setting.get_by_name(name) is None + setting = Setting.create_or_update(name, 'spam', type='list') + Session().add(setting) + Session().flush() + try: + assert setting.app_settings_value == [u'spam'] + # Assign back setting value. + setting.app_settings_value = setting.app_settings_value + # Quirk: value is stringified on write and listified on read. + assert setting.app_settings_value == ["[u'spam']"] + setting.app_settings_value = setting.app_settings_value + assert setting.app_settings_value == ["[u\"[u'spam']\"]"] + finally: + Session().delete(setting) + Session().flush()