Skip to content

Commit

Permalink
Merge dd23d02 into 861b928
Browse files Browse the repository at this point in the history
  • Loading branch information
voussoir committed Jul 14, 2015
2 parents 861b928 + dd23d02 commit 050762e
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 11 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ Unreleased
* **[FEATURE]** Added methods :meth:`leave_moderator` and
:meth:`leave_contributor` to :class:`praw.__init__.AuthenticatedReddit`
and :class:`praw.objects.Subreddit`.
* **[FEATURE]** Added support for double stickies. Use the parameter `num`
when setting or getting a sticky. 1 for top, 2 for bottom.
* **[FEATURE]** Added methods :meth:`praw.objects.Message.collapse` and
:meth:`praw.objects.Message.uncollapse`.

Expand Down
14 changes: 10 additions & 4 deletions praw/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -972,10 +972,16 @@ def get_rising(self, *args, **kwargs):
return self.get_content(self.config['rising'], *args, **kwargs)

@decorators.restrict_access(scope='read')
def get_sticky(self, subreddit=None):
"""Return a Submission object for the sticky of the subreddit."""
return objects.Submission.from_json(self.request_json(
self.config['sticky'] % six.text_type(subreddit)))
def get_sticky(self, subreddit, num=1):
"""Return a Submission object for the sticky of the subreddit.
:param num: Either 1 or 2 to get the top sticky or bottom sticky.
"""
url = self.config['sticky'] % six.text_type(subreddit)
param = {'num': 2} if num == 2 else None
return objects.Submission.from_json(self.request_json(url,
params=param))

def get_submission(self, url=None, submission_id=None, comment_limit=0,
comment_sort=None, params=None):
Expand Down
2 changes: 1 addition & 1 deletion tests/cassettes/test_sticky_unsticky.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions tests/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ def configure(self):
'modself': '10640071-v2ZWipt20gPZvfBnvILkBUDq0P4'}

self.submission_edit_id = '16i92b'
self.submission_sticky_id = '32eucy'
self.submission_sticky_id2 = '32exei'

def delay_for_listing_update(self, duration=0.1):
if not os.getenv('TRAVIS') and self.r.config.api_request_delay == 0:
Expand Down
27 changes: 21 additions & 6 deletions tests/test_submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,24 @@ def test_mark_as_nsfw_and_umark_as_nsfw__as_moderator(self):

@betamax()
def test_sticky_unsticky(self):
submission_id = self.submission_edit_id
submission = self.r.get_submission(submission_id=submission_id)
submission.sticky()
self.assertTrue(submission.refresh().stickied)
submission.unsticky()
self.assertFalse(submission.refresh().stickied)
subreddit = self.r.get_subreddit(self.sr)
submission_a = self.r.get_submission(
submission_id=self.submission_sticky_id)
submission_b = self.r.get_submission(
submission_id=self.submission_sticky_id2)

# Set the bottom one first on purpose, to make sure
# using num=1 sets B on top properly.
submission_a.sticky(num=2)
submission_b.sticky(num=1)

submission_sa = subreddit.get_sticky(2)
submission_sb = self.r.get_sticky(subreddit, 1)

self.assertEqual(submission_sa.id, submission_a.id)
self.assertEqual(submission_sb.id, submission_b.id)

submission_a.unsticky()
submission_b.unsticky()
self.assertFalse(submission_a.refresh().stickied)
self.assertFalse(submission_b.refresh().stickied)

0 comments on commit 050762e

Please sign in to comment.