Пример #1
1
    def test_deactivation(self):
        def cmts():
            return self.api_post('/api/quest_comments/user_comments', {'username': user.username})['comments']

        quest = create_current_quest()
        content = create_content()
        user = create_user()
        comment = self.api_post('/api/quest_comments/post', {
            'quest_id': quest.id,
            'content_id': content.id, 
        }, user=user)['comment']
        self.assertEqual(cmts()[0]['id'], comment['id'])

        self.api_post('/api/auth/actually_deactivate', user=user)
        self.assertFalse(cmts())
Пример #2
0
    def test_reactions(self):
        cmt = create_quest_comment()

        star_models.star(create_user(), cmt)
        Playback.append(comment=cmt, viewer=create_user())

        cmt = QuestComment.objects.get(id=cmt.id)
        reactions = cmt.details().reactions
        self.assertEqual(len(reactions), 2)
Пример #3
0
    def test_reactions(self):
        cmt = create_quest_comment()

        star_models.star(create_user(), cmt)
        Playback.append(comment=cmt, viewer=create_user())

        cmt = QuestComment.objects.get(id=cmt.id)
        reactions = cmt.details().reactions
        self.assertEqual(len(reactions), 2)
Пример #4
0
 def test_starred_comments_gallery(self):
     cmt = create_quest_comment(self.quest)
     user = create_user()
     self._star(cmt.id, user=user)
     gallery = self.api_post('/api/quest_comments/starred_comments_gallery',
                             {'username': user.username})['comments']
     self.assertEqual(cmt.id, gallery[0]['id'])
Пример #5
0
    def test_quest_inbox_with_followee_ugq(self):
        user = create_user()
        followee = create_user()
        user.follow(followee)

        ugq_resp = self.api_post('/api/ugq/create_quest', {
            'title': 'Test',
            'content_id': None,
        }, user=followee)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertAPISuccess(resp)

        quests = resp['quests']
        self.assertEqual(quests[0]['id'], ugq_resp['quest']['id'])
        self.assertEqual(len(quests), 1)
Пример #6
0
 def test_user_comments(self):
     user = create_user()
     self._post(user=user)
     cmts = self.api_post('/api/quest_comments/user_comments',
                          {'username': user.username},
                          user=user)['comments']
     self.assertEqual(cmts[0]['id'], self.comment['id'])
Пример #7
0
    def test_streak_rewards(self):
        user = create_user()

        with override_service('time', FakeTimeProvider):
            def post():
                quest = create_current_quest()

                def rewards():
                    resp = self.api_post('/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user)
                    self.assertAPISuccess(resp)
                    print resp
                    return resp['rewards']

                before = rewards()
                self._post(user=user, quest=quest)
                after = rewards()
                Services.time.t += 60*60*24
                return (before, after,)

            current_streak = 0
            streaks = [3, 10, 100]

            for _ in xrange(4): #TODO should be higher but this is just too slow.
                before, after = post()

                for streak in streaks:
                    msg = 'After posting this, the current streak would be: {}'.format(current_streak + 1)
                    if (current_streak + 1) == streak:
                        self.assertTrue('streak_' + str(streak) in before, msg)
                        self.assertFalse('streak_' + str(streak) in after, msg)
                    else:
                        self.assertFalse('streak_' + str(streak) in before, msg)

                current_streak += 1
Пример #8
0
    def test_unsubscribe(self):
        author = create_user()
        def recipients():
            actor = create_user()
            cmt = create_quest_comment(author=author)
            sticker = CommentSticker.objects.create(
                comment=cmt,
                timestamp=time.time(),
                type_id=settings.STAR_STICKER_TYPE_ID,
                user=actor,
                ip='0.0.0.0',
            )
            r = action_recipients('starred', actor, sticker, channel='PushNotificationChannel')
            return (r, cmt)

        r, cmt = recipients()
        self.assertIn(author.id, [u.id for u in r])

        self.api_post('/api/push_notifications/unsubscribe', {'notification_type': 'starred'}, user=author)
        r, cmt = recipients()
        self.assertNotIn(author.id, [u.id for u in r])

        self.api_post('/api/push_notifications/resubscribe', {'notification_type': 'starred'}, user=author)
        r, cmt = recipients()
        self.assertIn(author.id, [u.id for u in r])
Пример #9
0
 def after_setUp(self):
     self.inactive_user = create_user()
     self.client = self.get_client(user=self.inactive_user)
     self.client.login(username=self.inactive_user.username,
                       password=PASSWORD)
     self.inactive_user.is_active = False
     self.inactive_user.save()
Пример #10
0
 def post_offtopic_comment(self, **kwargs):
     group = create_group(founder=create_user())
     op = self.post_comment(reply_content=create_content().id,
                            category=group.name,
                            **kwargs)
     op.mark_offtopic(group.founder)
     return op
Пример #11
0
    def test_streak_rewards(self):
        user = create_user()

        def post():
            quest = create_current_quest()

            def rewards():
                resp = self.api_post('/api/quest_comments/rewards_for_posting', {'quest_id': quest.id}, user=user)
                self.assertAPISuccess(resp)
                return resp['rewards']

            before = rewards()
            self._post(user=user, quest=quest)
            after = rewards()
            return (before, after,)

        current_streak = 0
        streaks = [3, 10, 100]

        for _ in xrange(11):
            before, after = post()

            for streak in streaks:
                msg = 'After posting this, the current streak would be: {}'.format(current_streak + 1)
                if (current_streak + 1) == streak:
                    self.assertTrue('streak_' + str(streak) in before, msg)
                    self.assertFalse('streak_' + str(streak) in after, msg)
                else:
                    self.assertFalse('streak_' + str(streak) in before, msg)

            current_streak += 1
Пример #12
0
    def after_setUp(self):
        self.old_quest = create_current_quest()
        self.quest = create_current_quest()
        self.user = create_user()
        knobs.ONBOARDING_QUEST_ID = self.quest.id

        self.comments_per_page = knobs.COMMENTS_PER_PAGE
        knobs.COMMENTS_PER_PAGE = COMMENTS_PER_PAGE
Пример #13
0
    def test_quest_inbox_with_followee_ugq(self):
        user = create_user()
        followee = create_user()
        user.follow(followee)

        ugq_resp = self.api_post('/api/ugq/create_quest', {
            'title': 'Test',
            'content_id': None,
        },
                                 user=followee)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertAPISuccess(resp)

        quests = resp['quests']
        self.assertEqual(quests[0]['id'], ugq_resp['quest']['id'])
        self.assertEqual(len(quests), 1)
Пример #14
0
    def after_setUp(self):
        self.old_quest = create_current_quest()
        self.quest = create_current_quest()
        self.user = create_user()
        knobs.ONBOARDING_QUEST_ID = self.quest.id

        self.comments_per_page = knobs.COMMENTS_PER_PAGE
        knobs.COMMENTS_PER_PAGE = COMMENTS_PER_PAGE
Пример #15
0
    def test_set(self):
        user = create_user()
        items = {'saw_update_modal_for_version': 'bar'}
        self.assertAPISuccess(self.api_post('/api/kv/set', {'items': items}, user=user))

        state = self.api_post('/api/heavy_state_sync', user=user)
        self.assertAPISuccess(state)
        self.assertEqual(state['user_kv']['saw_update_modal_for_version'], 'bar')
Пример #16
0
 def test_successful(self):
     email = '*****@*****.**'
     user = create_user()
     self.api_post('/api/user/change_profile', {'new_email': email}, user=user)
     hashed = hashlib.sha1(email).hexdigest()
     resp = self.api_post('/api/existing_users_by_email', {'email_hashes': [hashed]})
     self.assertAPISuccess(resp)
     self.assertEqual(resp['users'][0]['username'], user.username)
 def get_client(cls, user=None, password=None):
     if password is None:
         password = PASSWORD
     if not user:
         user = create_user(password=password)
     # Django 1.3 has a RequestFactory to make this much simpler.
     client = Client()
     client.login(username=user.username, password=password)
     return client
def create_comment(**kwargs):
    kwargs["author"] = kwargs.get("author", create_user())
    kwargs["timestamp"] = kwargs.get("timestamp", Services.time.time())
    kwargs["anonymous"] = kwargs.get("anonymous", False)
    if kwargs.get("parent_comment") is None:
        kwargs["title"] = kwargs.get("title", "Sample title.")
    comment = Comment(**kwargs)
    comment.save()
    return comment
Пример #19
0
 def get_client(cls, user=None, password=None):
     if password is None:
         password = PASSWORD
     if not user:
         user = create_user(password=password)
     # Django 1.3 has a RequestFactory to make this much simpler.
     client = Client()
     client.login(username=user.username, password=password)
     return client
Пример #20
0
    def _post(self, user=None, quest=None):
        if user is None:
            user = create_user()

        quest_id = getattr(quest, 'id', None) or self.quest.id
        self.comment = self.api_post('/api/quest_comments/post', {
            'quest_id': quest_id,
            'content_id': self.content.id, 
        }, user=user)['comment']
Пример #21
0
def create_comment(**kwargs):
    kwargs['author'] = kwargs.get('author', create_user())
    kwargs['timestamp'] = kwargs.get('timestamp', Services.time.time())
    kwargs['anonymous'] = kwargs.get('anonymous', False)
    if kwargs.get('parent_comment') is None:
        kwargs['title'] = kwargs.get('title', 'Sample title.')
    comment = Comment(**kwargs)
    comment.save()
    return comment
Пример #22
0
    def test_username_available(self):
        def available(username):
            return self.api_post('/api/auth/username_available', data={'username': username})

        resp = available(USERNAME)
        self.assertTrue(resp['available'])

        user = create_user()
        resp = available(user.username)
        self.assertFalse(resp['available'])
Пример #23
0
    def _post(self, user=None, quest=None):
        if user is None:
            user = create_user()

        quest_id = getattr(quest, 'id', None) or self.quest.id
        self.comment = self.api_post('/api/quest_comments/post', {
            'quest_id': quest_id,
            'content_id': self.content.id,
        },
                                     user=user)['comment']
Пример #24
0
    def test_loads_with_feed_item(self):
        user = create_staff()
        other = create_user()
        user.follow(other)

        cmt = self.post_quest_comment(author=other)['comment']

        resp = self.api_post('/api/feed/followee_comments', user=user)
        self.assertAPISuccess(resp)
        self.assertEqual(resp['comments'][0]['id'], cmt['id'])
Пример #25
0
    def _post(self, user=None, quest=None, **kwargs):
        if user is None:
            user = create_user()

        params = {
            'quest_id': self.quest.id,
            'content_id': self.content.id,
        }
        params.update(kwargs)
        return self.api_post('/api/quest_comments/post', params, user=user)['comment']
Пример #26
0
    def test_set_playback_data_api(self):
        user = create_user()
        cmt = self._post(user=user)
        playback = '{"1": 2}'
        resp = self.post('/api/playback/set_playback_data', data={
            'comment_id': cmt['id'],
            'playback_data': playback,
        }, user=user)

        self._check(cmt['id'], playback)
Пример #27
0
    def test_loads_with_feed_item(self):
        user = create_staff()
        other = create_user()
        user.follow(other)

        cmt = self.post_quest_comment(author=other)['comment']

        resp = self.api_post('/api/feed/followee_comments', user=user)
        self.assertAPISuccess(resp)
        self.assertEqual(resp['comments'][0]['id'], cmt['id'])
Пример #28
0
 def test_successful(self):
     email = '*****@*****.**'
     user = create_user()
     self.api_post('/api/user/change_profile', {'new_email': email},
                   user=user)
     hashed = hashlib.sha1(email).hexdigest()
     resp = self.api_post('/api/existing_users_by_email',
                          {'email_hashes': [hashed]})
     self.assertAPISuccess(resp)
     self.assertEqual(resp['users'][0]['username'], user.username)
Пример #29
0
    def test_set(self):
        user = create_user()
        items = {'saw_update_modal_for_version': 'bar'}
        self.assertAPISuccess(
            self.api_post('/api/kv/set', {'items': items}, user=user))

        state = self.api_post('/api/heavy_state_sync', user=user)
        self.assertAPISuccess(state)
        self.assertEqual(state['user_kv']['saw_update_modal_for_version'],
                         'bar')
Пример #30
0
    def _post(self, user=None, quest=None, **kwargs):
        if user is None:
            user = create_user()

        params = {
            'quest_id': self.quest.id,
            'content_id': self.content.id,
        }
        params.update(kwargs)
        return self.api_post('/api/quest_comments/post', params,
                             user=user)['comment']
Пример #31
0
    def _post(self, user=None, quest=None, **kwargs):
        if user is None:
            user = create_user()

        quest_id = getattr(quest, 'id', None) or self.quest.id
        params = {
            'quest_id': quest_id,
            'content_id': self.content.id, 
        }
        params.update(kwargs)
        self.comment = self.api_post('/api/quest_comments/post', params, user=user)['comment']
Пример #32
0
    def test_quest_dismissal(self):
        user = create_user()
        inviter = create_user()
        self.api_post('/api/quest_invites/invite_user_to_quest', {
            'username': user.username,
            'quest_id': self.old_quest.id,
        }, user=inviter)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertAPISuccess(resp)

        self.assertEqual(resp['current_quest']['id'], self.quest.id)
        self.assertEqual(resp['quests'][0]['id'], self.old_quest.id)

        resp = self.api_post('/api/quests/dismiss_quest', {'quest_id': self.old_quest.id}, user=user)
        self.assertAPISuccess(resp)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertTrue('current_quest' in resp)
        self.assertEqual(len(resp['quests']), 0)
Пример #33
0
    def test_set_playback_data_api(self):
        user = create_user()
        cmt = self._post(user=user)
        playback = '{"1": 2}'
        resp = self.post('/api/playback/set_playback_data',
                         data={
                             'comment_id': cmt['id'],
                             'playback_data': playback,
                         },
                         user=user)

        self._check(cmt['id'], playback)
Пример #34
0
    def test_quest_inbox_with_invite(self):
        inviter = create_user()
        self.api_post('/api/quest_invites/invite_user_to_quest', {
            'username': self.user.username,
            'quest_id': self.old_quest.id,
        }, user=inviter)

        resp = self.api_post('/api/quests/inbox', user=self.user)
        self.assertAPISuccess(resp)
        
        quests = resp['quests']
        self.assertEqual(quests[0]['id'], self.old_quest.id)
Пример #35
0
 def recipients():
     actor = create_user()
     cmt = create_quest_comment(author=author)
     sticker = CommentSticker.objects.create(
         comment=cmt,
         timestamp=time.time(),
         type_id=settings.STAR_STICKER_TYPE_ID,
         user=actor,
         ip='0.0.0.0',
     )
     r = action_recipients('starred', actor, sticker, channel='PushNotificationChannel')
     return (r, cmt)
Пример #36
0
    def _post(self, user=None, quest=None, **kwargs):
        if user is None:
            user = create_user()

        quest_id = getattr(quest, 'id', None) or self.quest.id
        params = {
            'quest_id': quest_id,
            'content_id': self.content.id,
        }
        params.update(kwargs)
        self.comment = self.api_post('/api/quest_comments/post',
                                     params,
                                     user=user)['comment']
Пример #37
0
    def test_quest_inbox_with_invite(self):
        inviter = create_user()
        self.api_post('/api/quest_invites/invite_user_to_quest', {
            'username': self.user.username,
            'quest_id': self.old_quest.id,
        },
                      user=inviter)

        resp = self.api_post('/api/quests/inbox', user=self.user)
        self.assertAPISuccess(resp)

        quests = resp['quests']
        self.assertEqual(quests[0]['id'], self.old_quest.id)
Пример #38
0
    def test_quest_dismissal(self):
        user = create_user()
        inviter = create_user()
        self.api_post('/api/quest_invites/invite_user_to_quest', {
            'username': user.username,
            'quest_id': self.old_quest.id,
        },
                      user=inviter)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertAPISuccess(resp)

        self.assertEqual(resp['current_quest']['id'], self.quest.id)
        self.assertEqual(resp['quests'][0]['id'], self.old_quest.id)

        resp = self.api_post('/api/quests/dismiss_quest',
                             {'quest_id': self.old_quest.id},
                             user=user)
        self.assertAPISuccess(resp)

        resp = self.api_post('/api/quests/inbox', user=user)
        self.assertTrue('current_quest' in resp)
        self.assertEqual(len(resp['quests']), 0)
    def post_quest_comment(cls, quest=None, author=None, playback_data=None):
        from drawquest.tests.tests_helpers import create_current_quest, create_user

        if author is None:
            author = create_user()

        if quest is None:
            quest = create_current_quest()

        params = {"quest_id": quest.id, "content_id": create_content().id}

        resp = cls.api_post("/api/quest_comments/post", params, user=author)

        if playback_data is not None:
            save_playback_data(cmt, playback_data)

        return resp
Пример #40
0
    def test_streak_rewards(self):
        user = create_user()

        with override_service('time', FakeTimeProvider):

            def post():
                quest = create_current_quest()

                def rewards():
                    resp = self.api_post(
                        '/api/quest_comments/rewards_for_posting',
                        {'quest_id': quest.id},
                        user=user)
                    self.assertAPISuccess(resp)
                    print resp
                    return resp['rewards']

                before = rewards()
                self._post(user=user, quest=quest)
                after = rewards()
                Services.time.t += 60 * 60 * 24
                return (
                    before,
                    after,
                )

            current_streak = 0
            streaks = [3, 10, 100]

            for _ in xrange(
                    4):  #TODO should be higher but this is just too slow.
                before, after = post()

                for streak in streaks:
                    msg = 'After posting this, the current streak would be: {}'.format(
                        current_streak + 1)
                    if (current_streak + 1) == streak:
                        self.assertTrue('streak_' + str(streak) in before, msg)
                        self.assertFalse('streak_' + str(streak) in after, msg)
                    else:
                        self.assertFalse('streak_' + str(streak) in before,
                                         msg)

                current_streak += 1
Пример #41
0
    def post_quest_comment(cls, quest=None, author=None, playback_data=None):
        from drawquest.tests.tests_helpers import create_current_quest, create_user
        if author is None:
            author = create_user()

        if quest is None:
            quest = create_current_quest()

        params = {
            'quest_id': quest.id,
            'content_id': create_content().id,
        }

        resp = cls.api_post('/api/quest_comments/post', params, user=author)

        if playback_data is not None:
            save_playback_data(cmt, playback_data)

        return resp
Пример #42
0
    def test_set_plist_playback_data(self):
        user = create_user()
        cmt = self._post(user=user)

        playback = '{1: 2}'
        p = dict(
            aString="Doodah",
            aList=["A", "B", 12, 32.1, [1, 2, 3]],
            aFloat = 0.1,
            anInt = 728,
        )
        s = StringIO()
        pl = writePlist(p, s)
        s.seek(0)
        
        resp = self.post('/api/playback/set_playback_data', data={
            'comment_id': cmt['id'],
            'playback_plist_data': File(s, 'whatever.xml'),
        }, user=user)

        self._check(cmt['id'], json.backend_dumps(p))
Пример #43
0
    def test_set_plist_playback_data(self):
        user = create_user()
        cmt = self._post(user=user)

        playback = '{1: 2}'
        p = dict(
            aString="Doodah",
            aList=["A", "B", 12, 32.1, [1, 2, 3]],
            aFloat=0.1,
            anInt=728,
        )
        s = StringIO()
        pl = writePlist(p, s)
        s.seek(0)

        resp = self.post('/api/playback/set_playback_data',
                         data={
                             'comment_id': cmt['id'],
                             'playback_plist_data': File(s, 'whatever.xml'),
                         },
                         user=user)

        self._check(cmt['id'], json.backend_dumps(p))
Пример #44
0
    def test_streak_rewards(self):
        user = create_user()

        def post():
            quest = create_current_quest()

            def rewards():
                resp = self.api_post('/api/quest_comments/rewards_for_posting',
                                     {'quest_id': quest.id},
                                     user=user)
                self.assertAPISuccess(resp)
                return resp['rewards']

            before = rewards()
            self._post(user=user, quest=quest)
            after = rewards()
            return (
                before,
                after,
            )

        current_streak = 0
        streaks = [3, 10, 100]

        for _ in xrange(11):
            before, after = post()

            for streak in streaks:
                msg = 'After posting this, the current streak would be: {}'.format(
                    current_streak + 1)
                if (current_streak + 1) == streak:
                    self.assertTrue('streak_' + str(streak) in before, msg)
                    self.assertFalse('streak_' + str(streak) in after, msg)
                else:
                    self.assertFalse('streak_' + str(streak) in before, msg)

            current_streak += 1
Пример #45
0
 def after_setUp(self):
     self.author = create_user()
Пример #46
0
 def after_setUp(self):
     self.old_quest = create_current_quest()
     self.quest = create_current_quest()
     self.user = create_user()
     knobs.ONBOARDING_QUEST_ID = self.quest.id
Пример #47
0
 def test_loads(self):
     self.assertAPISuccess(
         self.api_post('/api/feed/followee_comments', user=create_user()))
Пример #48
0
 def after_setUp(self):
     self.user = create_user()
     self.actor = create_user()
Пример #49
0
 def after_setUp(self):
     self.author = create_user()
Пример #50
0
 def test_user_comments(self):
     user = create_user()
     self._post(user=user)
     cmts = self.api_post('/api/quest_comments/user_comments', {'username': user.username}, user=user)['comments']
     self.assertEqual(cmts[0]['id'], self.comment['id'])
Пример #51
0
 def after_setUp(self):
     self.inactive_user = create_user()
     self.client = self.get_client(user=self.inactive_user)
     self.client.login(username=self.inactive_user.username, password=PASSWORD)
     self.inactive_user.is_active = False
     self.inactive_user.save()
def create_staff(user_cls=User):
    user = create_user(user_cls=user_cls)
    user.is_staff = True
    user.save()
    return user
Пример #53
0
def create_staff(user_cls=User):
    user = create_user(user_cls=user_cls)
    user.is_staff = True
    user.save()
    return user
Пример #54
0
 def after_setUp(self):
     self.user = create_user()
Пример #55
0
 def test_twitter_privacy_default(self):
     state = self.api_post('/api/heavy_state_sync', user=create_user())
     self.assertEqual(state['twitter_privacy'], None)
 def post_offtopic_comment(self, **kwargs):
     group = create_group(founder=create_user())
     op = self.post_comment(reply_content=create_content().id, category=group.name, **kwargs)
     op.mark_offtopic(group.founder)
     return op
Пример #57
0
 def after_setUp(self):
     self.old_quest = create_current_quest()
     self.quest = create_current_quest()
     self.user = create_user()
     knobs.ONBOARDING_QUEST_ID = self.quest.id
def create_rich_user(*args, **kwargs):
    # Currency is limited but has unlimited inventory
    user = create_user(*args, **kwargs)
    # Make em' rich.
    user.kv.stickers.currency.increment(100)
    return user