def test_fetch_group_post_changing_reposts(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) resources1 = [{'from_id': 1, 'date': int(time.time()) - 1000}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources1): users1 = post.fetch_reposts(all=True) state_time1 = post.repost_users.last_update_time() state_time_add1 = datetime.fromtimestamp(resources1[0]['date']) self.assertEqual(post.repost_users.count(), users1.count()) self.assertEqual(post.repost_users.count(), 1) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[1])) resources2 = [{'from_id': 2, 'date': int(time.time()) - 500}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources1 + resources2): users2 = post.fetch_reposts(all=True) state_time2 = post.repost_users.last_update_time() state_time_add2 = datetime.fromtimestamp(resources2[0]['date']) self.assertEqual(post.repost_users.count(), users2.count()) self.assertEqual(post.repost_users.count(), 2) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[1, 2])) resources3 = [{'from_id': 3, 'date': int(time.time()) - 100}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources3): users3 = post.fetch_reposts(all=True) state_time3 = post.repost_users.last_update_time() state_time_add3 = datetime.fromtimestamp(resources3[0]['date']) self.assertEqual(post.repost_users.count(), users3.count()) self.assertEqual(post.repost_users.count(), 1) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[3])) self.assertItemsEqual(post.repost_users.were_at(state_time1, only_pk=True), [1]) self.assertItemsEqual(post.repost_users.were_at(state_time2, only_pk=True), [1, 2]) self.assertItemsEqual(post.repost_users.were_at(state_time3, only_pk=True), [3]) self.assertItemsEqual(post.repost_users.added_at(state_time_add1, only_pk=True), [1]) self.assertItemsEqual(post.repost_users.removed_at(state_time1, only_pk=True), []) self.assertItemsEqual(post.repost_users.added_at(state_time_add2, only_pk=True), [2]) self.assertItemsEqual(post.repost_users.removed_at(state_time2, only_pk=True), []) self.assertItemsEqual(post.repost_users.added_at(state_time_add3, only_pk=True), [3]) self.assertItemsEqual(post.repost_users.removed_at(state_time3, only_pk=True), [1, 2])
def test_fetch_group_post_updating_initial_reposts_time_from(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) post.repost_users.through.objects.bulk_create([post.repost_users.through(user_id=1, post_id=post.pk)]) self.assertEqual(post.repost_users.through.objects.count(), 1) resources = [{'from_id': 1, 'date': int(time.time())}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources): post.fetch_reposts(all=True) self.assertEqual(post.repost_users.through.objects.count(), 1) instance = post.repost_users.through.objects.all()[0] self.assertEqual(instance.user_id, 1) self.assertEqual(instance.post_id, post.pk) self.assertEqual(instance.time_from, datetime.fromtimestamp(resources[0]['date']))
def test_fetch_group_post_updating_initial_reposts_time_from( self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) post.repost_users.through.objects.bulk_create( [post.repost_users.through(user_id=1, post_id=post.pk)]) self.assertEqual(post.repost_users.through.objects.count(), 1) resources = [{'from_id': 1, 'date': int(time.time())}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources): post.fetch_reposts(all=True) self.assertEqual(post.repost_users.through.objects.count(), 1) instance = post.repost_users.through.objects.all()[0] self.assertEqual(instance.user_id, 1) self.assertEqual(instance.post_id, post.pk) self.assertEqual(instance.time_from, datetime.fromtimestamp(resources[0]['date']))
def test_fetch_post_reposts(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) users_initial = User.objects.count() self.assertEqual(post.repost_users.count(), 0) users = post.fetch_reposts(all=True) self.assertTrue(post.reposts > 20) # self.assertTrue(len(post.reposters) > 20) self.assertEqual(post.reposts, users.count()) self.assertEqual(post.reposts, User.objects.count() - users_initial) self.assertEqual(post.reposts, post.repost_users.count())
def test_fetch_post_reposts1(self, *args, **kwargs): group = GroupFactory(remote_id=36948301) post = PostFactory(remote_id='-36948301_23383', wall_owner=group) users_initial = User.objects.count() self.assertEqual(post.repost_users.count(), 0) users = post.fetch_reposts(all=True) # print post.reposts self.assertTrue(post.reposts > 120) self.assertEqual(post.reposts, users.count()) self.assertEqual(post.reposts, User.objects.count() - users_initial) self.assertEqual(post.reposts, post.repost_users.count())
def test_fetch_group_post_changing_reposts(self, *args, **kwargs): group = GroupFactory(remote_id=GROUP_ID) post = PostFactory(remote_id=GROUP_POST_ID, wall_owner=group) resources1 = [{'from_id': 1, 'date': int(time.time()) - 1000}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources1): users1 = post.fetch_reposts(all=True) state_time1 = post.repost_users.last_update_time() state_time_add1 = datetime.fromtimestamp(resources1[0]['date']) self.assertEqual(post.repost_users.count(), users1.count()) self.assertEqual(post.repost_users.count(), 1) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[1])) resources2 = [{'from_id': 2, 'date': int(time.time()) - 500}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources1 + resources2): users2 = post.fetch_reposts(all=True) state_time2 = post.repost_users.last_update_time() state_time_add2 = datetime.fromtimestamp(resources2[0]['date']) self.assertEqual(post.repost_users.count(), users2.count()) self.assertEqual(post.repost_users.count(), 2) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[1, 2])) resources3 = [{'from_id': 3, 'date': int(time.time()) - 100}] with mock.patch('vkontakte_wall.models.Post.fetch_repost_items', side_effect=lambda **kw: resources3): users3 = post.fetch_reposts(all=True) state_time3 = post.repost_users.last_update_time() state_time_add3 = datetime.fromtimestamp(resources3[0]['date']) self.assertEqual(post.repost_users.count(), users3.count()) self.assertEqual(post.repost_users.count(), 1) self.assertItemsEqual(post.repost_users.all(), User.objects.filter(remote_id__in=[3])) self.assertItemsEqual( post.repost_users.were_at(state_time1, only_pk=True), [1]) self.assertItemsEqual( post.repost_users.were_at(state_time2, only_pk=True), [1, 2]) self.assertItemsEqual( post.repost_users.were_at(state_time3, only_pk=True), [3]) self.assertItemsEqual( post.repost_users.added_at(state_time_add1, only_pk=True), [1]) self.assertItemsEqual( post.repost_users.removed_at(state_time1, only_pk=True), []) self.assertItemsEqual( post.repost_users.added_at(state_time_add2, only_pk=True), [2]) self.assertItemsEqual( post.repost_users.removed_at(state_time2, only_pk=True), []) self.assertItemsEqual( post.repost_users.added_at(state_time_add3, only_pk=True), [3]) self.assertItemsEqual( post.repost_users.removed_at(state_time3, only_pk=True), [1, 2])