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 django.test import TestCase, RequestFactory
from django.conf import settings
from django.contrib import admin
from django.contrib.admin.sites import AdminSite
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.eveonline.autogroups.models import AutogroupsConfig
from allianceauth.eveonline.models import (
EveCharacter, EveCorporationInfo, EveAllianceInfo
)
@ -22,6 +22,11 @@ from ..admin import (
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'
@ -174,14 +179,15 @@ class TestUserAdmin(TestCase):
def _create_autogroups(self):
"""create autogroups for corps and alliances"""
autogroups_config = AutogroupsConfig(
corp_groups = True,
alliance_groups = True
)
autogroups_config.save()
for state in State.objects.all():
autogroups_config.states.add(state)
autogroups_config.update_corp_group_membership(self.user_1)
if _has_auto_groups:
autogroups_config = AutogroupsConfig(
corp_groups = True,
alliance_groups = True
)
autogroups_config.save()
for state in State.objects.all():
autogroups_config.states.add(state)
autogroups_config.update_corp_group_membership(self.user_1)
# column rendering

View File

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

View File

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

View File

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