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_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())
def setUp(self): CanvasTestCase.setUp(self) self.group = create_group() self.data = { 'group_name': self.group.name, 'group_description': 'lolhacked1' }
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 _metadata(self, **cmt_kwargs): group = create_group() cmt = TemplateComment( self.post_comment(category=group.name, **cmt_kwargs).details()) return ( cmt, cmt.shareable_metadata(), )
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()
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))
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)
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
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"')
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))
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()])
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()])
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
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)
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)
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
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())
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)
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))
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))
def test_user_cannot_disable_group(self): normal_user, group = create_user(), create_group() self.assertFalse(group.can_disable(normal_user))
def _metadata(self, **cmt_kwargs): group = create_group() cmt = TemplateComment(self.post_comment(category=group.name, **cmt_kwargs).details()) return (cmt, cmt.shareable_metadata(),)
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))
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))
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)
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))
def test_nonspecial_url(self): group = create_group(name="jailbait") self.assertEquals(group.details()['url'], '/x/jailbait')
def setUp(self): CanvasTestCase.setUp(self) self.group = create_group() self.data = {'group_name': self.group.name, 'group_description': 'lolhacked1'}