def test_fetch_group_wall(self): group = GroupFactory.create(remote_id=GROUP_ID, screen_name=GROUP_SCREEN_NAME) self.assertEqual(Post.objects.count(), 0) posts = group.fetch_posts(count=10) self.assertEqual(posts[0].wall_owner, group) self.assertTrue(len(posts) == Post.objects.count() == 10) self.assertTrue(isinstance(posts[0].date, datetime)) self.assertTrue(posts[0].likes + posts[1].likes > 0) self.assertTrue(posts[0].comments + posts[1].comments > 0) self.assertTrue(len(posts[0].text) > 0) # testing `after` parameter after = Post.objects.order_by('date')[0].date Post.objects.all().delete() self.assertEqual(Post.objects.count(), 0) posts = group.fetch_posts(after=after) self.assertTrue(len(posts) == Post.objects.count() == 10) # testing `after` and `all` parameters and returning less than all scope of posts Post.objects.all().delete() self.assertEqual(Post.objects.count(), 0) group.fetch_posts(count=30) posts = group.fetch_posts(after=after, all=True) self.assertEqual(Post.objects.count(), 30) self.assertEqual(len(posts), 10)
def test_parse_comments(self): response = '''{"response":[6, {"cid":2505,"uid":16271479,"date":1298365200,"text":"Добрый день , кароче такая идея когда опросы создаешь вместо статуса - можно выбрать аудитории опрашиваемых, например только женский или мужской пол могут участвовать (то бишь голосовать в опросе)."}, {"cid":2507,"uid":16271479,"date":1286105582,"text":"Это уже не практично, имхо.<br>Для этого делайте группу и там опрос, а в группу принимайте тех, кого нужно.","reply_to_uid":16271479,"reply_to_cid":2505}, {"cid":2547,"uid":2943,"date":1286218080,"text":"Он будет только для групп благотворительных организаций."}]} ''' group = GroupFactory.create(remote_id=OWNER_ID) post = PostFactory.create(remote_id=TR_POST_ID, wall_owner=group) instance = CommentFactory.create(post=post) author = UserFactory.create(remote_id=16271479) instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, '201164356_2505') self.assertEqual(instance.text, u'Добрый день , кароче такая идея когда опросы создаешь вместо статуса - можно выбрать аудитории опрашиваемых, например только женский или мужской пол могут участвовать (то бишь голосовать в опросе).') self.assertEqual(instance.author, author) self.assertTrue(isinstance(instance.date, datetime)) instance = Comment(post=post) instance.parse(json.loads(response)['response'][2]) instance.save() self.assertEqual(instance.remote_id, '201164356_2507') self.assertEqual(instance.reply_for.remote_id, 16271479)
def test_fetch_group_post_comments(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID, screen_name=GROUP_SCREEN_NAME) post = PostFactory.create(remote_id=GROUP_POST_ID, wall_owner=group) self.assertEqual(Comment.objects.count(), 0) comments = post.fetch_comments(sort='desc', count=90) self.assertTrue(len(comments) == Comment.objects.count() == post.wall_comments.count() == 90) self.assertEqual(comments[0].post, post) self.assertEqual(comments[0].wall_owner, group) # testing `after` parameter after = Comment.objects.order_by('date')[0].date Comment.objects.all().delete() self.assertEqual(Comment.objects.count(), 0) comments = post.fetch_comments(sort='desc', after=after, count=100) self.assertTrue(len(comments) == Comment.objects.count() == post.wall_comments.count() == 90) # testing `after` and `all` parameters Comment.objects.all().delete() self.assertEqual(Comment.objects.count(), 0) comments = post.fetch_comments(sort='desc', after=after, all=True) self.assertTrue(len(comments) == Comment.objects.count() == post.wall_comments.count() == 90)
def test_raise_users_exception(self): group = GroupFactory.create(remote_id=GROUP_ID) try: group.users assert False except ImproperlyConfigured, e: pass
def test_post_prepare_delete_restore_params(self): group = GroupFactory.create(remote_id=OWNER_ID) post = PostFactory.create(remote_id='%s_17' % OWNER_ID, wall_owner=group) expected_params = { 'owner_id': OWNER_ID, 'post_id': '17', } self.assertEqual(post.prepare_delete_restore_params(), expected_params)
def test_fetch_post_reposts(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=GROUP_POST_ID, wall_owner=group) self.assertTrue(post.repost_users.count() == 0) users = post.fetch_reposts(all=True) self.assertTrue(post.reposts >= 20) self.assertTrue(post.reposts == post.repost_users.count() == users.count()) group = GroupFactory.create(remote_id=36948301) post = PostFactory.create(remote_id='-36948301_13599', wall_owner=group) self.assertTrue(post.reposts == post.repost_users.count() == 0) users = post.fetch_reposts(all=True) self.assertTrue(post.reposts == 1) self.assertTrue(post.reposts == post.repost_users.count() == users.count())
def test_fetch_group_open_wall(self): group = GroupFactory.create(remote_id=OPEN_WALL_GROUP_ID, screen_name=OPEN_WALL_GROUP_SCREEN_NAME) self.assertEqual(Post.objects.count(), 0) self.assertEqual(User.objects.count(), 0) count = 10 posts = group.fetch_posts(own=0, count=count, extended=1) self.assertEqual(len(posts), count) self.assertEqual(Post.objects.count(), count) self.assertTrue(User.objects.count() > 0) self.assertTrue(Post.objects.exclude(author_id=None).count() > 0)
def test_fetch_post_likes(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=GROUP_POST_ID, wall_owner=group) self.assertTrue(post.likes == post.like_users.count() == 0) post.fetch_likes(source='parser') self.assertTrue(post.likes == post.like_users.count() > 120) post.like_users.all().delete() post.likes = 0 post.save() self.assertTrue(post.likes == post.like_users.count() == 0) post.fetch_likes(all=True) self.assertTrue(post.likes == post.like_users.count() > 120)
def test_post_prepare_update_params(self): group = GroupFactory.create(remote_id=OWNER_ID) post = PostFactory.create(remote_id='%s_17' % OWNER_ID, wall_owner=group) update_text = 'update text' expected_config = { 'owner_id': OWNER_ID, 'friends_only': 0, 'from_group': '', 'message': update_text, 'attachments': u'', 'services': '', 'signed': 0, 'publish_date': '', 'lat': '', 'long': '', 'place_id': '', 'post_id': '17' } post1 = Post.objects.get(id=post.id) post1.text = update_text self.assertEqual(post1.prepare_update_params(), expected_config)
def test_post_prepare_create_params(self): text = 'test text' expected_config = { 'owner_id': OWNER_ID, 'friends_only': 0, 'from_group': '', 'message': text, 'attachments': u'', 'services': '', 'signed': 0, 'publish_date': '', 'lat': '', 'long': '', 'place_id': '', 'post_id': '' } group = GroupFactory.create(remote_id=OWNER_ID) post = PostFactory.create() post.wall_owner = group post.text = text self.assertEqual(post.prepare_create_params(), expected_config)