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)
Exemple #16
0
    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)
Exemple #19
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)
Exemple #20
0
    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())
Exemple #21
0
    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)
Exemple #23
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_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)
Exemple #28
0
        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)
Exemple #30
0
        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)
Exemple #31
0
    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)
Exemple #32
0
    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)
Exemple #34
0
    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)
Exemple #35
0
    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)
Exemple #36
0
    def test_fetching_topics(self):

        group = GroupFactory.create(remote_id=GROUP_ID)
        group.fetch_topics()

        self.assertTrue(group.topics.count() > 10)