mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-08 20:10:17 +02:00
126 lines
4.8 KiB
Python
126 lines
4.8 KiB
Python
from allianceauth.eveonline.models import EveCorporationInfo
|
|
from django.test import TestCase
|
|
|
|
from allianceauth.tests.auth_utils import AuthUtils
|
|
|
|
from ..models import AutogroupsConfig
|
|
from . import patch
|
|
|
|
|
|
class AutogroupsConfigManagerTestCase(TestCase):
|
|
|
|
def test_update_groups_for_state(self):
|
|
member = AuthUtils.create_member('test member')
|
|
obj = AutogroupsConfig.objects.create()
|
|
obj.states.add(member.profile.state)
|
|
|
|
with patch('.models.AutogroupsConfig.update_group_membership_for_user') as update_group_membership_for_user:
|
|
AutogroupsConfig.objects.update_groups_for_state(member.profile.state)
|
|
|
|
self.assertTrue(update_group_membership_for_user.called)
|
|
self.assertEqual(update_group_membership_for_user.call_count, 1)
|
|
args, kwargs = update_group_membership_for_user.call_args
|
|
self.assertEqual(args[0], member)
|
|
|
|
def test_update_groups_for_user(self):
|
|
member = AuthUtils.create_member('test member')
|
|
obj = AutogroupsConfig.objects.create()
|
|
obj.states.add(member.profile.state)
|
|
|
|
with patch('.models.AutogroupsConfig.update_group_membership_for_user') \
|
|
as update_group_membership_for_user:
|
|
AutogroupsConfig.objects.update_groups_for_user(
|
|
user=member
|
|
)
|
|
|
|
self.assertTrue(update_group_membership_for_user.called)
|
|
self.assertEqual(update_group_membership_for_user.call_count, 1)
|
|
args, kwargs = update_group_membership_for_user.call_args
|
|
self.assertEqual(args[0], member)
|
|
|
|
def test_update_groups_for_user_no_state(self):
|
|
member = AuthUtils.create_member('test member')
|
|
obj = AutogroupsConfig.objects.create()
|
|
obj.states.add(member.profile.state)
|
|
|
|
with patch('.models.AutogroupsConfig.update_group_membership_for_user') \
|
|
as update_group_membership_for_user:
|
|
AutogroupsConfig.objects.update_groups_for_user(
|
|
user=member,
|
|
state=member.profile.state
|
|
)
|
|
|
|
self.assertTrue(update_group_membership_for_user.called)
|
|
self.assertEqual(update_group_membership_for_user.call_count, 1)
|
|
args, kwargs = update_group_membership_for_user.call_args
|
|
self.assertEqual(args[0], member)
|
|
|
|
|
|
@patch('.models.AutogroupsConfig.update_group_membership_for_user')
|
|
@patch('.models.AutogroupsConfig.remove_user_from_alliance_groups')
|
|
@patch('.models.AutogroupsConfig.remove_user_from_corp_groups')
|
|
def test_update_groups_no_config(self, remove_corp, remove_alliance, update_groups):
|
|
member = AuthUtils.create_member('test member')
|
|
obj = AutogroupsConfig.objects.create()
|
|
|
|
# Corp and alliance groups should be removed from users if their state has no config
|
|
AutogroupsConfig.objects.update_groups_for_user(member)
|
|
|
|
self.assertFalse(update_groups.called)
|
|
self.assertTrue(remove_alliance.called)
|
|
self.assertTrue(remove_corp.called)
|
|
|
|
# The normal group assignment should occur if there state has a config
|
|
obj.states.add(member.profile.state)
|
|
AutogroupsConfig.objects.update_groups_for_user(member)
|
|
|
|
self.assertTrue(update_groups.called)
|
|
|
|
def test_update_group_membership_corp_in_two_configs(self):
|
|
# given
|
|
member = AuthUtils.create_member('test member')
|
|
AuthUtils.add_main_character_2(
|
|
member,
|
|
character_id='1234',
|
|
name='test character',
|
|
corp_id='2345',
|
|
corp_name='corp name',
|
|
corp_ticker='TIKK',
|
|
|
|
)
|
|
|
|
corp = EveCorporationInfo.objects.create(
|
|
corporation_id='2345',
|
|
corporation_name='corp name',
|
|
corporation_ticker='TIKK',
|
|
member_count=10,
|
|
)
|
|
|
|
member_state = AuthUtils.get_member_state()
|
|
member_config = AutogroupsConfig.objects.create(corp_groups=True)
|
|
member_config.states.add(member_state)
|
|
blue_state = AuthUtils.get_blue_state()
|
|
blue_state.member_corporations.add(corp)
|
|
blue_config = AutogroupsConfig.objects.create(corp_groups=True)
|
|
blue_config.states.add(blue_state)
|
|
|
|
member.profile.state = blue_state
|
|
member.profile.save()
|
|
|
|
AutogroupsConfig.objects.update_groups_for_user(member)
|
|
|
|
# Checks before test that the role is correctly applied
|
|
group = blue_config.get_corp_group(corp)
|
|
self.assertIn(group, member.groups.all())
|
|
|
|
# when
|
|
blue_state.member_corporations.remove(corp)
|
|
member_state.member_corporations.add(corp)
|
|
member.profile.state = member_state
|
|
member.profile.save()
|
|
|
|
# then
|
|
AutogroupsConfig.objects.update_groups_for_user(member)
|
|
group = member_config.get_corp_group(corp)
|
|
self.assertIn(group, member.groups.all())
|