from django.urls import reverse from misago.acl.models import Role from misago.acl.testutils import fake_post_data from misago.admin.testutils import AdminTestCase def fake_data(data_dict): return fake_post_data(Role(), data_dict) class RoleAdminViewsTests(AdminTestCase): def test_link_registered(self): """admin nav contains user roles link""" response = self.client.get(reverse('misago:admin:permissions:users:index')) self.assertContains(response, reverse('misago:admin:permissions:users:index')) def test_list_view(self): """roles list view returns 200""" response = self.client.get(reverse('misago:admin:permissions:users:index')) self.assertEqual(response.status_code, 200) def test_new_view(self): """new role view has no showstoppers""" response = self.client.get(reverse('misago:admin:permissions:users:new')) self.assertEqual(response.status_code, 200) response = self.client.post( reverse('misago:admin:permissions:users:new'), data=fake_data({ 'name': 'Test Role', }) ) self.assertEqual(response.status_code, 302) test_role = Role.objects.get(name='Test Role') response = self.client.get(reverse('misago:admin:permissions:users:index')) self.assertEqual(response.status_code, 200) self.assertContains(response, test_role.name) def test_edit_view(self): """edit role view has no showstoppers""" self.client.post( reverse('misago:admin:permissions:users:new'), data=fake_data({ 'name': 'Test Role', }) ) test_role = Role.objects.get(name='Test Role') response = self.client.get( reverse('misago:admin:permissions:users:edit', kwargs={ 'pk': test_role.pk, }) ) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Test Role') response = self.client.post( reverse('misago:admin:permissions:users:edit', kwargs={ 'pk': test_role.pk, }), data=fake_data({ 'name': 'Top Lel', }) ) self.assertEqual(response.status_code, 302) test_role = Role.objects.get(name='Top Lel') response = self.client.get(reverse('misago:admin:permissions:users:index')) self.assertEqual(response.status_code, 200) self.assertContains(response, test_role.name) def test_users_view(self): """users with this role view has no showstoppers""" response = self.client.post( reverse('misago:admin:permissions:users:new'), data=fake_data({ 'name': 'Test Role', }) ) test_role = Role.objects.get(name='Test Role') response = self.client.get( reverse('misago:admin:permissions:users:users', kwargs={ 'pk': test_role.pk, }) ) self.assertEqual(response.status_code, 302) def test_delete_view(self): """delete role view has no showstoppers""" self.client.post( reverse('misago:admin:permissions:users:new'), data=fake_data({ 'name': 'Test Role', }) ) test_role = Role.objects.get(name='Test Role') response = self.client.post( reverse('misago:admin:permissions:users:delete', kwargs={ 'pk': test_role.pk, }) ) self.assertEqual(response.status_code, 302) # Get the page twice so no alert is renderered on second request self.client.get(reverse('misago:admin:permissions:users:index')) response = self.client.get(reverse('misago:admin:permissions:users:index')) self.assertNotContains(response, test_role.name)