From 80729b6b068c80c762ab0ee8a3716f16752ccd93 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Thu, 13 Feb 2020 01:14:46 +0100 Subject: [PATCH] Performance improve admin tests, test w/o auto groups --- .../authentication/tests/test_admin.py | 175 ++++++++++++------ 1 file changed, 115 insertions(+), 60 deletions(-) diff --git a/allianceauth/authentication/tests/test_admin.py b/allianceauth/authentication/tests/test_admin.py index 961ff3c9..4e94434e 100644 --- a/allianceauth/authentication/tests/test_admin.py +++ b/allianceauth/authentication/tests/test_admin.py @@ -34,21 +34,20 @@ class MockRequest(object): class TestUserAdmin(TestCase): - def setUp(self): - self.factory = RequestFactory() - self.modeladmin = UserAdmin( - model=User, admin_site=AdminSite() - ) + @classmethod + def setUpClass(cls): + super().setUpClass() + # groups - self.group_1 = Group.objects.create( + cls.group_1 = Group.objects.create( name='Group 1' ) - self.group_2 = Group.objects.create( + cls.group_2 = Group.objects.create( name='Group 2' ) # user 1 - corp and alliance, normal user - self.character_1 = EveCharacter.objects.create( + cls.character_1 = EveCharacter.objects.create( character_id='1001', character_name='Bruce Wayne', corporation_id='2001', @@ -58,7 +57,7 @@ class TestUserAdmin(TestCase): alliance_name='Wayne Enterprises', alliance_ticker='WE', ) - self.character_1a = EveCharacter.objects.create( + cls.character_1a = EveCharacter.objects.create( character_id='1002', character_name='Batman', corporation_id='2001', @@ -81,27 +80,27 @@ class TestUserAdmin(TestCase): member_count=42, alliance=alliance ) - self.user_1 = User.objects.create_user( - self.character_1.character_name.replace(' ', '_'), + cls.user_1 = User.objects.create_user( + cls.character_1.character_name.replace(' ', '_'), 'abc@example.com', 'password' ) CharacterOwnership.objects.create( - character=self.character_1, - owner_hash='x1' + self.character_1.character_name, - user=self.user_1 + character=cls.character_1, + owner_hash='x1' + cls.character_1.character_name, + user=cls.user_1 ) CharacterOwnership.objects.create( - character=self.character_1a, - owner_hash='x1' + self.character_1a.character_name, - user=self.user_1 + character=cls.character_1a, + owner_hash='x1' + cls.character_1a.character_name, + user=cls.user_1 ) - self.user_1.profile.main_character = self.character_1 - self.user_1.profile.save() - self.user_1.groups.add(self.group_1) + cls.user_1.profile.main_character = cls.character_1 + cls.user_1.profile.save() + cls.user_1.groups.add(cls.group_1) # user 2 - corp only, staff - self.character_2 = EveCharacter.objects.create( + cls.character_2 = EveCharacter.objects.create( character_id=1003, character_name='Clark Kent', corporation_id=2002, @@ -116,24 +115,24 @@ class TestUserAdmin(TestCase): member_count=99, alliance=None ) - self.user_2 = User.objects.create_user( - self.character_2.character_name.replace(' ', '_'), + cls.user_2 = User.objects.create_user( + cls.character_2.character_name.replace(' ', '_'), 'abc@example.com', 'password' ) CharacterOwnership.objects.create( - character=self.character_2, - owner_hash='x1' + self.character_2.character_name, - user=self.user_2 + character=cls.character_2, + owner_hash='x1' + cls.character_2.character_name, + user=cls.user_2 ) - self.user_2.profile.main_character = self.character_2 - self.user_2.profile.save() - self.user_2.groups.add(self.group_2) - self.user_2.is_staff = True - self.user_2.save() + cls.user_2.profile.main_character = cls.character_2 + cls.user_2.profile.save() + cls.user_2.groups.add(cls.group_2) + cls.user_2.is_staff = True + cls.user_2.save() # user 3 - no main, no group, superuser - self.character_3 = EveCharacter.objects.create( + cls.character_3 = EveCharacter.objects.create( character_id=1101, character_name='Lex Luthor', corporation_id=2101, @@ -154,20 +153,27 @@ class TestUserAdmin(TestCase): alliance_ticker='LWD', executor_corp_id='' ) - self.user_3 = User.objects.create_user( - self.character_3.character_name.replace(' ', '_'), + cls.user_3 = User.objects.create_user( + cls.character_3.character_name.replace(' ', '_'), 'abc@example.com', 'password' ) CharacterOwnership.objects.create( - character=self.character_3, - owner_hash='x1' + self.character_3.character_name, - user=self.user_3 + character=cls.character_3, + owner_hash='x1' + cls.character_3.character_name, + user=cls.user_3 ) - self.user_3.is_superuser = True - self.user_3.save() - - # create autogroups for corps and alliances + cls.user_3.is_superuser = True + cls.user_3.save() + + def setUp(self): + self.factory = RequestFactory() + self.modeladmin = UserAdmin( + model=User, admin_site=AdminSite() + ) + + def _create_autogroups(self): + """create autogroups for corps and alliances""" autogroups_config = AutogroupsConfig( corp_groups = True, alliance_groups = True @@ -175,70 +181,90 @@ class TestUserAdmin(TestCase): autogroups_config.save() for state in State.objects.all(): autogroups_config.states.add(state) - autogroups_config.update_corp_group_membership(self.user_1) + autogroups_config.update_corp_group_membership(self.user_1) # column rendering - def test_user_profile_pic_1(self): + def test_user_profile_pic_u1(self): expected = ('') self.assertEqual(user_profile_pic(self.user_1), expected) - def test_user_profile_pic_3(self): + def test_user_profile_pic_u3(self): self.assertIsNone(user_profile_pic(self.user_3)) - def test_user_username_1(self): + def test_user_username_u1(self): expected = ( '' 'Bruce_Wayne
Bruce Wayne'.format(self.user_1.pk) ) self.assertEqual(user_username(self.user_1), expected) - def test_user_username_3(self): + def test_user_username_u3(self): expected = ( '' 'Lex_Luthor'.format(self.user_3.pk) ) self.assertEqual(user_username(self.user_3), expected) - def test_user_main_organization_1(self): + def test_user_main_organization_u1(self): expected = 'Wayne Technologies
Wayne Enterprises' self.assertEqual(user_main_organization(self.user_1), expected) - def test_user_main_organization_2(self): + def test_user_main_organization_u2(self): expected = 'Daily Planet' self.assertEqual(user_main_organization(self.user_2), expected) - def test_user_main_organization_3(self): + def test_user_main_organization_u3(self): expected = None self.assertEqual(user_main_organization(self.user_3), expected) - def test_characters_1(self): + def test_characters_u1(self): expected = 'Batman, Bruce Wayne' result = self.modeladmin._characters(self.user_1) self.assertEqual(result, expected) - def test_characters_2(self): + def test_characters_u2(self): expected = 'Clark Kent' result = self.modeladmin._characters(self.user_2) self.assertEqual(result, expected) - def test_characters_3(self): + def test_characters_u3(self): expected = 'Lex Luthor' result = self.modeladmin._characters(self.user_3) self.assertEqual(result, expected) - - def test_groups_1(self): + + def test_groups_u1(self): + self._create_autogroups() expected = 'Group 1' result = self.modeladmin._groups(self.user_1) self.assertEqual(result, expected) - def test_groups_2(self): + def test_groups_u2(self): + self._create_autogroups() expected = 'Group 2' result = self.modeladmin._groups(self.user_2) self.assertEqual(result, expected) - def test_groups_3(self): + def test_groups_u3(self): + self._create_autogroups() + result = self.modeladmin._groups(self.user_3) + self.assertIsNone(result) + + @patch(MODULE_PATH + '._has_auto_groups', False) + def test_groups_u1_no_autogroups(self): + expected = 'Group 1' + result = self.modeladmin._groups(self.user_1) + self.assertEqual(result, expected) + + @patch(MODULE_PATH + '._has_auto_groups', False) + def test_groups_u2_no_autogroups(self): + expected = 'Group 2' + result = self.modeladmin._groups(self.user_2) + self.assertEqual(result, expected) + + @patch(MODULE_PATH + '._has_auto_groups', False) + def test_groups_u3_no_autogroups(self): result = self.modeladmin._groups(self.user_3) self.assertIsNone(result) @@ -247,17 +273,17 @@ class TestUserAdmin(TestCase): result = self.modeladmin._state(self.user_1) self.assertEqual(result, expected) - def test_role_1(self): + def test_role_u1(self): expected = 'User' result = self.modeladmin._role(self.user_1) self.assertEqual(result, expected) - def test_role_2(self): + def test_role_u2(self): expected = 'Staff' result = self.modeladmin._role(self.user_2) self.assertEqual(result, expected) - def test_role_3(self): + def test_role_u3(self): expected = 'Superuser' result = self.modeladmin._role(self.user_3) self.assertEqual(result, expected) @@ -297,11 +323,40 @@ class TestUserAdmin(TestCase): # filters - def test_filter_real_groups(self): + def test_filter_real_groups_with_autogroups(self): class UserAdminTest(BaseUserAdmin): list_filter = (UserAdmin.RealGroupsFilter,) + self._create_autogroups() + my_modeladmin = UserAdminTest(User, AdminSite()) + + # Make sure the lookups are correct + request = self.factory.get('/') + request.user = self.user_1 + changelist = my_modeladmin.get_changelist_instance(request) + filters = changelist.get_filters(request) + filterspec = filters[0][0] + expected = [ + (self.group_1.pk, self.group_1.name), + (self.group_2.pk, self.group_2.name), + ] + self.assertEqual(filterspec.lookup_choices, expected) + + # Make sure the correct queryset is returned + request = self.factory.get('/', {'group_id__exact': self.group_1.pk}) + request.user = self.user_1 + changelist = my_modeladmin.get_changelist_instance(request) + queryset = changelist.get_queryset(request) + expected = User.objects.filter(groups__in=[self.group_1]) + self.assertSetEqual(set(queryset), set(expected)) + + @patch(MODULE_PATH + '._has_auto_groups', False) + def test_filter_real_groups_no_autogroups(self): + + class UserAdminTest(BaseUserAdmin): + list_filter = (UserAdmin.RealGroupsFilter,) + my_modeladmin = UserAdminTest(User, AdminSite()) # Make sure the lookups are correct