def test_fetch_statistic(self): group = GroupFactory(remote_id=GROUP_ID) self.assertEqual(GroupStat.objects.count(), 0) group.fetch_statistic() self.assertGreater(GroupStat.objects.count(), 350) stat = GroupStat.objects.filter(period=30)[0] self.assertGreater(stat.views, 0) self.assertGreater(stat.visitors, 0) self.assertIsInstance(stat.date, date) stat = GroupStat.objects.filter(period=1)[0] self.assertGreater(stat.members, 0) self.assertGreater(stat.views, 0) self.assertGreater(stat.visitors, 0) self.assertGreater(stat.males, 0) self.assertGreater(stat.females, 0) self.assertGreater(stat.likes, 0) self.assertGreater(stat.section_discussions, 0) self.assertGreater(stat.activity_wall, 0) self.assertIsInstance(stat.date, date) # test date_from argument date_from = timezone.now() - timedelta(5) stat_month_count = GroupStat.objects.filter(period=30).count() GroupStat.objects.all().delete() group.fetch_statistic(date_from=date_from) self.assertEqual(GroupStat.objects.filter(period=1).count(), 6) self.assertEqual(GroupStat.objects.filter(period=30).count(), stat_month_count)
def test_fetch_topics(self): group = GroupFactory(remote_id=GROUP_ID) group.fetch_topics() self.assertTrue(group.topics.count() > 10) topics = group.fetch_topics(all=True, extended=True) self.assertTrue(topics.count() > 10)
def test_fetch_group_albums(self): group = GroupFactory(remote_id=GROUP_ID) self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums() self.assertTrue(len(albums) > 0) self.assertEqual(Album.objects.count(), len(albums)) self.assertEqual(albums[0].group, group)
def test_fetch_statistic_via_api(self): group = GroupFactory(remote_id=GROUP_ID) self.assertEqual(GroupStatistic.objects.count(), 0) group.fetch_statistic(source="api") self.assertGreater(GroupStatistic.objects.count(), 0) stat = GroupStatistic.objects.all()[0] self.assertGreater(stat.views, 0) self.assertGreater(stat.visitors, 0) self.assertGreater(stat.males, 0) self.assertGreater(stat.females, 0) self.assertIsInstance(stat.date, date)
def test_parse_album(self): response = '''{"response":[{"aid":"16178407","thumb_id":"96509883","owner_id":"6492","title":"qwerty", "description":"desc","created":"1298365200","updated":"1298365201","size":"3", "privacy":"3"},{"aid":"17071606","thumb_id":"98054577","owner_id":"-6492", "title":"","description":"","created":"1204576880","updated":"1229532461", "size":"3","privacy":"0"}]} ''' instance = Album() owner = UserFactory.create(remote_id=6492) instance.parse(json.loads(response)['response'][0]) instance.save() self.assertEqual(instance.remote_id, '6492_16178407') self.assertEqual(instance.thumb_id, 96509883) self.assertEqual(instance.owner, owner) self.assertEqual(instance.title, 'qwerty') self.assertEqual(instance.description, 'desc') self.assertEqual(instance.created, datetime(2011,2,22,9,0,0)) self.assertEqual(instance.updated, datetime(2011,2,22,9,0,1)) self.assertEqual(instance.size, 3) self.assertEqual(instance.privacy, 3) instance = Album() group = GroupFactory.create(remote_id=6492) instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, '-6492_17071606') self.assertEqual(instance.group, group)
def test_fetch_group_post_with_poll(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) self.assertEqual(Poll.objects.count(), 0) self.assertEqual(Answer.objects.count(), 0) group.fetch_posts(after=datetime(2013,4,8), own=True) self.assertTrue(Poll.objects.count() > 0) self.assertTrue(Answer.objects.count() > 0)
def test_fetch_photo_comments(self): group = GroupFactory.create(remote_id=GROUP_ID) album = AlbumFactory.create(remote_id=ALBUM_ID, group=group) photo = PhotoFactory.create(remote_id=PHOTO_ID, album=album) self.assertEqual(photo.comments, 0) photo.fetch_comments() self.assertTrue(photo.comments > 0)
def test_fetching_comments(self): group = GroupFactory.create(remote_id=GROUP_ID) topic = TopicFactory.create(remote_id=TOPIC_ID, group=group) topic.fetch_comments() self.assertEqual(topic.comments.count(), 20) topic.fetch_comments(all=True) self.assertTrue(topic.comments.count() > 20)
def test_deleting_hiding_migration(self): for i in range(1,7): UserFactory.create(remote_id=i) group = GroupFactory.create(remote_id=GROUP_ID) stat1 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(10), members_ids=[1,2,3,4,5]) stat1.save_final() stat2 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(9), members_ids=[1,2,3,4,6]) stat2.save_final() stat3 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(8), members_ids=[1,2,3,5,7]) stat3.save_final() # difference between stat2 and stat1 self.assertItemsEqual(stat2.members_entered_ids, [6]) self.assertItemsEqual(stat2.members_left_ids, [5]) # difference between stat3 and stat2 self.assertItemsEqual(stat3.members_entered_ids, [5,7]) self.assertItemsEqual(stat3.members_left_ids, [4,6]) stat2.delete() stat3 = GroupMigration.objects.get(id=stat3.id) # difference between stat3 and stat1 self.assertItemsEqual(stat3.members_entered_ids, [7]) self.assertItemsEqual(stat3.members_left_ids, [4]) stat4 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(7), members_ids=[1,2,3,4,6]) stat4.save_final() # difference between stat4 and stat3 self.assertItemsEqual(stat4.members_entered_ids, [4,6]) self.assertItemsEqual(stat4.members_left_ids, [5,7]) stat3.hide() stat4 = GroupMigration.objects.get(id=stat4.id) # difference between stat4 and stat1 self.assertItemsEqual(stat4.members_entered_ids, [6]) self.assertItemsEqual(stat4.members_left_ids, [5]) stat5 = GroupMigrationFactory(group=group, time=datetime.now()-timedelta(6), members_ids=[1,2,3,5,7]) stat5.save_final() # difference between stat5 and stat4 self.assertItemsEqual(stat5.members_entered_ids, [5,7]) self.assertItemsEqual(stat5.members_left_ids, [4,6]) stat4.hidden = True stat4.save() stat5 = GroupMigration.objects.get(id=stat5.id) # difference between stat5 and stat1 self.assertItemsEqual(stat5.members_entered_ids, [7]) self.assertItemsEqual(stat5.members_left_ids, [4])
def test_fetch_user_post_with_poll(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP2_ID) self.assertEqual(Post.objects.count(), 0) self.assertEqual(Poll.objects.count(), 0) self.assertEqual(Answer.objects.count(), 0) group.fetch_posts(own=True) self.assertTrue(Post.objects.count() > 0) self.assertTrue(Poll.objects.count() > 0) self.assertTrue(Answer.objects.count() > 0)
def test_fetching_answer_users(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, wall_owner=group) poll = PollFactory.create(remote_id=POLL_ID, owner=group, post=post) answer = AnswerFactory.create(pk=266067661, poll=poll) answer.fetch_voters() self.assertEqual(answer.voters.count(), answer.votes_count) self.assertTrue(answer.voters.count() > 110) self.assertTrue(answer.rate > 0)
def test_fetching_answer_users_by_parser(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, owner=group) poll = PollFactory.create(remote_id=POLL_ID, owner=group, post=post) answer = AnswerFactory.create(pk=266067661, poll=poll) answer.fetch_voters_by_parser() self.assertEqual(answer.voters.count(), answer.votes_count) self.assertGreaterEqual(answer.voters.count(), 155) self.assertGreater(answer.rate, 0)
def test_fetch_group_photos(self): group = GroupFactory.create(remote_id=GROUP_ID) album = AlbumFactory.create(remote_id=ALBUM_ID, group=group) self.assertEqual(Photo.objects.count(), 0) photos = album.fetch_photos() self.assertTrue(len(photos) > 0) self.assertEqual(Photo.objects.count(), len(photos)) self.assertEqual(photos[0].group, group) self.assertEqual(photos[0].album, album)
def test_fetch_user_post_with_poll(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP2_ID) self.assertEqual(Post.objects.count(), 0) self.assertEqual(Poll.objects.count(), 0) self.assertEqual(Answer.objects.count(), 0) posts = group.fetch_posts(own=True) self.assertGreaterEqual(posts.count(), 14) self.assertTrue(GROUP2_POLLPOST_ID in [post.remote_id for post in posts]) self.assertGreater(Post.objects.count(), 0)
def test_fetch_statistic_via_api(self): group = GroupFactory.create(remote_id=GROUP_ID) self.assertEqual(GroupStatistic.objects.count(), 0) group.fetch_statistic(api=True) self.assertNotEqual(GroupStatistic.objects.count(), 0) stat = GroupStatistic.objects.all()[0] self.assertTrue(stat.views > 0) self.assertTrue(stat.visitors > 0) self.assertTrue(stat.males > 0) self.assertTrue(stat.females > 0) self.assertNotEqual(stat.date, None)
def test_fetch_group_photos(self): group = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, group=group) self.assertEqual(Photo.objects.count(), 0) photos = album.fetch_photos(extended=True) self.assertTrue(len(photos) > 0) self.assertEqual(Photo.objects.count(), len(photos)) self.assertEqual(photos[0].group, group) self.assertEqual(photos[0].album, album) self.assertTrue(photos[0].likes > 0) self.assertTrue(photos[0].comments > 0)
def test_fetch_group_albums(self): group = GroupFactory(remote_id=GROUP_ID) self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums() self.assertGreater(len(albums), 0) self.assertEqual(Album.objects.count(), len(albums)) self.assertEqual(albums[0].group, group) # check force ordering self.assertItemsEqual(albums, Album.objects.order_by("-updated")) # testing `after` parameter after = Album.objects.order_by("-updated")[10].updated albums_count = Album.objects.count() Album.objects.all().delete() self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums(after=after) self.assertEqual(albums.count(), Album.objects.count()) self.assertLess(albums.count(), albums_count) # testing `before` parameter before = Album.objects.order_by("-updated")[5].updated albums_count = Album.objects.count() Album.objects.all().delete() self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums(before=before, after=after) self.assertEqual(albums.count(), Album.objects.count()) self.assertLess(albums.count(), albums_count)
def test_fetch_user_post_with_poll(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP2_ID) self.assertEqual(Post.objects.count(), 0) self.assertEqual(Poll.objects.count(), 0) self.assertEqual(Answer.objects.count(), 0) posts = group.fetch_posts(own=True) self.assertGreaterEqual(posts.count(), 14) self.assertTrue( GROUP2_POLLPOST_ID in [post.remote_id for post in posts]) self.assertGreater(Post.objects.count(), 0)
def test_fetch_group_albums(self): group = GroupFactory(remote_id=GROUP_ID) self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums() self.assertGreater(len(albums), 0) self.assertEqual(Album.objects.count(), len(albums)) self.assertEqual(albums[0].owner, group) # check force ordering self.assertItemsEqual(albums, Album.objects.order_by('-updated')) # testing `after` parameter after = Album.objects.order_by('-updated')[10].updated albums_count = Album.objects.count() Album.objects.all().delete() self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums(after=after) self.assertEqual(albums.count(), Album.objects.count()) self.assertLess(albums.count(), albums_count) # testing `before` parameter before = Album.objects.order_by('-updated')[5].updated albums_count = Album.objects.count() Album.objects.all().delete() self.assertEqual(Album.objects.count(), 0) albums = group.fetch_albums(before=before, after=after) self.assertEqual(albums.count(), Album.objects.count()) self.assertLess(albums.count(), albums_count)
def test_fetch_photo_likes(self, *kwargs): group = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, owner=group) photo = PhotoFactory(remote_id=PHOTO_ID, album=album, owner=group) self.assertEqual(photo.likes_count, 0) users_initial = User.objects.count() users = photo.fetch_likes(all=True) self.assertGreater(photo.likes_count, 0) self.assertEqual(photo.likes_count, len(users)) self.assertEqual(photo.likes_count, User.objects.count() - users_initial) self.assertEqual(photo.likes_count, photo.likes_users.count())
def test_parse_comment(self): response = '''{"response":[21, {"date": 1387173931, "message": "[id94721323|\u0410\u043b\u0435\u043d\u0447\u0438\u043a], \u043d\u0435 1 \u0430 3 \u0431\u0430\u043d\u043a\u0430 5 \u043b\u0438\u0442\u0440\u043e\u0432 =20 \u0431\u0430\u043b\u043b\u043e\u0432", "from_id": 232760293, "likes": {"count": 1, "can_like": 1, "user_likes": 0}, "id": 91121}, {"date": 1386245221, "message": "\u0410 1\u043b. \u0432 \u043f\u043e\u0434\u0430\u0440\u043e\u043a,\u0431\u043e\u043d\u0443\u0441 +))))", "from_id": 94721323, "likes": {"count": 0, "can_like": 1, "user_likes": 0}, "id": 88976}, {"date": 1354592120, "message": "\u0445\u0430\u0445<br>", "from_id": 138571769, "likes": {"count": 0, "can_like": 1, "user_likes": 0}, "cid": 50392}]} ''' group = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, owner=group) photo = PhotoFactory(remote_id=PHOTO_ID, album=album, owner=group) instance = Comment(object=photo) instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, '-%s_91121' % GROUP_ID) self.assertEqual(instance.object, photo) self.assertEqual(instance.author.remote_id, 232760293) self.assertGreater(len(instance.text), 10) self.assertIsNotNone(instance.date)
def test_fetching_answer_users(self, *args, **kwargs): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, owner=group) poll = PollFactory.create(remote_id=POLL_ID, owner=group, post=post) answer = AnswerFactory.create(pk=266067661, poll=poll) answer.fetch_voters(source='api') self.assertEqual(answer.voters.count(), answer.votes_count) self.assertGreaterEqual(answer.voters.count(), 155) self.assertGreater(answer.rate, 0) answer.fetch_voters(source=None) self.assertEqual(answer.voters.count(), answer.votes_count) self.assertGreaterEqual(answer.voters.count(), 155) self.assertGreater(answer.rate, 0)
def test_parse_photo(self): response = '''{"response":[{"pid":"146771291","aid":"100001227","owner_id":"6492", "src":"http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg", "src_big":"http://cs9231.vkontakte.ru/u06492/100001227/x_cd563004.jpg", "src_small":"http://cs9231.vkontakte.ru/u06492/100001227/s_c3bba2a8.jpg", "src_xbig":"http://cs9231.vkontakte.ru/u06492/100001227/y_62a74569.jpg", "src_xxbig":"http://cs9231.vkontakte.ru/u06492/100001227/z_793e9682.jpg", "text":"test","user_id":6492,"width":10,"height":10, "created":"1298365200"},{"pid":"146772677","aid":"100001227","owner_id":-6492, "src":"http://cs9231.vkontakte.ru/u06492/100001227/m_fd092958.jpg", "src_big":"http://cs9231.vkontakte.ru/u06492/100001227/x_1f8ec9b8.jpg", "src_small":"http://cs9231.vkontakte.ru/u06492/100001227/s_603d27ab.jpg", "src_xbig":"http://cs9231.vkontakte.ru/u06492/100001227/y_6938f576.jpg", "src_xxbig":"http://cs9231.vkontakte.ru/u06492/100001227/z_6a27e9fd.jpg", "text":"test","user_id":6492,"width":10,"height":10, "created":"1260887080"}]} ''' instance = Photo() owner = UserFactory(remote_id=6492) album = AlbumFactory(remote_id='6492_100001227') instance.parse(json.loads(response)['response'][0]) instance.save() self.assertEqual(instance.remote_id, '6492_146771291') self.assertEqual(instance.album, album) self.assertEqual(instance.owner, owner) self.assertEqual( instance.src, 'http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg') self.assertEqual(instance.text, 'test') self.assertEqual(instance.width, 10) self.assertEqual(instance.height, 10) self.assertIsNotNone(instance.created) instance = Photo() group = GroupFactory(remote_id=6492) album = AlbumFactory(remote_id='-6492_100001227') instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, '-6492_146772677') self.assertEqual(instance.album, album) self.assertEqual(instance.group, group)
def test_parse_poll(self): response = u''' {"response":{"answer_id": 0, "answers": [{"id": 266067655, "rate": 26.76, "text": "Да, профессионально!", "votes": 569}, {"id": 266067661, "rate": 5.41, "text": "Свой вариант (расскажу в комментариях).", "votes": 115}], "created": 1365411542, "owner_id": -16297716, "id": 83838453, "question": "А ты занимаешься спортом? (открытое голосование)", "votes": 2126}}''' group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(owner=group) instance = Poll.remote.parse_response_dict( json.loads(response)['response'], {'post_id': post.id}) instance.save() self.assertEqual(instance.pk, POLL_ID) self.assertEqual(instance.question, u'А ты занимаешься спортом? (открытое голосование)') self.assertEqual(instance.owner, group) self.assertEqual(instance.post, post) self.assertEqual(instance.votes_count, 2126) self.assertIsNotNone(instance.created) self.assertEqual(instance.answers.count(), 2) answer = instance.answers.get(pk=266067661) self.assertEqual(answer.text, u'Свой вариант (расскажу в комментариях).') self.assertEqual(answer.votes_count, 115) self.assertEqual(answer.rate, 5.41) answer = instance.answers.get(pk=266067655) self.assertEqual(answer.text, u'Да, профессионально!') self.assertEqual(answer.votes_count, 569) self.assertEqual(answer.rate, 26.76)
def test_fetching_answer_users_by_api(self, *args, **kwargs): def calc_percentage(poll, answer_votes): pp = Poll.remote.fetch(poll.pk, poll.post) if pp and pp.votes_count: return answer_votes * 100. / pp.votes_count return 0 group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, owner=group) poll = PollFactory.create(remote_id=POLL_ID, owner=group, post=post) answer = AnswerFactory.create(pk=266067661, poll=poll) answer.fetch_voters_by_api() self.assertEqual(answer.voters.count(), answer.votes_count) self.assertGreaterEqual(answer.voters.count(), 155) self.assertGreater(answer.rate, 0) percentage = calc_percentage(poll, answer.votes_count) self.assertEqual(answer.rate, percentage)
def test_parse_photo(self): response = '''{"response":[{"pid":"146771291","aid":"100001227","owner_id":"6492", "src":"http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg", "src_big":"http://cs9231.vkontakte.ru/u06492/100001227/x_cd563004.jpg", "src_small":"http://cs9231.vkontakte.ru/u06492/100001227/s_c3bba2a8.jpg", "src_xbig":"http://cs9231.vkontakte.ru/u06492/100001227/y_62a74569.jpg", "src_xxbig":"http://cs9231.vkontakte.ru/u06492/100001227/z_793e9682.jpg", "text":"test","user_id":6492,"width":10,"height":10, "created":"1298365200"},{"pid":"146772677","aid":"100001227","owner_id":-6492, "src":"http://cs9231.vkontakte.ru/u06492/100001227/m_fd092958.jpg", "src_big":"http://cs9231.vkontakte.ru/u06492/100001227/x_1f8ec9b8.jpg", "src_small":"http://cs9231.vkontakte.ru/u06492/100001227/s_603d27ab.jpg", "src_xbig":"http://cs9231.vkontakte.ru/u06492/100001227/y_6938f576.jpg", "src_xxbig":"http://cs9231.vkontakte.ru/u06492/100001227/z_6a27e9fd.jpg", "text":"test","user_id":6492,"width":10,"height":10, "created":"1260887080"}]} ''' instance = Photo() owner = UserFactory.create(remote_id=6492) album = AlbumFactory.create(remote_id='6492_100001227') instance.parse(json.loads(response)['response'][0]) instance.save() self.assertEqual(instance.remote_id, '6492_146771291') self.assertEqual(instance.album, album) self.assertEqual(instance.owner, owner) self.assertEqual(instance.created, datetime(2011,2,22,9,0,0)) self.assertEqual(instance.src, 'http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg') self.assertEqual(instance.text, 'test') self.assertEqual(instance.width, 10) self.assertEqual(instance.height, 10) instance = Photo() group = GroupFactory.create(remote_id=6492) album = AlbumFactory.create(remote_id='-6492_100001227') instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, '-6492_146772677') self.assertEqual(instance.album, album) self.assertEqual(instance.group, group)
def test_fetch_with_count_and_offset(self): # testing `count` parameter, count is the same as limit owner = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, owner=owner) video = VideoFactory(remote_id=VIDEO_ID, album=album, owner=owner) self.assertEqual(Comment.objects.count(), 0) comments = video.fetch_comments(count=5) self.assertEqual(len(comments), 5) self.assertEqual(Comment.objects.count(), 5) # testing `offset` parameter comments2 = video.fetch_comments(count=2, offset=4) self.assertEqual(len(comments2), 2) self.assertEqual(Comment.objects.count(), 6) self.assertEqual(comments[4].remote_id, comments2[0].remote_id)
def test_parse_poll(self): response = u''' {"response":{"answer_id": 0, "answers": [{"id": 266067655, "rate": 26.76, "text": "Да, профессионально!", "votes": 569}, {"id": 266067661, "rate": 5.41, "text": "Свой вариант (расскажу в комментариях).", "votes": 115}], "created": 1365411542, "owner_id": -16297716, "poll_id": 83838453, "question": "А ты занимаешься спортом? (открытое голосование)", "votes": 2126}}''' group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(wall_owner=group) instance = Poll.remote.parse_response_dict(json.loads(response)['response'], {'post_id': post.id}) instance.save() self.assertEqual(instance.pk, POLL_ID) self.assertEqual(instance.question, u'А ты занимаешься спортом? (открытое голосование)') self.assertEqual(instance.owner, group) self.assertEqual(instance.post, post) self.assertEqual(instance.votes_count, 2126) self.assertIsNotNone(instance.created) self.assertEqual(instance.answers.count(), 2) answer = instance.answers.get(pk=266067661) self.assertEqual(answer.text, u'Свой вариант (расскажу в комментариях).') self.assertEqual(answer.votes_count, 115) self.assertEqual(answer.rate, 5.41) answer = instance.answers.get(pk=266067655) self.assertEqual(answer.text, u'Да, профессионально!') self.assertEqual(answer.votes_count, 569) self.assertEqual(answer.rate, 26.76)
def test_parse_comment(self): response = u'''{"date": 1387304612, "text": "Даёшь \\"Байкал\\"!!!!", "likes": {"count": 0, "can_like": 1, "user_likes": 0}, "id": 811, "from_id": 27224390} ''' owner = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, owner=owner) video = VideoFactory(remote_id=VIDEO_ID, album=album, owner=owner) comment = Comment(object=video) comment.parse(json.loads(response)) comment.save() self.assertEqual(comment.remote_id, '-%s_811' % GROUP_ID) self.assertEqual(comment.object, video) self.assertEqual(comment.author.remote_id, 27224390) self.assertEqual(comment.text, u'Даёшь "Байкал"!!!!') self.assertIsNotNone(comment.date)
def test_parse_photo(self): response = '''{"response":[{"id":"146771291","album_id":"100001227","owner_id":6492, "photo_130":"http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg", "text":"test","user_id":6492,"width":10,"height":10, "date":"1298365200"}, {"id":"146772677","album_id":"100001227","owner_id":-6492, "photo_130":"http://cs9231.vkontakte.ru/u06492/100001227/m_fd092958.jpg", "text":"test","user_id":6492,"width":10,"height":10, "date":"1260887080"}]} ''' instance = Photo() owner = UserFactory(remote_id=6492) album = AlbumFactory(remote_id=100001227, owner=owner) instance.parse(json.loads(response)['response'][0]) instance.save() self.assertEqual(instance.remote_id, 146771291) self.assertEqual(instance.album, album) self.assertEqual(instance.owner, owner) self.assertEqual(instance.src, instance.photo_130) self.assertEqual( instance.src, 'http://cs9231.vkontakte.ru/u06492/100001227/m_7875d2fb.jpg') self.assertEqual(instance.text, 'test') self.assertEqual(instance.width, 10) self.assertEqual(instance.height, 10) self.assertIsNotNone(instance.created) instance = Photo() group = GroupFactory(remote_id=6492) #album = AlbumFactory(remote_id=100001227, owner=owner) instance.parse(json.loads(response)['response'][1]) instance.save() self.assertEqual(instance.remote_id, 146772677) self.assertEqual(instance.album, album) self.assertEqual(instance.owner, group)
def test_fetch_group_photos(self): group = GroupFactory(remote_id=GROUP_ID) album = AlbumFactory(remote_id=ALBUM_ID, owner=group) self.assertEqual(Photo.objects.count(), 0) photos = album.fetch_photos(extended=True) self.assertGreater(len(photos), 0) self.assertEqual(Photo.objects.count(), len(photos)) self.assertEqual(photos[0].owner, group) self.assertEqual(photos[0].album, album) self.assertGreater(photos[0].likes_count, 0) self.assertGreater(photos[0].comments_count, 0) # testing `after` parameter after = Photo.objects.order_by('-date')[4].date photos_count = Photo.objects.count() Photo.objects.all().delete() self.assertEqual(Photo.objects.count(), 0) photos = album.fetch_photos(after=after) self.assertEqual(photos.count(), Photo.objects.count()) self.assertLess(photos.count(), photos_count) # testing `before` parameter before = Photo.objects.order_by('-date')[2].date photos_count = Photo.objects.count() Photo.objects.all().delete() self.assertEqual(Photo.objects.count(), 0) photos = album.fetch_photos(before=before, after=after) self.assertEqual(photos.count(), Photo.objects.count()) self.assertLess(photos.count(), photos_count)
def test_fetching_poll(self): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, wall_owner=group) instance = Poll.remote.fetch(POLL_ID, group, post) self.assertEqual(instance.pk, POLL_ID) self.assertEqual(instance.question, u'А ты занимаешься спортом? (открытое голосование)') self.assertEqual(instance.owner, group) self.assertEqual(instance.post, post) self.assertTrue(instance.votes_count > 2126) self.assertIsNotNone(instance.created) self.assertEqual(instance.answers.count(), 7) answer = instance.answers.get(pk=266067661) self.assertEqual(answer.text, u'Свой вариант (расскажу в комментариях).') self.assertTrue(answer.votes_count > 100) self.assertIsNotNone(answer.rate) answer = instance.answers.get(pk=266067655) self.assertEqual(answer.text, u'Да, профессионально!') self.assertTrue(answer.votes_count > 560) self.assertIsNotNone(answer.rate)
def test_comment_crud_methods(self): group = GroupFactory(remote_id=GROUP_CRUD_ID) album = AlbumFactory(remote_id=ALBUM_CRUD_ID, owner=group) photo = PhotoFactory(remote_id=PHOTO_CRUD_ID, owner=group, album=album) def assert_local_equal_to_remote(comment): comment_remote = Comment.remote.fetch_by_object( object=comment.object).get(remote_id=comment.remote_id) self.assertEqual(comment_remote.remote_id, comment.remote_id) self.assertEqual(comment_remote.text, comment.text) self.assertEqual(comment_remote.author, comment.author) # try to delete comments from prev tests for comment in Comment.remote.fetch_by_object(object=photo): comment.delete(commit_remote=True) # checks there is no remote and local comments comments = Comment.remote.fetch_by_object(object=photo) self.assertEqual( Comment.objects.count(), 0, 'Error: There are %s comments from previous test. Delete them manually here %s' % (comments.count(), photo.get_url())) # create comment = Comment(text='Test comment', object=photo, author=group, date=timezone.now()) comment.save(commit_remote=True) self.objects_to_delete += [comment] self.assertEqual(Comment.objects.count(), 1) self.assertEqual(comment.author, group) self.assertNotEqual(len(comment.remote_id), 0) assert_local_equal_to_remote(comment) # create by manager comment = Comment.objects.create( text='Test comment created by manager', object=photo, author=group, date=timezone.now(), commit_remote=True) self.objects_to_delete += [comment] self.assertEqual(Comment.objects.count(), 2) self.assertEqual(Comment.objects.count(), 2) self.assertEqual(comment.author, group) self.assertNotEqual(len(comment.remote_id), 0) assert_local_equal_to_remote(comment) # update comment.text = 'Test comment updated' comment.save(commit_remote=True) self.assertEqual(Comment.objects.count(), 2) assert_local_equal_to_remote(comment) # delete comment.delete(commit_remote=True) self.assertEqual(Comment.objects.count(), 2) self.assertTrue(comment.archived) self.assertEqual( Comment.remote.fetch_by_object(object=comment.object).filter( remote_id=comment.remote_id).count(), 0) # restore comment.restore(commit_remote=True) self.assertFalse(comment.archived) self.assertEqual(Comment.objects.count(), 2) assert_local_equal_to_remote(comment)
def test_parse_topic(self): response = ''' {"response":{ "topics":[1, {"tid":51443905, "title":"Вопросы по поводу создания приложений", "created":1298365200, "created_by":1, "updated":1298365200, "updated_by":1, "is_closed":0, "is_fixed":1, "comments":5045} ] }}''' instance = Topic.remote.parse_response_list(json.loads(response)['response'], {'group_id': GroupFactory.create(remote_id=GROUP_ID).id})[0] instance.save() self.assertEqual(instance.remote_id, '-%s_51443905' % GROUP_ID) self.assertEqual(instance.group.remote_id, GROUP_ID) self.assertEqual(instance.title, u'Вопросы по поводу создания приложений') self.assertEqual(instance.created, datetime(2011,2,22,9,0,0)) self.assertEqual(instance.created_by, User.objects.get(remote_id=1)) self.assertEqual(instance.updated, datetime(2011,2,22,9,0,0)) self.assertEqual(instance.updated_by, User.objects.get(remote_id=1)) self.assertEqual(instance.is_closed, False) self.assertEqual(instance.is_fixed, True) self.assertEqual(instance.comments_count, 5045)
def test_fetching_topics(self): group = GroupFactory.create(remote_id=GROUP_ID) group.fetch_topics() self.assertTrue(group.topics.count() > 10)