class test_getters(): def setup(self): self.reddit = Reddit(user_agent=TEST_AGENT, respect=False) def test_hot(self): _limit_getter_test_helper(self.reddit.hot) def test_new(self): _limit_getter_test_helper(self.reddit.new) def test_top(self): _limit_getter_test_helper(self.reddit.top) def test_controversial(self): _limit_getter_test_helper(self.reddit.controversial) def test_comments(self): _limit_getter_test_helper(self.reddit.comments) def test_user(self): ok_(isinstance(self.reddit.user('reddit'), things.Account)) def test_subreddit(self): ok_(isinstance(self.reddit.subreddit(TEST_SR), things.Subreddit)) def test_info(self): f = partial(self.reddit.info, 'http://www.google.com/') _limit_getter_test_helper(f) def test_search(self): f = partial(self.reddit.search, 'test post') _limit_getter_test_helper(f) def test_domain(self): f = partial(self.reddit.domain, 'google.com') _limit_getter_test_helper(f) def test_user_comments(self): f = partial(self.reddit.user_comments, 'reddit') _limit_getter_test_helper(f) def test_user_submitted(self): f = partial(self.reddit.user_submitted, 'reddit') _limit_getter_test_helper(f) def test_moderators(self): ok_(isinstance(self.reddit.moderators(TEST_SR), things.ListBlob)) ok_(isinstance(self.reddit.moderators(TEST_SR, limit=random.randint(1, 100)), things.ListBlob))
class test_posters(): def setup(self): self.reddit = Reddit(USERNAME, PASSWORD, user_agent=TEST_AGENT, respect=False) self.link = self.reddit.hot()[0] self.created = [] def test_vote(self): l = self.link ok_(self.reddit.vote(l.name, 1)) l = l.refresh() eq_(l.likes, True) ok_(self.reddit.vote(l.name, 0)) l = l.refresh() eq_(l.likes, None) ok_(self.reddit.vote(l.name, -1)) l = l.refresh() eq_(l.likes, False) def test_upvote(self): l = self.link ok_(self.reddit.upvote(l.name)) l = l.refresh() eq_(l.likes, True) def test_downvote(self): l = self.link ok_(self.reddit.downvote(l.name)) l = l.refresh() eq_(l.likes, False) def test_unvote(self): l = self.link ok_(self.reddit.unvote(l.name)) l = l.refresh() eq_(l.likes, None) def test_comment_and_edit(self): s = genstr() c = self.link.comment(s) if c: self.created.append(c) eq_(c.author, USERNAME) eq_(c.parent_id, self.link.name) eq_(c.body, s) s = genstr() c = c.edit(s) eq_(c.body, s) def test_submit_link(self): t = genstr() u = 'http://www.google.com/?t={0}'.format(t) l = self.reddit.submit_link(TEST_SR, t, u) if l: self.created.append(l) eq_(l.subreddit, TEST_SR) eq_(l.author, USERNAME) eq_(l.title, t) eq_(l.url, u) def test_submit_text_and_edit(self): t = genstr() b = genstr() l = self.reddit.submit_text(TEST_SR, t, b) if l: self.created.append(l) eq_(l.subreddit, TEST_SR) eq_(l.author, USERNAME) eq_(l.title, t) eq_(l.selftext, b) b = genstr() l = l.edit(b) eq_(l.selftext, b) # TODO: test delete def test_save_and_unsave(self): _opposite_pair_test_helper( self.link, 'saved', lambda l: self.reddit.unsave(l.name), lambda l: self.reddit.save(l.name) ) def test_hide_and_unhide(self): _opposite_pair_test_helper( self.link, 'hidden', lambda l: self.reddit.unhide(l.name), lambda l: self.reddit.hide(l.name) ) def test_marknsfw_and_unmarknsfw(self): link = self.reddit.submit_text(TEST_SR, 'foo', 'bar') if link: self.created.append(link) _opposite_pair_test_helper( link, 'over_18', lambda l: self.reddit.unmarknsfw(l.name), lambda l: self.reddit.marknsfw(l.name) ) def test_report(self): link = self.reddit.submit_text(CREATED_SR, 'foo', 'bar') if link: self.created.append(link) ok_(self.reddit.report(link.name)) link = link.refresh() eq_(link.num_reports, 1) # need to test it was actually reported def test_compose_read_and_unread_message(self): r2 = Reddit(USERNAME2, PASSWORD2, user_agent=TEST_AGENT, respect=False) ok_(self.reddit.compose(USERNAME2, 'foo', 'bar')) m = r2.unread()[0] ok_(m.new) eq_(m.author, USERNAME) eq_(m.subject, 'foo') eq_(m.body, 'bar') ok_(r2.read_message(m.name)) l = r2.unread() ok_(len(l) <= 0 or l[0].name != m.name) ok_(r2.unread_message(m.name)) n = r2.unread()[0] eq_(m.name, n.name) def test_subscribe_and_unsubscribe(self): sr = self.reddit.subreddit(TEST_SR).name ok_(self.reddit.subscribe(sr)) ok_(TEST_SR in [r.display_name for r in self.reddit.mine()]) ok_(self.reddit.unsubscribe(sr)) ok_(TEST_SR not in [r.display_name for r in self.reddit.mine()]) ok_(self.reddit.subscribe(TEST_SR)) ok_(TEST_SR in [r.display_name for r in self.reddit.mine()]) ok_(self.reddit.unsubscribe(TEST_SR)) ok_(TEST_SR not in [r.display_name for r in self.reddit.mine()]) def test_approve(self): l = self.reddit.submit_text(CREATED_SR, 'foo', 'bar') if l: self.created.append(l) ok_(self.reddit.approve(l.name)) l = l.refresh() eq_(l.approved_by, USERNAME) def test_remove(self): l = self.reddit.submit_text(CREATED_SR, 'foo', 'bar') if l: self.created.append(l) ok_(self.reddit.remove(l.name)) l = l.refresh() eq_(l.banned_by, USERNAME) def test_distinguish(self): l = self.reddit.submit_text(CREATED_SR, 'foo', 'bar') if l: self.created.append(l) ok_(self.reddit.distinguish(l.name)) # TODO: check if this actually distinguished. don't know how def test_flair_flairlist_flaircsv(self): ok_(self.reddit.flair(CREATED_SR, USERNAME2, 'sometext', 'someclass')) l = self.reddit.flairlist(CREATED_SR) ok_((USERNAME2, 'sometext', 'someclass') in [(a.user, a.flair_text, a.flair_css_class) for a in l]) ok_(self.reddit.flaircsv(CREATED_SR, '{0},,'.format(USERNAME2))) l = self.reddit.flairlist(CREATED_SR) ok_(USERNAME2 not in [a.user for a in l]) def teardown(self): for i in self.created: i.delete()