def test_fetch_statistic_error(self, *args, **kwargs):
        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_ID, owner=group)
        self.assertEqual(PostStatistic.objects.count(), 0)

        with self.assertRaises(VkontakteError):
            post.fetch_statistic(date_from=date.today() - timedelta(2), date_to=date.today())
    def test_fetch_statistic_error(self, *args, **kwargs):
        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_ID, owner=group)
        self.assertEqual(PostStatistic.objects.count(), 0)

        with self.assertRaises(VkontakteError):
            post.fetch_statistic(date_from=date.today() - timedelta(2),
                                 date_to=date.today())
    def test_fetch_statistic(self):
        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_ID, owner=group)
        self.assertEqual(PostStatistic.objects.count(), 0)

        post.fetch_statistic(date_from=date.today() - timedelta(2), date_to=date.today())
        self.assertGreater(PostStatistic.objects.count(), 0)

        stat = PostStatistic.objects.all()[0]
        self.assertIsInstance(stat.date, date)
        self.assertGreater(stat.reach, 0)
    def test_fetch_statistic(self):
        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_ID, owner=group)
        self.assertEqual(PostStatistic.objects.count(), 0)

        post.fetch_statistic(date_from=date.today() - timedelta(2),
                             date_to=date.today())
        self.assertGreater(PostStatistic.objects.count(), 0)

        stat = PostStatistic.objects.all()[0]
        self.assertIsInstance(stat.date, date)
        self.assertGreater(stat.reach, 0)
Ejemplo n.º 5
0
    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_post_reach(self):

        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_REACH_ID, owner=group)

        with self.assertRaises(ObjectDoesNotExist):
            post.reach

        post.fetch_reach()
        post = post.__class__.objects.get(pk=post.pk)

        self.assertGreaterEqual(post.reach.hide, 0)
        self.assertGreaterEqual(post.reach.join_group, 0)
        self.assertGreaterEqual(post.reach.links, 0)
        self.assertGreaterEqual(post.reach.reach_subscribers, 0)
        self.assertGreaterEqual(post.reach.reach_total, 0)
        self.assertGreaterEqual(post.reach.report, 0)
        self.assertGreaterEqual(post.reach.to_group, 0)
        self.assertGreaterEqual(post.reach.unsubscribe, 0)
    def test_fetch_post_reach(self):

        group = GroupFactory(remote_id=GROUP_ID)
        post = PostFactory(remote_id=POST_REACH_ID, owner=group)

        with self.assertRaises(ObjectDoesNotExist):
            post.reach

        post.fetch_reach()
        post = post.__class__.objects.get(pk=post.pk)

        self.assertGreaterEqual(post.reach.hide, 0)
        self.assertGreaterEqual(post.reach.join_group, 0)
        self.assertGreaterEqual(post.reach.links, 0)
        self.assertGreaterEqual(post.reach.reach_subscribers, 0)
        self.assertGreaterEqual(post.reach.reach_total, 0)
        self.assertGreaterEqual(post.reach.report, 0)
        self.assertGreaterEqual(post.reach.to_group, 0)
        self.assertGreaterEqual(post.reach.unsubscribe, 0)
Ejemplo n.º 8
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)
Ejemplo n.º 9
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)
Ejemplo n.º 10
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)
Ejemplo n.º 11
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)
Ejemplo n.º 12
0
        def test_comment_wall_crud_methods(self):
            group = GroupFactory(remote_id=GROUP_CRUD_ID)
            post = PostFactory(remote_id=POST_CRUD_ID, text='', owner=group)
            user = UserFactory(remote_id=self.token_user_id)

            self.assertNoCommentsForObject(post)

            # create
            Comment.remote.fetch_by_object(object=post)
            self.assertEqual(Comment.objects.count(), 0)

            # create
            comment = Comment(text='Test comment', object=post, owner=group, author=user, date=timezone.now())
            comment.save(commit_remote=True)
            self.objects_to_delete += [comment]

            self.assertEqual(Comment.objects.count(), 1)
            self.assertNotEqual(len(comment.remote_id), 0)
            self.assertCommentTheSameEverywhere(comment)

            # create by manager
            comment = Comment.objects.create(
                text='Test comment created by manager', object=post, owner=group, author=user, date=timezone.now(), commit_remote=True)
            self.objects_to_delete += [comment]

            self.assertEqual(Comment.objects.count(), 2)
            self.assertNotEqual(len(comment.remote_id), 0)
            self.assertCommentTheSameEverywhere(comment)

            # update
            comment.text = 'Test comment updated'
            comment.save(commit_remote=True)

            self.assertEqual(Comment.objects.count(), 2)
            self.assertCommentTheSameEverywhere(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)
            self.assertCommentTheSameEverywhere(comment)
Ejemplo n.º 13
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)
Ejemplo n.º 14
0
    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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 16
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,
             "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)
Ejemplo n.º 17
0
    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_post(self):
        response = '''{"age": [{"reach": 2153, "value": "12-18"},
                  {"reach": 1113, "value": "18-21"},
                  {"reach": 984, "value": "21-24"},
                  {"reach": 948, "value": "24-27"},
                  {"reach": 642, "value": "27-30"},
                  {"reach": 555, "value": "30-35"},
                  {"reach": 363, "value": "35-45"},
                  {"reach": 357, "value": "45-100"}],
                 "cities": [{"name": "Донецк", "reach": 38, "value": 223},
                  {"name": "Воронеж", "reach": 25, "value": 1057},
                  {"name": "Рио", "reach": 18, "value": 136},
                  {"name": "Тируванамалай", "reach": 14, "value": 427}],
                 "countries": [{"code": "RU",
                   "name": "Россия",
                   "reach": 6548,
                   "value": 1},
                  {"code": "US", "name": "США", "reach": 15, "value": 9}],
                 "day": "2014-02-27",
                 "link_clicks": 10,
                 "reach": 8243,
                 "reach_subscribers": 357,
                 "sex": [{"reach": 4420, "value": "f"}, {"reach": 3823, "value": "m"}],
                 "sex_age": [{"reach": 1141, "value": "f;12-18"},
                  {"reach": 464, "value": "f;18-21"},
                  {"reach": 513, "value": "f;21-24"},
                  {"reach": 487, "value": "f;24-27"},
                  {"reach": 355, "value": "f;27-30"},
                  {"reach": 337, "value": "f;30-35"},
                  {"reach": 243, "value": "f;35-45"},
                  {"reach": 186, "value": "f;45-100"},
                  {"reach": 1012, "value": "m;12-18"},
                  {"reach": 649, "value": "m;18-21"},
                  {"reach": 471, "value": "m;21-24"},
                  {"reach": 461, "value": "m;24-27"},
                  {"reach": 287, "value": "m;27-30"},
                  {"reach": 218, "value": "m;30-35"},
                  {"reach": 120, "value": "m;35-45"},
                  {"reach": 171, "value": "m;45-100"}]}'''

        instance = PostStatistic(post=PostFactory())
        instance.parse(json.loads(response))
        instance.save()

        self.assertEqual(instance.date, date(2014, 2, 27))
        self.assertEqual(instance.reach, 8243)
        self.assertEqual(instance.reach_subscribers, 357)
        self.assertEqual(instance.link_clicks, 10)

        self.assertEqual(instance.reach_males, 3823)
        self.assertEqual(instance.reach_females, 4420)

        self.assertEqual(instance.reach_age_18, 2153)
        self.assertEqual(instance.reach_age_18_21, 1113)
        self.assertEqual(instance.reach_age_21_24, 984)
        self.assertEqual(instance.reach_age_24_27, 948)
        self.assertEqual(instance.reach_age_27_30, 642)
        self.assertEqual(instance.reach_age_30_35, 555)
        self.assertEqual(instance.reach_age_35_45, 363)
        self.assertEqual(instance.reach_age_45, 357)

        self.assertEqual(instance.reach_males_age_18, 1012)
        self.assertEqual(instance.reach_males_age_18_21, 649)
        self.assertEqual(instance.reach_males_age_21_24, 471)
        self.assertEqual(instance.reach_males_age_24_27, 461)
        self.assertEqual(instance.reach_males_age_27_30, 287)
        self.assertEqual(instance.reach_males_age_30_35, 218)
        self.assertEqual(instance.reach_males_age_35_45, 120)
        self.assertEqual(instance.reach_males_age_45, 171)

        self.assertEqual(instance.reach_females_age_18, 1141)
        self.assertEqual(instance.reach_females_age_18_21, 464)
        self.assertEqual(instance.reach_females_age_21_24, 513)
        self.assertEqual(instance.reach_females_age_24_27, 487)
        self.assertEqual(instance.reach_females_age_27_30, 355)
        self.assertEqual(instance.reach_females_age_30_35, 337)
        self.assertEqual(instance.reach_females_age_35_45, 243)
        self.assertEqual(instance.reach_females_age_45, 186)