def test_fires_removed_from_group_signal(self): """ Test that removing a user to a group fires the correct django signal Signal test method found at https://stackoverflow.com/questions/3817213/ """ def remove_user_group_signal_receiver(**kwargs): """Demo signal for testing""" # pylint: disable=attribute-defined-outside-init self.remove_signal_group = kwargs['group'] self.remove_signal_user = kwargs['user'] # Attach our test signal group_member_removed.connect(remove_user_group_signal_receiver) group = self.create_group() user = self.create_user() user.add_to_group(group.pk) self.assertFalse(hasattr(self, 'remove_signal_group')) self.assertFalse(hasattr(self, 'remove_signal_user')) remove_user_from_group(user=user, group=group) self.assertEqual(self.remove_signal_group, group) self.assertEqual(self.remove_signal_user, user) group_member_removed.disconnect( receiver=remove_user_group_signal_receiver)
def test_removes_owner(self): """Removing an owner from membership should remove their ownership.""" self.group.owners.add(self.user) self.assertIn(self.user, self.group.owners.all()) remove_user_from_group(self.user, self.group) self.assertNotIn(self.user, self.group.owners.all())
def test_fires_removed_from_group_signal(self): """ Test that removing a user to a group fires the correct django signal Signal test method found at https://stackoverflow.com/questions/3817213/ """ def remove_user_group_signal_receiver(**kwargs): """Demo signal for testing""" # pylint: disable=attribute-defined-outside-init self.remove_signal_group = kwargs["group"] self.remove_signal_user = kwargs["user"] # Attach our test signal group_member_removed.connect(remove_user_group_signal_receiver) group = self.create_group() user = self.create_user() user.add_to_group(group.pk) self.assertFalse(hasattr(self, "remove_signal_group")) self.assertFalse(hasattr(self, "remove_signal_user")) remove_user_from_group(user=user, group=group) self.assertEqual(self.remove_signal_group, group) self.assertEqual(self.remove_signal_user, user) group_member_removed.disconnect(receiver=remove_user_group_signal_receiver)
def test_remove_user_from_group_removes_user(self): """Test removing a user from a group.""" self.assertIn(self.group, self.user.groups_joined) remove_user_from_group(self.user.pk, self.group.pk) self.assertNotIn(self.group, self.user.groups_joined) self.assertFalse( Subscription.objects.filter(user=self.user, group=self.group).exists())
def test_reactivates_deleted_userthreads(self): """Re-joining a group should reactivate old UserThreads.""" user = self.thread.recipients.first() ut = UserThread.objects.get(user=user, thread=self.thread) ut_id = ut.pk remove_user_from_group(user, self.group) add_user_to_group.delay(user.pk, self.group.pk) self.assertTrue(UserThread.objects.filter(pk=ut_id).exists()) self.assertEqual(UserThread.objects.filter(user=user, thread=self.thread).count(), 1)
def test_reactivates_deleted_userthreads(self): """Re-joining a group should reactivate old UserThreads.""" user = self.thread.recipients.first() ut = UserThread.objects.get(user=user, thread=self.thread) ut_id = ut.pk remove_user_from_group(user, self.group) add_user_to_group.delay(user.pk, self.group.pk) self.assertTrue(UserThread.objects.filter(pk=ut_id).exists()) self.assertEqual( UserThread.objects.filter(user=user, thread=self.thread).count(), 1)
def test_does_not_remove_userthreads_for_other_groups(self): """Only delete UserThreads for the group a user is leaving.""" # Create a new thread and add our user to the thread's group thread2 = self.create_thread() add_user_to_group(self.user.pk, thread2.group.pk) # Remove user from the group created in setup remove_user_from_group(self.user.pk, self.group.pk) # There should still be a userthread for the group created in this test # through thread2. self.assertTrue(UserThread.objects.filter(user=self.user, thread=thread2).exists())
def test_does_not_remove_userthreads_for_other_groups(self): """Only delete UserThreads for the group a user is leaving.""" # Create a new thread and add our user to the thread's group thread2 = self.create_thread() add_user_to_group(self.user.pk, thread2.group.pk) # Remove user from the group created in setup remove_user_from_group(self.user.pk, self.group.pk) # There should still be a userthread for the group created in this test # through thread2. self.assertTrue( UserThread.objects.filter(user=self.user, thread=thread2).exists())
def test_user_removed_from_inactive_threads(self): """ Test that a user removed from a group can no longer see threads they were not personally involved in. """ user_threads = UserThread.objects.filter(user=self.user) uninvolved_thread = self.create_thread(group=self.group) self.assertTrue(user_threads.filter(thread=self.thread).exists()) self.assertTrue(user_threads.filter(thread=uninvolved_thread).exists()) remove_user_from_group(self.user, self.group) self.assertTrue(user_threads.filter(thread=self.thread).exists()) self.assertFalse(user_threads.filter(thread=uninvolved_thread).exists())
def test_user_removed_from_inactive_threads(self): """ Test that a user removed from a group can no longer see threads they were not personally involved in. """ user_threads = UserThread.objects.filter(user=self.user) uninvolved_thread = self.create_thread(group=self.group) self.assertTrue(user_threads.filter(thread=self.thread).exists()) self.assertTrue(user_threads.filter(thread=uninvolved_thread).exists()) remove_user_from_group(self.user, self.group) self.assertTrue(user_threads.filter(thread=self.thread).exists()) self.assertFalse( user_threads.filter(thread=uninvolved_thread).exists())
def remove_from_group(self, group): """Removes user from a group and handles existing threads/messages.""" group_tasks.remove_user_from_group(user=self, group=group)
def test_remove_user_from_group_removes_user(self): """Test removing a user from a group.""" self.assertIn(self.group, self.user.groups_joined) remove_user_from_group(self.user.pk, self.group.pk) self.assertNotIn(self.group, self.user.groups_joined) self.assertFalse(Subscription.objects.filter(user=self.user, group=self.group).exists())