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_fetching_poll(self): group = GroupFactory.create(remote_id=GROUP_ID) post = PostFactory.create(remote_id=POST_ID, owner=group) instance = Poll.remote.fetch(POLL_ID, post) self.assertEqual(instance.pk, POLL_ID) self.assertEqual(instance.question, u'А ты занимаешься спортом?') self.assertEqual(instance.owner, group) self.assertEqual(instance.post, post) self.assertGreater(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.assertGreater(answer.votes_count, 100) self.assertIsNotNone(answer.rate) answer = instance.answers.get(pk=266067655) self.assertEqual(answer.text, u'Да, профессионально!') self.assertGreater(answer.votes_count, 560) self.assertIsNotNone(answer.rate)
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_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_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_fetch_group_albums(self): group = GroupFactory.create(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_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_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_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_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_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_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_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_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_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_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)