def test_get_following_user_id_set(self): FriendshipService.invalidate_following_cache( from_user_id=self.user2.id) user_id_set_2 = FriendshipService.get_following_user_id_set( self.user2.id) self.assertEqual(user_id_set_2, {self.user1.id, self.user3.id}) user_id_set_1 = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set_1, {self.user2.id}) Friendship.objects.filter( from_user=self.user2, to_user=self.user3, ).delete() Friendship.objects.filter( from_user=self.user1, to_user=self.user2, ).delete() # mannually clear the cache FriendshipService.invalidate_following_cache( from_user_id=self.user2.id) user_id_set_2 = FriendshipService.get_following_user_id_set( self.user2.id) self.assertEqual(user_id_set_2, {self.user1.id}) # cache automatically cleared in delete() by listener user_id_set_1 = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(len(user_id_set_1), 0) # cache automatically cleared in create() by listener Friendship.objects.create(from_user=self.user1, to_user=self.user3) user_id_set_1 = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set_1, {self.user3.id})
def test_get_followings(self): user1 = self.create_user('user1') user2 = self.create_user('user2') for to_user in [user1, user2, self.alex]: self.create_friendship(from_user=self.bob, to_user=to_user) user_id_set = FriendshipService.get_following_user_id_set(self.bob.id) self.assertEqual(user_id_set, {user1.id, user2.id, self.alex.id}) FriendshipService.unfollow(self.bob.id, self.alex.id) user_id_set = FriendshipService.get_following_user_id_set(self.bob.id) self.assertEqual(user_id_set, {user1.id, user2.id})
def test_get_following(self): user1 = self.create_user('user1') user2 = self.create_user('user2') for to_user in [user1, user2, self.ming]: self.create_friendship(self.rui, to_user) user_id_set = FriendshipService.get_following_user_id_set(self.rui.id) self.assertSetEqual(user_id_set, {user1.id, user2.id, self.ming.id}) FriendshipService.unfollow(self.rui.id, self.ming.id) user_id_set = FriendshipService.get_following_user_id_set(self.rui.id) self.assertSetEqual(user_id_set, {user1.id, user2.id})
def test_get_followings(self): user1 = self.create_user('user1') user2 = self.create_user('user2') for to_user in [user1, user2, self.lux]: Friendship.objects.create(from_user=self.ray, to_user=to_user) user_id_set = FriendshipService.get_following_user_id_set(self.ray.id) self.assertSetEqual(user_id_set, {user1.id, user2.id, self.lux.id}) Friendship.objects.filter(from_user=self.ray, to_user=self.lux).delete() user_id_set = FriendshipService.get_following_user_id_set(self.ray.id) self.assertSetEqual(user_id_set, {user1.id, user2.id})
def test_get_followings(self): user3 = self.create_user('user3') user4 = self.create_user('user4') for to_user in [self.user2, user3, user4]: Friendship.objects.create(to_user=to_user, from_user=self.user1) user_id_set = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set, {self.user2.id, user3.id, user4.id}) Friendship.objects.filter(to_user=self.user2, from_user=self.user1).delete() user_id_set = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set, {user3.id, user4.id})
def test_get_followings(self): user1 = self.create_user('user1') user2 = self.create_user('user2') for to_user in [user1, user2, self.dongxie]: self.create_friendship(from_user=self.linghu, to_user=to_user) FriendshipService.invalidate_following_cache(self.linghu.id) user_id_set = FriendshipService.get_following_user_id_set(self.linghu.id) self.assertSetEqual(user_id_set, {user1.id, user2.id, self.dongxie.id}) FriendshipService.unfollow(self.linghu.id, self.dongxie.id) FriendshipService.invalidate_following_cache(self.linghu.id) user_id_set = FriendshipService.get_following_user_id_set(self.linghu.id) self.assertSetEqual(user_id_set, {user1.id, user2.id})
def test_get_followings(self): user3 = self.create_user('user3') user4 = self.create_user('user4') for to_user in [user3, user4, self.user2]: Friendship.objects.create(from_user=self.user1, to_user=to_user) # FriendshipService.invalidate_following_cache(from_user_id=self.user1.id) user_id_set = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set, {user3.id, user4.id, self.user2.id}) Friendship.objects.filter(from_user=self.user1.id, to_user=self.user2.id).delete() # FriendshipService.invalidate_following_cache(from_user_id=self.user1.id) user_id_set = FriendshipService.get_following_user_id_set( self.user1.id) self.assertEqual(user_id_set, {user3.id, user4.id})
def following_user_id_set(self: serializers.ModelSerializer): if self.context['request'].user.is_anonymous: return {} if hasattr(self, '_cached_following_user_id_set'): return self._cached_following_user_id_set user_id_set = FriendshipService.get_following_user_id_set( self.context['request'].user.id) setattr(self, '_cached_following_user_id_set', user_id_set) return user_id_set
def _get_following_user_id_set(self): # return empty set for anonymous client if self.context['request'].user.is_anonymous: return {} if hasattr(self, '_cached_following_user_id_set'): return self._cached_following_user_id_set user_id_set = FriendshipService.get_following_user_id_set( from_user_id=self.context['request'].user.id) setattr(self, '_cached_following_user_id_set', user_id_set) return user_id_set
def _get_following_user_id_set(self): if self.context['request'].user.is_anonymous: return () if hasattr(self, '_cached_following_user_id_set'): return self._cached_following_user_id_set user_id_set = FriendshipService.get_following_user_id_set( self.context['request'].user.id, ) setattr(self, '_cached_following_user_id_set', user_id_set) return user_id_set