def test_fetch_post_likes_parser(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) self.assertEqual(post.like_users.count(), 0) self.assertEqual(post.likes, 0) post.fetch_likes(source='parser') self.assertTrue(post.likes > 120) self.assertEqual(post.likes, post.like_users.count())
def test_fetch_group_post_changing_likes(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP2_ID) post = PostFactory(remote_id=GROUP2_POST_WITH_MANY_LIKES_ID, wall_owner=group) ids1 = range(100, 200) with mock.patch('vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids1): users1 = post.fetch_likes(all=True) state_time1 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users1.count()) self.assertEqual(post.like_users.count(), len(ids1)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids1)) ids2 = range(50, 150) with mock.patch('vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids2): users2 = post.fetch_likes(all=True) state_time2 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users2.count()) self.assertEqual(post.like_users.count(), len(ids2)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids2)) ids3 = range(0, 30) with mock.patch('vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids3): users3 = post.fetch_likes(all=True) state_time3 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users3.count()) self.assertEqual(post.like_users.count(), len(ids3)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids3)) self.assertItemsEqual(post.like_users.were_at(state_time1, only_pk=True), ids1) self.assertItemsEqual(post.like_users.were_at(state_time2, only_pk=True), ids2) self.assertItemsEqual(post.like_users.were_at(state_time3, only_pk=True), ids3) self.assertItemsEqual(post.like_users.added_at(state_time2, only_pk=True), range(50, 100)) self.assertItemsEqual(post.like_users.removed_at(state_time2, only_pk=True), range(150, 200)) self.assertItemsEqual(post.like_users.added_at(state_time3, only_pk=True), range(0, 30)) self.assertItemsEqual(post.like_users.removed_at(state_time3, only_pk=True), range(50, 150))
def test_fetch_post_likes(self): post = PostFactory(graph_id=POST_WITH_MANY_LIKES_ID) self.assertEqual(post.like_users.count(), 0) self.assertEqual(User.objects.count(), 1) users = post.fetch_likes(all=True) self.assertTrue(users.count() > 1000) self.assertEqual(post.likes_count, users.count()) self.assertEqual(post.likes_count, User.objects.count() - 1) self.assertEqual(post.likes_count, post.like_users.count())
def test_fetch_group_post_many_likes(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP2_ID) post = PostFactory(remote_id=GROUP2_POST_WITH_MANY_LIKES_ID, wall_owner=group) users_initial = User.objects.count() self.assertEqual(post.like_users.count(), 0) self.assertEqual(post.likes, 0) users = post.fetch_likes(all=True) self.assertTrue(post.likes > 3800) self.assertEqual(post.likes, len(users)) self.assertEqual(post.likes, User.objects.count() - users_initial) self.assertEqual(post.likes, post.like_users.count())
def test_fetch_group_post_likes(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) self.assertEqual(post.like_users.count(), 0) self.assertEqual(post.likes, 0) users_initial = User.objects.count() users = post.fetch_likes(all=True) self.assertTrue(post.likes > 120) self.assertEqual(post.likes, len(users)) self.assertEqual(post.likes, User.objects.count() - users_initial) self.assertEqual(post.likes, post.like_users.count()) # try to fetch again likes = post.likes users = post.fetch_likes(all=True) self.assertEqual(post.likes, likes) self.assertEqual(post.likes, len(users)) self.assertEqual(post.likes, User.objects.count() - users_initial) self.assertEqual(post.likes, post.like_users.count())
def test_fetch_group_post_changing_likes(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP2_ID) post = PostFactory(remote_id=GROUP2_POST_WITH_MANY_LIKES_ID, wall_owner=group) ids1 = range(100, 200) with mock.patch( 'vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids1): users1 = post.fetch_likes(all=True) state_time1 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users1.count()) self.assertEqual(post.like_users.count(), len(ids1)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids1)) ids2 = range(50, 150) with mock.patch( 'vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids2): users2 = post.fetch_likes(all=True) state_time2 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users2.count()) self.assertEqual(post.like_users.count(), len(ids2)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids2)) ids3 = range(0, 30) with mock.patch( 'vkontakte_users.models.User.remote.fetch_likes_user_ids', side_effect=lambda **kw: ids3): users3 = post.fetch_likes(all=True) state_time3 = post.like_users.last_update_time() self.assertEqual(post.like_users.count(), users3.count()) self.assertEqual(post.like_users.count(), len(ids3)) self.assertItemsEqual(post.like_users.all(), User.objects.filter(remote_id__in=ids3)) self.assertItemsEqual( post.like_users.were_at(state_time1, only_pk=True), ids1) self.assertItemsEqual( post.like_users.were_at(state_time2, only_pk=True), ids2) self.assertItemsEqual( post.like_users.were_at(state_time3, only_pk=True), ids3) self.assertItemsEqual( post.like_users.added_at(state_time2, only_pk=True), range(50, 100)) self.assertItemsEqual( post.like_users.removed_at(state_time2, only_pk=True), range(150, 200)) self.assertItemsEqual( post.like_users.added_at(state_time3, only_pk=True), range(0, 30)) self.assertItemsEqual( post.like_users.removed_at(state_time3, only_pk=True), range(50, 150))