from django.urls import reverse from ...admin.test import AdminTestCase from ..models import SettingsGroup class AdminSettingsViewsTests(AdminTestCase): def test_link_registered(self): """admin index view contains settings link""" response = self.client.get(reverse("misago:admin:index")) self.assertContains(response, reverse("misago:admin:system:settings:index")) def test_groups_list_view(self): """settings group view returns 200 and contains all settings groups""" response = self.client.get(reverse("misago:admin:system:settings:index")) self.assertEqual(response.status_code, 200) for group in SettingsGroup.objects.all(): group_link = reverse( "misago:admin:system:settings:group", kwargs={"key": group.key} ) self.assertContains(response, group.name) self.assertContains(response, group_link) def test_invalid_group_handling(self): """invalid group results in redirect to settings list""" group_link = reverse( "misago:admin:system:settings:group", kwargs={"key": "invalid-group"} ) response = self.client.get(group_link) self.assertEqual(response.status_code, 302) self.assertTrue( reverse("misago:admin:system:settings:index") in response["location"] ) def test_groups_views(self): """each settings group view returns 200 and contains all settings in group""" for group in SettingsGroup.objects.all(): group_link = reverse( "misago:admin:system:settings:group", kwargs={"key": group.key} ) response = self.client.get(group_link) self.assertEqual(response.status_code, 200) self.assertContains(response, group.name) values = {} for setting in group.setting_set.all(): values[setting.setting] = setting.value self.assertContains(response, setting.name) response = self.client.post(group_link, data=values) self.assertEqual(response.status_code, 302)