|
@@ -14,6 +14,14 @@ from flaskbb.forum.models import Category, Topic, Post
|
|
|
from flaskbb.management.models import Setting, SettingsGroup
|
|
|
|
|
|
|
|
|
+def _individual_settings(update_result):
|
|
|
+ """Helper that returns the number of settings that were updated."""
|
|
|
+ return sum(
|
|
|
+ len(settings_in_a_group)
|
|
|
+ for settings_in_a_group in update_result.values()
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
def test_delete_settings_from_fixture(default_settings):
|
|
|
groups_count = SettingsGroup.query.count()
|
|
|
assert len(settings_fixture) == groups_count
|
|
@@ -36,42 +44,60 @@ def test_create_settings_from_fixture(database):
|
|
|
|
|
|
|
|
|
def test_update_settings_from_fixture(database):
|
|
|
- # No force-overwrite - the fixtures will be created because
|
|
|
- # do not exist.
|
|
|
+ settings_fixture_group_count = len(settings_fixture)
|
|
|
+ settings_fixture_setting_count = sum(
|
|
|
+ len(settings_fixture[k][1]['settings'])
|
|
|
+ for k in range(len(settings_fixture))
|
|
|
+ )
|
|
|
+
|
|
|
assert not SettingsGroup.query.count()
|
|
|
assert not Setting.query.count()
|
|
|
+
|
|
|
+ # No force-overwrite - the fixtures will be created because they
|
|
|
+ # do not exist.
|
|
|
updated = update_settings_from_fixture(settings_fixture)
|
|
|
- assert len(updated) == SettingsGroup.query.count()
|
|
|
+ assert settings_fixture_group_count == len(updated)
|
|
|
+ assert settings_fixture_group_count == SettingsGroup.query.count()
|
|
|
+ assert settings_fixture_setting_count == _individual_settings(updated)
|
|
|
+ assert settings_fixture_setting_count == Setting.query.count()
|
|
|
+
|
|
|
+
|
|
|
+def test_update_settings_from_fixture_overwrite(database, default_settings,
|
|
|
+ updated_fixture):
|
|
|
+ # should add groups: testgroup
|
|
|
+ # should add testgroup/monty_python, general/test_fixture
|
|
|
+ pre_update_group_count = SettingsGroup.query.count()
|
|
|
+ pre_update_setting_count = Setting.query.count()
|
|
|
+ updated = update_settings_from_fixture(updated_fixture)
|
|
|
+ assert len(updated) == 2
|
|
|
+ assert _individual_settings(updated) == 2
|
|
|
+ assert pre_update_group_count + 1 == SettingsGroup.query.count()
|
|
|
+ assert pre_update_setting_count + 2 == Setting.query.count()
|
|
|
|
|
|
- # force-overwrite - the fixtures exist, but they will be overwritten now.
|
|
|
+
|
|
|
+def test_update_settings_from_fixture_force(database, default_settings,
|
|
|
+ updated_fixture):
|
|
|
+ # force-overwrite - nothing changed so nothing should happen here
|
|
|
+ pre_update_group_count = SettingsGroup.query.count()
|
|
|
+ pre_update_setting_count = Setting.query.count()
|
|
|
force_updated = update_settings_from_fixture(settings_fixture,
|
|
|
overwrite_group=True,
|
|
|
overwrite_setting=True)
|
|
|
- assert len(force_updated) == SettingsGroup.query.count()
|
|
|
-
|
|
|
- updated_fixture = (
|
|
|
- ('general', {
|
|
|
- 'name': "General Settings",
|
|
|
- 'description': "How many items per page are displayed.",
|
|
|
- 'settings': (
|
|
|
- ('project_title', {
|
|
|
- 'value': "FlaskBB",
|
|
|
- 'value_type': "string",
|
|
|
- 'name': "Project title",
|
|
|
- 'description': "The title of the project.",
|
|
|
- }),
|
|
|
- ('test_fixture', {
|
|
|
- 'description': 'This is a test fixture',
|
|
|
- 'name': 'Test Fixture',
|
|
|
- 'value': 'FlaskBBTest',
|
|
|
- 'value_type': 'string'
|
|
|
- })
|
|
|
- )
|
|
|
- }),
|
|
|
- )
|
|
|
|
|
|
- updated = update_settings_from_fixture(updated_fixture)
|
|
|
- assert len(updated) == 1
|
|
|
+ assert len(force_updated) == 0
|
|
|
+ assert _individual_settings(force_updated) == 0
|
|
|
+ assert pre_update_group_count == SettingsGroup.query.count()
|
|
|
+ assert pre_update_setting_count == Setting.query.count()
|
|
|
+
|
|
|
+ # should update groups: general
|
|
|
+ # should update settings: 2 in general, 1 in testgroup
|
|
|
+ force_updated_1 = update_settings_from_fixture(updated_fixture,
|
|
|
+ overwrite_group=True,
|
|
|
+ overwrite_setting=True)
|
|
|
+ assert len(force_updated_1) == 2
|
|
|
+ assert _individual_settings(force_updated_1) == 3
|
|
|
+ assert pre_update_group_count + 1 == SettingsGroup.query.count()
|
|
|
+ assert pre_update_setting_count + 2 == Setting.query.count()
|
|
|
|
|
|
|
|
|
def test_create_user(default_groups):
|