mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-11 09:36:24 +01:00
208 lines
7.8 KiB
Python
208 lines
7.8 KiB
Python
from django.test import TestCase
|
|
from django.contrib.auth.models import User
|
|
|
|
from allianceauth.tests.auth_utils import AuthUtils
|
|
|
|
from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo, EveAllianceInfo
|
|
|
|
from ..models import AutogroupsConfig
|
|
|
|
from . import patch, disconnect_signals, connect_signals
|
|
|
|
|
|
class SignalsTestCase(TestCase):
|
|
def setUp(self):
|
|
disconnect_signals()
|
|
state = AuthUtils.get_member_state()
|
|
|
|
self.char = EveCharacter.objects.create(
|
|
character_id='1234',
|
|
character_name='test character',
|
|
corporation_id='2345',
|
|
corporation_name='test corp',
|
|
corporation_ticker='tickr',
|
|
alliance_id='3456',
|
|
alliance_name='alliance name',
|
|
)
|
|
|
|
self.alliance = EveAllianceInfo.objects.create(
|
|
alliance_id='3456',
|
|
alliance_name='alliance name',
|
|
alliance_ticker='TIKR',
|
|
executor_corp_id='2345',
|
|
)
|
|
|
|
self.corp = EveCorporationInfo.objects.create(
|
|
corporation_id='2345',
|
|
corporation_name='corp name',
|
|
corporation_ticker='TIKK',
|
|
member_count=10,
|
|
alliance=self.alliance,
|
|
)
|
|
|
|
state.member_alliances.add(self.alliance)
|
|
state.member_corporations.add(self.corp)
|
|
|
|
self.member = AuthUtils.create_member('test user')
|
|
self.member.profile.main_character = self.char
|
|
self.member.profile.save()
|
|
|
|
connect_signals()
|
|
|
|
@patch('.models.AutogroupsConfigManager.update_groups_for_user')
|
|
def test_check_groups_on_profile_update_state(self, update_groups_for_user):
|
|
# Trigger signal
|
|
self.member.profile.assign_state(state=AuthUtils.get_guest_state())
|
|
|
|
self.assertTrue(update_groups_for_user.called)
|
|
self.assertEqual(update_groups_for_user.call_count, 1)
|
|
args, kwargs = update_groups_for_user.call_args
|
|
self.assertEqual(args[0], self.member)
|
|
|
|
@patch('.models.AutogroupsConfigManager.update_groups_for_user')
|
|
def test_check_groups_on_profile_update_main_character(self, update_groups_for_user):
|
|
char = EveCharacter.objects.create(
|
|
character_id='1266',
|
|
character_name='test character2',
|
|
corporation_id='2345',
|
|
corporation_name='test corp',
|
|
corporation_ticker='tickr',
|
|
alliance_id='3456',
|
|
alliance_name='alliance name',
|
|
)
|
|
|
|
# Trigger signal
|
|
self.member.profile.main_character = char
|
|
self.member.profile.save()
|
|
self.assertTrue(update_groups_for_user.called)
|
|
self.assertEqual(update_groups_for_user.call_count, 1)
|
|
args, kwargs = update_groups_for_user.call_args
|
|
self.assertEqual(args[0], self.member)
|
|
member = User.objects.get(pk=self.member.pk)
|
|
self.assertEqual(member.profile.state, AuthUtils.get_member_state())
|
|
|
|
@patch('.models.AutogroupsConfigManager.update_groups_for_user')
|
|
def test_check_groups_on_character_update(self, update_groups_for_user):
|
|
"""
|
|
Test update_groups_for_user is called when main_character properties
|
|
are changed.
|
|
"""
|
|
|
|
# Trigger signal
|
|
self.member.profile.main_character.corporation_id = '2300'
|
|
self.member.profile.main_character.save()
|
|
|
|
self.assertTrue(update_groups_for_user.called)
|
|
self.assertEqual(update_groups_for_user.call_count, 1)
|
|
args, kwargs = update_groups_for_user.call_args
|
|
self.assertEqual(args[0], self.member)
|
|
member = User.objects.get(pk=self.member.pk)
|
|
self.assertEqual(member.profile.state, AuthUtils.get_member_state())
|
|
|
|
@patch('.models.AutogroupsConfig.delete_corp_managed_groups')
|
|
@patch('.models.AutogroupsConfig.delete_alliance_managed_groups')
|
|
def test_pre_save_config_deletes_alliance_groups(self, delete_alliance_managed_groups, delete_corp_managed_groups):
|
|
"""
|
|
Test that delete_alliance_managed_groups is called when the alliance_groups
|
|
setting is toggled to False
|
|
"""
|
|
obj = AutogroupsConfig.objects.create(alliance_groups=True)
|
|
|
|
obj.create_alliance_group(self.alliance)
|
|
|
|
# Trigger signal
|
|
obj.alliance_groups = False
|
|
obj.save()
|
|
|
|
self.assertTrue(delete_alliance_managed_groups.called)
|
|
self.assertFalse(delete_corp_managed_groups.called)
|
|
self.assertEqual(delete_alliance_managed_groups.call_count, 1)
|
|
|
|
@patch('.models.AutogroupsConfig.delete_alliance_managed_groups')
|
|
@patch('.models.AutogroupsConfig.delete_corp_managed_groups')
|
|
def test_pre_save_config_deletes_corp_groups(self, delete_corp_managed_groups, delete_alliance_managed_groups):
|
|
"""
|
|
Test that delete_corp_managed_groups is called when the corp_groups
|
|
setting is toggled to False
|
|
"""
|
|
obj = AutogroupsConfig.objects.create(corp_groups=True)
|
|
|
|
obj.create_corp_group(self.corp)
|
|
|
|
# Trigger signal
|
|
obj.corp_groups = False
|
|
obj.save()
|
|
|
|
self.assertTrue(delete_corp_managed_groups.called)
|
|
self.assertFalse(delete_alliance_managed_groups.called)
|
|
self.assertEqual(delete_corp_managed_groups.call_count, 1)
|
|
|
|
@patch('.models.AutogroupsConfig.delete_alliance_managed_groups')
|
|
@patch('.models.AutogroupsConfig.delete_corp_managed_groups')
|
|
def test_pre_save_config_does_nothing(self, delete_corp_managed_groups, delete_alliance_managed_groups):
|
|
"""
|
|
Test groups arent deleted if we arent setting the enabled params to False
|
|
"""
|
|
obj = AutogroupsConfig.objects.create(corp_groups=True)
|
|
|
|
obj.create_corp_group(self.corp)
|
|
|
|
# Trigger signal
|
|
obj.alliance_groups = True
|
|
obj.save()
|
|
|
|
self.assertFalse(delete_corp_managed_groups.called)
|
|
self.assertFalse(delete_alliance_managed_groups.called)
|
|
|
|
@patch('.models.AutogroupsConfig.delete_alliance_managed_groups')
|
|
@patch('.models.AutogroupsConfig.delete_corp_managed_groups')
|
|
def test_pre_delete_config(self, delete_corp_managed_groups, delete_alliance_managed_groups):
|
|
"""
|
|
Test groups are deleted if config is deleted
|
|
"""
|
|
obj = AutogroupsConfig.objects.create()
|
|
|
|
# Trigger signal
|
|
obj.delete()
|
|
|
|
self.assertTrue(delete_corp_managed_groups.called)
|
|
self.assertTrue(delete_alliance_managed_groups.called)
|
|
|
|
@patch('.models.AutogroupsConfig.update_group_membership_for_state')
|
|
def test_autogroups_states_changed_add(self, update_group_membership_for_state):
|
|
"""
|
|
Test update_group_membership_for_state is called when a state is added to
|
|
the AutogroupsConfig
|
|
"""
|
|
obj = AutogroupsConfig.objects.create(alliance_groups=True)
|
|
state = AuthUtils.get_member_state()
|
|
|
|
# Trigger
|
|
obj.states.add(state)
|
|
|
|
self.assertTrue(update_group_membership_for_state.called)
|
|
self.assertEqual(update_group_membership_for_state.call_count, 1)
|
|
args, kwargs = update_group_membership_for_state.call_args
|
|
self.assertEqual(args[0], state)
|
|
|
|
@patch('.models.AutogroupsConfig.update_group_membership_for_state')
|
|
def test_autogroups_states_changed_remove(self, update_group_membership_for_state):
|
|
"""
|
|
Test update_group_membership_for_state is called when a state is removed from
|
|
the AutogroupsConfig
|
|
"""
|
|
obj = AutogroupsConfig.objects.create(alliance_groups=True)
|
|
state = AuthUtils.get_member_state()
|
|
|
|
disconnect_signals()
|
|
obj.states.add(state)
|
|
connect_signals()
|
|
|
|
# Trigger
|
|
obj.states.remove(state)
|
|
|
|
self.assertTrue(update_group_membership_for_state.called)
|
|
self.assertEqual(update_group_membership_for_state.call_count, 1)
|
|
args, kwargs = update_group_membership_for_state.call_args
|
|
self.assertEqual(args[0], state)
|