This commit is contained in:
ErikKalkoken 2020-02-18 20:35:34 +01:00
parent 01c17d28f6
commit cfa2cf58f3
4 changed files with 101 additions and 90 deletions

View File

@ -1,12 +1,12 @@
from unittest.mock import patch from unittest.mock import patch
from django.test import TestCase, RequestFactory from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.contrib.admin.sites import AdminSite from django.contrib.admin.sites import AdminSite
from django.contrib.auth.models import User as BaseUser, Group from django.contrib.auth.models import User as BaseUser, Group
from django.test import TestCase, RequestFactory
from allianceauth.authentication.models import CharacterOwnership, State from allianceauth.authentication.models import CharacterOwnership, State
from allianceauth.eveonline.autogroups.models import AutogroupsConfig
from allianceauth.eveonline.models import ( from allianceauth.eveonline.models import (
EveCharacter, EveCorporationInfo, EveAllianceInfo EveCharacter, EveCorporationInfo, EveAllianceInfo
) )
@ -22,6 +22,11 @@ from ..admin import (
user_username, user_username,
) )
if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS:
_has_auto_groups = True
from allianceauth.eveonline.autogroups.models import AutogroupsConfig
else:
_has_auto_groups = False
MODULE_PATH = 'allianceauth.authentication.admin' MODULE_PATH = 'allianceauth.authentication.admin'
@ -174,14 +179,15 @@ class TestUserAdmin(TestCase):
def _create_autogroups(self): def _create_autogroups(self):
"""create autogroups for corps and alliances""" """create autogroups for corps and alliances"""
autogroups_config = AutogroupsConfig( if _has_auto_groups:
corp_groups = True, autogroups_config = AutogroupsConfig(
alliance_groups = True corp_groups = True,
) alliance_groups = True
autogroups_config.save() )
for state in State.objects.all(): autogroups_config.save()
autogroups_config.states.add(state) for state in State.objects.all():
autogroups_config.update_corp_group_membership(self.user_1) autogroups_config.states.add(state)
autogroups_config.update_corp_group_membership(self.user_1)
# column rendering # column rendering

View File

@ -1,11 +1,11 @@
from unittest.mock import Mock, patch from unittest.mock import Mock, patch
from django.test import TestCase from django.test import TestCase
from .. import app_settings from .. import app_settings
MODULE_PATH = 'allianceauth.authentication' MODULE_PATH = 'allianceauth.authentication'
class TestSetAppSetting(TestCase): class TestSetAppSetting(TestCase):
@patch(MODULE_PATH + '.app_settings.settings') @patch(MODULE_PATH + '.app_settings.settings')
@ -17,7 +17,6 @@ class TestSetAppSetting(TestCase):
) )
self.assertEqual(result, False) self.assertEqual(result, False)
@patch(MODULE_PATH + '.app_settings.settings') @patch(MODULE_PATH + '.app_settings.settings')
def test_default_if_not_set_for_none(self, mock_settings): def test_default_if_not_set_for_none(self, mock_settings):
mock_settings.TEST_SETTING_DUMMY = Mock(spec=None) mock_settings.TEST_SETTING_DUMMY = Mock(spec=None)
@ -28,7 +27,6 @@ class TestSetAppSetting(TestCase):
) )
self.assertEqual(result, None) self.assertEqual(result, None)
@patch(MODULE_PATH + '.app_settings.settings') @patch(MODULE_PATH + '.app_settings.settings')
def test_true_stays_true(self, mock_settings): def test_true_stays_true(self, mock_settings):
mock_settings.TEST_SETTING_DUMMY = True mock_settings.TEST_SETTING_DUMMY = True
@ -56,7 +54,6 @@ class TestSetAppSetting(TestCase):
) )
self.assertEqual(result, False) self.assertEqual(result, False)
@patch(MODULE_PATH + '.app_settings.settings') @patch(MODULE_PATH + '.app_settings.settings')
def test_default_for_invalid_type_int(self, mock_settings): def test_default_for_invalid_type_int(self, mock_settings):
mock_settings.TEST_SETTING_DUMMY = 'invalid type' mock_settings.TEST_SETTING_DUMMY = 'invalid type'
@ -95,7 +92,6 @@ class TestSetAppSetting(TestCase):
) )
self.assertEqual(result, 50) self.assertEqual(result, 50)
@patch(MODULE_PATH + '.app_settings.settings') @patch(MODULE_PATH + '.app_settings.settings')
def test_default_is_none_needs_required_type(self, mock_settings): def test_default_is_none_needs_required_type(self, mock_settings):
mock_settings.TEST_SETTING_DUMMY = 'invalid type' mock_settings.TEST_SETTING_DUMMY = 'invalid type'
@ -104,5 +100,3 @@ class TestSetAppSetting(TestCase):
'TEST_SETTING_DUMMY', 'TEST_SETTING_DUMMY',
default_value=None default_value=None
) )

View File

@ -103,14 +103,16 @@ class GroupAdmin(admin.ModelAdmin):
'_member_count', '_member_count',
'has_leader' 'has_leader'
) )
list_filter = ( list_filter = [
'authgroup__internal', 'authgroup__internal',
'authgroup__hidden', 'authgroup__hidden',
'authgroup__open', 'authgroup__open',
'authgroup__public', 'authgroup__public',
IsAutoGroupFilter, ]
HasLeaderFilter if _has_auto_groups:
) list_filter.append(IsAutoGroupFilter)
list_filter.append(HasLeaderFilter)
search_fields = ('name', 'authgroup__description') search_fields = ('name', 'authgroup__description')
def get_queryset(self, request): def get_queryset(self, request):

View File

@ -1,23 +1,29 @@
from unittest.mock import patch from unittest.mock import patch
from django.test import TestCase, RequestFactory from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.contrib.admin.sites import AdminSite from django.contrib.admin.sites import AdminSite
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.test import TestCase, RequestFactory
from allianceauth.authentication.models import CharacterOwnership, State from allianceauth.authentication.models import CharacterOwnership, State
from allianceauth.eveonline.autogroups.models import AutogroupsConfig
from allianceauth.eveonline.models import ( from allianceauth.eveonline.models import (
EveCharacter, EveCorporationInfo, EveAllianceInfo EveCharacter, EveCorporationInfo, EveAllianceInfo
) )
from ..admin import ( from ..admin import (
IsAutoGroupFilter,
HasLeaderFilter, HasLeaderFilter,
GroupAdmin, GroupAdmin,
Group Group
) )
if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS:
_has_auto_groups = True
from allianceauth.eveonline.autogroups.models import AutogroupsConfig
from ..admin import IsAutoGroupFilter
else:
_has_auto_groups = False
MODULE_PATH = 'allianceauth.groupmanagement.admin' MODULE_PATH = 'allianceauth.groupmanagement.admin'
@ -210,14 +216,15 @@ class TestGroupAdmin(TestCase):
def _create_autogroups(self): def _create_autogroups(self):
"""create autogroups for corps and alliances""" """create autogroups for corps and alliances"""
autogroups_config = AutogroupsConfig( if _has_auto_groups:
corp_groups = True, autogroups_config = AutogroupsConfig(
alliance_groups = True corp_groups = True,
) alliance_groups = True
autogroups_config.save() )
for state in State.objects.all(): autogroups_config.save()
autogroups_config.states.add(state) for state in State.objects.all():
autogroups_config.update_corp_group_membership(self.user_1) autogroups_config.states.add(state)
autogroups_config.update_corp_group_membership(self.user_1)
# column rendering # column rendering
@ -267,70 +274,72 @@ class TestGroupAdmin(TestCase):
result = self.modeladmin._properties(self.group_6) result = self.modeladmin._properties(self.group_6)
self.assertListEqual(result, expected) self.assertListEqual(result, expected)
@patch(MODULE_PATH + '._has_auto_groups', True) if _has_auto_groups:
def test_properties_6(self): @patch(MODULE_PATH + '._has_auto_groups', True)
self._create_autogroups() def test_properties_6(self):
expected = ['Auto Group'] self._create_autogroups()
my_group = Group.objects\ expected = ['Auto Group']
.filter(managedcorpgroup__isnull=False)\ my_group = Group.objects\
.first() .filter(managedcorpgroup__isnull=False)\
result = self.modeladmin._properties(my_group) .first()
self.assertListEqual(result, expected) result = self.modeladmin._properties(my_group)
self.assertListEqual(result, expected)
# actions # actions
# filters # filters
@patch(MODULE_PATH + '._has_auto_groups', True) if _has_auto_groups:
def test_filter_is_auto_group(self): @patch(MODULE_PATH + '._has_auto_groups', True)
def test_filter_is_auto_group(self):
class GroupAdminTest(admin.ModelAdmin):
list_filter = (IsAutoGroupFilter,) class GroupAdminTest(admin.ModelAdmin):
list_filter = (IsAutoGroupFilter,)
self._create_autogroups()
my_modeladmin = GroupAdminTest(Group, AdminSite()) self._create_autogroups()
my_modeladmin = GroupAdminTest(Group, AdminSite())
# Make sure the lookups are correct # Make sure the lookups are correct
request = self.factory.get('/') request = self.factory.get('/')
request.user = self.user_1 request.user = self.user_1
changelist = my_modeladmin.get_changelist_instance(request) changelist = my_modeladmin.get_changelist_instance(request)
filters = changelist.get_filters(request) filters = changelist.get_filters(request)
filterspec = filters[0][0] filterspec = filters[0][0]
expected = [ expected = [
('yes', 'Yes'), ('yes', 'Yes'),
('no', 'No'), ('no', 'No'),
] ]
self.assertEqual(filterspec.lookup_choices, expected) self.assertEqual(filterspec.lookup_choices, expected)
# Make sure the correct queryset is returned - no # Make sure the correct queryset is returned - no
request = self.factory.get( request = self.factory.get(
'/', {'is_auto_group__exact': 'no'} '/', {'is_auto_group__exact': 'no'}
) )
request.user = self.user_1 request.user = self.user_1
changelist = my_modeladmin.get_changelist_instance(request) changelist = my_modeladmin.get_changelist_instance(request)
queryset = changelist.get_queryset(request) queryset = changelist.get_queryset(request)
expected = [ expected = [
self.group_1, self.group_1,
self.group_2, self.group_2,
self.group_3, self.group_3,
self.group_4, self.group_4,
self.group_5, self.group_5,
self.group_6 self.group_6
] ]
self.assertSetEqual(set(queryset), set(expected)) self.assertSetEqual(set(queryset), set(expected))
# Make sure the correct queryset is returned - yes # Make sure the correct queryset is returned - yes
request = self.factory.get( request = self.factory.get(
'/', {'is_auto_group__exact': 'yes'} '/', {'is_auto_group__exact': 'yes'}
) )
request.user = self.user_1 request.user = self.user_1
changelist = my_modeladmin.get_changelist_instance(request) changelist = my_modeladmin.get_changelist_instance(request)
queryset = changelist.get_queryset(request) queryset = changelist.get_queryset(request)
expected = Group.objects.exclude( expected = Group.objects.exclude(
managedalliancegroup__isnull=True, managedalliancegroup__isnull=True,
managedcorpgroup__isnull=True managedcorpgroup__isnull=True
) )
self.assertSetEqual(set(queryset), set(expected)) self.assertSetEqual(set(queryset), set(expected))
def test_filter_has_leader(self): def test_filter_has_leader(self):