示例#1
0
    def after_setUp(self):
        self.user = create_user()
        self.COMMENT_COUNT = 7
        self.GROUP = create_group(name=Config['featured_groups'][0])
        self.TODAY = datetime.datetime(year=2011, month=2, day=3)

        with override_service('time', FakeTimeProvider):
            #TODO refactor into tests_helpers and consolidate w/ other tests that do this (email_channel, models)
            Services.time.t = time.mktime(self.TODAY.timetuple())

            self.comments = [
                self.post_comment(reply_content=create_content().id,
                                  category=self.GROUP.name)
                for _ in xrange(self.COMMENT_COUNT - 1)
            ]

            self.comments.append(
                self.post_comment(reply_content=create_content().id,
                                  category=self.GROUP.name,
                                  parent_comment=self.comments[-1].id))

            Services.time.step(60 * 60)

            for cmt in self.comments:
                self.api_post('/api/sticker/comment', {
                    'type_id': '1',
                    'comment_id': cmt.id
                },
                              user=create_user())
                Services.time.step()
                Services.time.step(60 * 60)
                cmt.update_score()
示例#2
0
    def test_as_staff(self):
        group = create_group()
        user = create_staff()
        cmt = self.post_comment(reply_content=create_content().id,
                                category=group.name)
        self.assertFalse(cmt.is_offtopic())
        result = self.api_post('/api/comment/mark_offtopic', {
            'comment_id': cmt.id,
            'ot_hidden': True
        },
                               user=user)
        self.assertAPIFailure(result)
        group.moderators.add(user)
        result = self.api_post('/api/comment/mark_offtopic', {
            'comment_id': cmt.id,
            'ot_hidden': True
        },
                               user=user)
        self.assertAPISuccess(result)
        cmt = Comment.all_objects.get(pk=cmt.pk)
        self.assertTrue(cmt.is_offtopic())

        # Now undo it.
        result = self.api_post('/api/comment/mark_offtopic', {
            'comment_id': cmt.id,
            'ot_hidden': False
        },
                               user=user)
        cmt = Comment.objects.get(pk=cmt.pk)
        self.assertFalse(cmt.is_offtopic())
示例#3
0
 def setUp(self):
     CanvasTestCase.setUp(self)
     self.group = create_group()
     self.data = {
         'group_name': self.group.name,
         'group_description': 'lolhacked1'
     }
示例#4
0
 def after_setUp(self):
     self.inviter = create_user()
     self.invitee = create_user()
     self.comment = create_comment(
         author=self.inviter,
         reply_content=create_content(),
         category=create_group(name=MONSTER_MOBILE_GROUP))
 def test_get_actions(self):
     user = create_user()
     group = create_group(name="foobar")
     # Make that user a moderator
     group.moderators.add(user)
     actions = stickers.get_actions(user)
     for sticker in stickers.actions_group_mod:
         assert sticker in actions
 def test_get_actions(self):
     user = create_user()
     group = create_group(name="foobar")
     # Make that user a moderator
     group.moderators.add(user)
     actions = stickers.get_actions(user)
     for sticker in stickers.actions_group_mod:
         assert sticker in actions
示例#7
0
 def _metadata(self, **cmt_kwargs):
     group = create_group()
     cmt = TemplateComment(
         self.post_comment(category=group.name, **cmt_kwargs).details())
     return (
         cmt,
         cmt.shareable_metadata(),
     )
示例#8
0
 def setUp(self):
     CanvasTestCase.setUp(self)
     self.group = create_group()
     self.original = create_content()
     self.op = self.post_comment(reply_content=self.original.id, category=self.group.name)
     self.remix = create_content()
     self.remix.remix_of = self.original
     self.remix.save()
示例#9
0
    def test_follow(self):
        user = create_user()
        group = create_group()
        result = self.api_post('/api/group/follow', {'category_id': group.id}, user=user)

        self.assertEqual(result['success'], True)
        fc = FollowCategory.objects.get_or_none(category=group, user=user)
        self.assertTrue(bool(fc))
示例#10
0
    def test_200_logged_in_frontpage_is_following_a_group(self):
        user = create_user()
        user.redis.user_kv.hset('labs:root_is_following', 1)

        group = create_group()
        FollowCategory(category=group, user=user).save()

        self.assertStatus(200, '/', user=user)
示例#11
0
 def setUp(self):
     CanvasTestCase.setUp(self)
     self.group = create_group()
     self.original = create_content()
     self.op = self.post_comment(reply_content=self.original.id,
                                 category=self.group.name)
     self.remix = create_content()
     self.remix.remix_of = self.original
     self.remix.save()
示例#12
0
    def test_follow(self):
        user = create_user()
        group = create_group()
        result = self.api_post('/api/group/follow', {'category_id': group.id},
                               user=user)

        self.assertEqual(result['success'], True)
        fc = FollowCategory.objects.get_or_none(category=group, user=user)
        self.assertTrue(bool(fc))
示例#13
0
 def test_user_more_claim_anonymous_page(self):
     group = create_group()
     cmt = create_comment(category=group, author=self.user, anonymous=True, reply_text="party hard")
     # User looking at his own "top" page. There is no claim there
     result = self.api_post('/api/user/more', {
         'nav_data': {'user': self.user.username, "userpage_type": "new_anonymous"}
     }, user=self.user)
     print cmt.reply_text
     assert cmt.reply_text in result
     assert "Claim" in result
示例#14
0
    def test_found_limit(self):
        user = create_user()
        for _ in xrange(Category.FOUND_LIMIT):
            resp = self.get('/group/new', user=user)
            self.assertContains(resp, 'id="group_new"')
            self.assertNotContains(resp, 'max_founded_notice')
            group = create_group(founder=user)

        resp = self.get('/group/new', user=user)
        self.assertContains(resp, 'max_founded_notice')
        self.assertNotContains(resp, 'id="group_new"')
示例#15
0
    def test_found_limit(self):
        user = create_user()
        for _ in xrange(Category.FOUND_LIMIT):
            resp = self.get('/group/new', user=user)
            self.assertContains(resp, 'id="group_new"')
            self.assertNotContains(resp, 'max_founded_notice')
            group = create_group(founder=user)

        resp = self.get('/group/new', user=user)
        self.assertContains(resp, 'max_founded_notice')
        self.assertNotContains(resp, 'id="group_new"')
示例#16
0
    def test_disabled_group(self):
        group = create_group()
        self.assertFalse(isinstance(Category.get(group.name), DisabledCategory))

        group.visibility = Visibility.DISABLED
        group.save()
        self.assertTrue(isinstance(Category.get(group.name), DisabledCategory))

        group.visibility = Visibility.CURATED
        group.save()
        self.assertFalse(isinstance(Category.get(group.name), DisabledCategory))
示例#17
0
    def test_top_curation(self):
        group = create_group()
        for x in range(3):
            user = create_user()
            FollowCategory(user=user, category=group).save()
            group.details.force()
        self.assertTrue(group.name in [top['name'] for top in Category.get_top_details()],
                        repr(Category.get_top_details()))

        group.visibility = Visibility.CURATED
        group.save()
        self.assertFalse(group.name in [top['name'] for top in Category.get_top_details()])
示例#18
0
    def test_disabled_group(self):
        group = create_group()
        self.assertFalse(isinstance(Category.get(group.name),
                                    DisabledCategory))

        group.visibility = Visibility.DISABLED
        group.save()
        self.assertTrue(isinstance(Category.get(group.name), DisabledCategory))

        group.visibility = Visibility.CURATED
        group.save()
        self.assertFalse(isinstance(Category.get(group.name),
                                    DisabledCategory))
示例#19
0
    def test_top_curation(self):
        group = create_group()
        for x in range(3):
            user = create_user()
            FollowCategory(user=user, category=group).save()
            group.details.force()
        self.assertTrue(
            group.name in [top['name'] for top in Category.get_top_details()],
            repr(Category.get_top_details()))

        group.visibility = Visibility.CURATED
        group.save()
        self.assertFalse(
            group.name in [top['name'] for top in Category.get_top_details()])
示例#20
0
    def setUp(self):
        CanvasTestCase.setUp(self)
        self.group = create_group(founder=create_user())
        self.content = create_content()
        self.text = 'foo bar baz lol what'
        self.op = self.post_comment(reply_content=self.content.id, category=self.group.name, reply_text=self.text)
        self.user = create_user()

        # It would be great to at some point make some kind of "with configOverride(foo=new_value):"
        self.previousConfig = copy.deepcopy(configuration.Config)
        Config['minimum_top_replies'] = 1
        Config['maximum_top_replies'] = 2
        Config['posts_per_top_reply'] = 2

        self._per_page = knobs.COMMENTS_PER_PAGE
        knobs.COMMENTS_PER_PAGE = 2
示例#21
0
    def test_user_more_claim_new_page(self):
        group = create_group()
        cmt = create_comment(category=group, author=self.user, reply_text="party_hard")
        # User looking at his own "top" page. There is no claim there
        result = self.api_post('/api/user/more', {
            'nav_data': {
               'user': self.user.username,
               'userpage_type': 'new',
            }
        }, user=self.user)

        print result
        self.assertTrue(cmt.reply_text in result)

        self.assertTrue("Delete" in result)
        self.assertTrue("Claim" not in result)
示例#22
0
    def test_24h_digest_email_has_top_comments(self):
        COMMENT_COUNT = knobs.TWENTYFOUR_HOUR_EMAIL_COMMENT_COUNT
        GROUP = create_group(name=Config["featured_groups"][0])
        TODAY = datetime.datetime(year=2011, month=2, day=3)

        with override_service("time", FakeTimeProvider):
            # TODO refactor into tests_helpers and consolidate w/ other tests that do this (email_channel, models)
            # Make posts to show up in 'best'.
            Services.time.t = time.mktime(TODAY.timetuple())

            comments = [
                self.post_comment(reply_content=create_content().id, category=GROUP.name) for _ in xrange(COMMENT_COUNT)
            ]
            Services.time.step(60 * 60)
            # Sticker them.
            for cmt in comments:
                self.api_post("/api/sticker/comment", {"type_id": "1", "comment_id": cmt.id}, user=create_user())
                Services.time.step(60 * 60)
                cmt.update_score()

            def merge_scores():
                for category in [Category.ALL] + list(Category.objects.all()):
                    category.merge_top_scores()

            merge_scores()

            def get_email_message():
                user = create_user()
                pn = Actions.digest(user)
                notification = Notification.from_pending_notification(pn, user, "EmailChannel")

                return EmailChannel().make_message(notification, force=True)

            email_message = get_email_message()

            for cmt in comments:
                self.assertTrue(cmt.get_absolute_url() in email_message.body_html)

            # Wait a couple months, and make sure the comments disappear (so we're only showing top of the month,
            # not top of the year).
            Services.time.step(60 * 60 * 24 * 30 * 2)
            for cmt in comments:
                cmt.update_score()
            merge_scores()
            email_message = get_email_message()
            for cmt in comments:
                self.assertFalse(cmt.get_absolute_url() in email_message.body_html)
示例#23
0
 def test_user_more_claim_anonymous_page(self):
     group = create_group()
     cmt = create_comment(category=group,
                          author=self.user,
                          anonymous=True,
                          reply_text="party hard")
     # User looking at his own "top" page. There is no claim there
     result = self.api_post('/api/user/more', {
         'nav_data': {
             'user': self.user.username,
             "userpage_type": "new_anonymous"
         }
     },
                            user=self.user)
     print cmt.reply_text
     assert cmt.reply_text in result
     assert "Claim" in result
示例#24
0
    def setUp(self):
        CanvasTestCase.setUp(self)
        self.group = create_group(founder=create_user())
        self.content = create_content()
        self.text = 'foo bar baz lol what'
        self.op = self.post_comment(reply_content=self.content.id,
                                    category=self.group.name,
                                    reply_text=self.text)
        self.user = create_user()

        # It would be great to at some point make some kind of "with configOverride(foo=new_value):"
        self.previousConfig = copy.deepcopy(configuration.Config)
        Config['minimum_top_replies'] = 1
        Config['maximum_top_replies'] = 2
        Config['posts_per_top_reply'] = 2

        self._per_page = knobs.COMMENTS_PER_PAGE
        knobs.COMMENTS_PER_PAGE = 2
示例#25
0
    def test_as_staff(self):
        group = create_group()
        user = create_staff()
        cmt = self.post_comment(reply_content=create_content().id,
                                category=group.name)
        self.assertFalse(cmt.is_offtopic())
        result = self.api_post('/api/comment/mark_offtopic', {'comment_id': cmt.id, 'ot_hidden': True}, user=user)
        self.assertAPIFailure(result)
        group.moderators.add(user)
        result = self.api_post('/api/comment/mark_offtopic', {'comment_id': cmt.id, 'ot_hidden': True}, user=user)
        self.assertAPISuccess(result)
        cmt = Comment.all_objects.get(pk=cmt.pk)
        self.assertTrue(cmt.is_offtopic())

        # Now undo it.
        result = self.api_post('/api/comment/mark_offtopic', {'comment_id': cmt.id, 'ot_hidden': False}, user=user)
        cmt = Comment.objects.get(pk=cmt.pk)
        self.assertFalse(cmt.is_offtopic())
示例#26
0
    def test_24h_digest_email_has_top_comments(self):
        COMMENT_COUNT = knobs.TWENTYFOUR_HOUR_EMAIL_COMMENT_COUNT
        GROUP = create_group(name=Config['featured_groups'][0])
        TODAY = datetime.datetime(year=2011, month=2, day=3)

        with override_service('time', FakeTimeProvider):
            #TODO refactor into tests_helpers and consolidate w/ other tests that do this (email_channel, models)
            # Make posts to show up in 'best'.
            Services.time.t = time.mktime(TODAY.timetuple())

            comments = [self.post_comment(reply_content=create_content().id, category=GROUP.name)
                        for _ in xrange(COMMENT_COUNT)]
            Services.time.step(60*60)
            # Sticker them.
            for cmt in comments:
                self.api_post('/api/sticker/comment', {'type_id': '1', 'comment_id': cmt.id}, user=create_user())
                Services.time.step(60*60)
                cmt.update_score()

            def merge_scores():
                for category in [Category.ALL] + list(Category.objects.all()):
                    category.merge_top_scores()
            merge_scores()

            def get_email_message():
                user = create_user()
                pn = Actions.digest(user)
                notification = Notification.from_pending_notification(pn, user, "EmailChannel")

                return EmailChannel().make_message(notification, force=True)
            email_message = get_email_message()

            for cmt in comments:
                self.assertTrue(cmt.get_absolute_url() in email_message.body_html)

            # Wait a couple months, and make sure the comments disappear (so we're only showing top of the month,
            # not top of the year).
            Services.time.step(60*60*24*30*2)
            for cmt in comments:
                cmt.update_score()
            merge_scores()
            email_message = get_email_message()
            for cmt in comments:
                self.assertFalse(cmt.get_absolute_url() in email_message.body_html)
示例#27
0
    def test_user_more_claim_new_page(self):
        group = create_group()
        cmt = create_comment(category=group,
                             author=self.user,
                             reply_text="party_hard")
        # User looking at his own "top" page. There is no claim there
        result = self.api_post('/api/user/more', {
            'nav_data': {
                'user': self.user.username,
                'userpage_type': 'new',
            }
        },
                               user=self.user)

        print result
        self.assertTrue(cmt.reply_text in result)

        self.assertTrue("Delete" in result)
        self.assertTrue("Claim" not in result)
示例#28
0
    def after_setUp(self):
        self.user = create_user()
        self.COMMENT_COUNT = 7
        self.GROUP = create_group(name=Config['featured_groups'][0])
        self.TODAY = datetime.datetime(year=2011, month=2, day=3)

        with override_service('time', FakeTimeProvider):
            #TODO refactor into tests_helpers and consolidate w/ other tests that do this (email_channel, models)
            Services.time.t = time.mktime(self.TODAY.timetuple())

            self.comments = [self.post_comment(reply_content=create_content().id, category=self.GROUP.name)
                            for _ in xrange(self.COMMENT_COUNT - 1)]

            self.comments.append(self.post_comment(reply_content=create_content().id, category=self.GROUP.name,
                                                   parent_comment=self.comments[-1].id))

            Services.time.step(60*60)

            for cmt in self.comments:
                self.api_post('/api/sticker/comment', {'type_id': '1', 'comment_id': cmt.id}, user=create_user())
                Services.time.step()
                Services.time.step(60*60)
                cmt.update_score()
 def test_staff_can_disable_group(self):
     staff_user, group = create_staff(), create_group()
     self.assertTrue(group.can_disable(staff_user))
示例#30
0
 def test_staff_can_disable_group(self):
     staff_user, group = create_staff(), create_group()
     self.assertTrue(group.can_disable(staff_user))
示例#31
0
文件: tests.py 项目: StetHD/canvas-2
 def after_setUp(self):
     self.inviter = create_user()
     self.invitee = create_user()
     self.comment = create_comment(author=self.inviter, reply_content=create_content(),
                                   category=create_group(name=MONSTER_MOBILE_GROUP))
 def test_user_cannot_modify_group(self):
     normal_user, group = create_user(), create_group()
     self.assertFalse(group.can_modify(normal_user))
示例#33
0
 def test_user_cannot_disable_group(self):
     normal_user, group = create_user(), create_group()
     self.assertFalse(group.can_disable(normal_user))
示例#34
0
 def _metadata(self, **cmt_kwargs):
     group = create_group()
     cmt = TemplateComment(self.post_comment(category=group.name, **cmt_kwargs).details())
     return (cmt, cmt.shareable_metadata(),)
示例#35
0
 def test_whitelisted_categories(self):
     group = create_group(name=Config['featured_groups'][0])
     group2 = create_group(name='foobar')
     self.assertTrue(group.id in Category.get_whitelisted())
     self.assertFalse(group2.id in Category.get_whitelisted())
 def test_founder_can_moderate_group(self):
     normal_user, group = create_user(), create_group()
     group.founder = normal_user
     self.assertTrue(group.can_moderate(normal_user))
示例#37
0
 def test_moderator_cannot_modify_group(self):
     normal_user, group = create_user(), create_group()
     group.moderators.add(normal_user)
     self.assertFalse(group.can_modify(normal_user))
示例#38
0
 def test_founder_can_moderate_group(self):
     normal_user, group = create_user(), create_group()
     group.founder = normal_user
     self.assertTrue(group.can_moderate(normal_user))
示例#39
0
 def test_url_stripping_group(self):
     group = create_group()
     response = self.get_client().get('/x/%s/' % group.name)
     self.assertRedirects(response, '/x/%s' % group.name)
示例#40
0
 def test_moderator_can_moderate_group(self):
     normal_user, group = create_user(), create_group()
     group.moderators.add(normal_user)
     self.assertTrue(group.can_moderate(normal_user))
 def test_staff_cannot_moderate_group(self):
     staff_user, group = create_staff(), create_group()
     self.assertFalse(group.can_moderate(staff_user))
示例#42
0
 def test_nonspecial_url(self):
     group = create_group(name="jailbait")
     self.assertEquals(group.details()['url'], '/x/jailbait')
示例#43
0
 def setUp(self):
     CanvasTestCase.setUp(self)
     self.group = create_group()
     self.data = {'group_name': self.group.name, 'group_description': 'lolhacked1'}
 def test_moderator_cannot_modify_group(self):
     normal_user, group = create_user(), create_group()
     group.moderators.add(normal_user)
     self.assertFalse(group.can_modify(normal_user))
示例#45
0
 def test_staff_cannot_moderate_group(self):
     staff_user, group = create_staff(), create_group()
     self.assertFalse(group.can_moderate(staff_user))
示例#46
0
 def test_whitelisted_categories(self):
     group = create_group(name=Config['featured_groups'][0])
     group2 = create_group(name='foobar')
     self.assertTrue(group.id in Category.get_whitelisted())
     self.assertFalse(group2.id in Category.get_whitelisted())
 def test_moderator_can_moderate_group(self):
     normal_user, group = create_user(), create_group()
     group.moderators.add(normal_user)
     self.assertTrue(group.can_moderate(normal_user))
示例#48
0
 def test_nonspecial_url(self):
     group = create_group(name="jailbait")
     self.assertEquals(group.details()['url'], '/x/jailbait')
示例#49
0
 def test_user_cannot_modify_group(self):
     normal_user, group = create_user(), create_group()
     self.assertFalse(group.can_modify(normal_user))
 def test_user_cannot_disable_group(self):
     normal_user, group = create_user(), create_group()
     self.assertFalse(group.can_disable(normal_user))