def test_delete_user_with_games_keeps_games(self): # User 1 and 2 are from the same group # User 3 is from a different group user = UserFactory() game = GameFactory(creator=user) group = user.group user2 = UserFactory(group=group) game2 = GameFactory(creator=user2) user3 = UserFactory() game3 = GameFactory(creator=user3) self.assertEqual( group, game.creator.group, "game1 not associated with creator group", ) self.assertEqual( group, game2.creator.group, "game2 not associated with creator group", ) self.assertNotEqual( game.creator, game2.creator, "games are associated with same creator", ) user.delete() game.refresh_from_db() user2.delete() game2.refresh_from_db() user3.delete() game3.refresh_from_db() # User 1 and 2 should be replaced by the same sentinel user # User 3 should be replaced by another sentinel user # User count should be 2 now as user 1 and 2 are 'merged'. self.assertEqual( get_user_model().objects.count(), 2, "users were not replaced", ) self.assertEqual(Game.objects.count(), 3, "game was deleted") self.assertEqual(group, game.creator.group, "game1 changed group") self.assertEqual(group, game2.creator.group, "game2 changed group") self.assertEqual( game.creator.email, f"deleted_user@{group}", "creator was not replaced with sentinel user", ) self.assertEqual( game2.creator.email, f"deleted_user@{group}", "creator was not replaced with sentinel user", ) self.assertEqual( game.creator, game2.creator, "different sentinel users were used for the same group", ) self.assertNotEqual( game.creator, game3.creator, "same sentinel user was used for different groups", )
def test_delete_user_with_bookings_keeps_bookings(self): # User 1 and 2 are from the same group # User 3 is from a different group user = UserFactory() booking = BookingFactory(requester=user, game__creator=user) group = user.group user2 = UserFactory(group=group) booking2 = BookingFactory(requester=user2, game__creator=user2) user3 = UserFactory() booking3 = BookingFactory(requester=user3, game__creator=user3) self.assertEqual( group, booking.requester.group, "booking1 not associated with requester group", ) self.assertEqual( group, booking2.requester.group, "booking2 not associated with requester group", ) self.assertNotEqual( booking.requester, booking2.requester, "bookings are associated with same requester", ) user.delete() booking.refresh_from_db() user2.delete() booking2.refresh_from_db() user3.delete() booking3.refresh_from_db() # User 1 and 2 should be replaced by the same sentinel user # User 3 should be replaced by another sentinel user # User count should be 2 now as user 1 and 2 are 'merged'. self.assertEqual( get_user_model().objects.count(), 2, "users were not replaced", ) self.assertEqual(Booking.objects.count(), 3, "booking was deleted") self.assertEqual(group, booking.requester.group, "booking1 changed group") self.assertEqual(group, booking2.requester.group, "booking2 changed group") self.assertEqual( booking.requester.email, f"deleted_user@{group}", "requester was not replaced with sentinel user", ) self.assertEqual( booking2.requester.email, f"deleted_user@{group}", "requester was not replaced with sentinel user", ) self.assertEqual( booking.requester, booking2.requester, "different sentinel users were used for the same group", ) self.assertNotEqual( booking.requester, booking3.requester, "same sentinel user was used for different groups", )
def test_delete_enrolled_user(self): new_user = UserFactory() invitee = self.main_event.enroll_user(new_user) new_user.delete() invitee.refresh_from_db(fields=("user", )) self.assertEqual(invitee.user, get_sentinel_user())
def test_user_delete_cascade(self): user = UserFactory() invite = self.invite_factory(user=user) user.delete() with self.assertRaises(RegistrationInvite.DoesNotExist): invite = RegistrationInvite.objects.get(pk=invite.pk)