def test_edit__with_reason(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') self.reddit.read_only = False with self.recorder.use_cassette('TestWikiPage.test_edit__with_reason'): page.edit('PRAW updated with reason', reason='PRAW testing')
def test_edit(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.use_cassette(): page.edit("PRAW updated")
def test_edit__with_reason(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.recorder.use_cassette("TestWikiPage.test_edit__with_reason"): page.edit("PRAW updated with reason", reason="PRAW testing")
def _update_wiki_page(self, wiki_page: WikiPage, new_config: Dict) -> NoReturn: log.info('Writing new config to %s', wiki_page.subreddit.display_name) log.debug('New Config For %s: %s', wiki_page.subreddit.display_name, new_config) # TODO - Check what exceptions can be thrown here wiki_page.edit(json.dumps(new_config))
def test_edit__with_reason(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') self.reddit.read_only = False with self.recorder.use_cassette('TestWikiPage.test_edit__with_reason'): page.edit('PRAW updated with reason', reason='PRAW testing')
def test_revert(self, _): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.use_cassette(): revision_id = next(page.revisions(limit=1))["id"] page.revision(revision_id).mod.revert()
def test_edit__usernotes(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "usernotes") with open("tests/integration/files/too_large.jpg", "rb") as fp: large_content = urlsafe_b64encode(fp.read()).decode() self.reddit.read_only = False with self.use_cassette(): page.edit(large_content)
def test_edit__usernotes(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "usernotes") with open("tests/integration/files/too_large.jpg", "rb") as fp: large_content = urlsafe_b64encode(fp.read()).decode() self.reddit.read_only = False with self.use_cassette(placeholders=self.recorder.configure( ).default_cassette_options["placeholders"] + [{ "placeholder": "<CONTENT>", "replace": large_content }]): page.edit(large_content)
def update_or_create(sub: Subreddit, page: WikiPage, new_content: str, dry_run, edit_reason='Automatic update'): try: if new_content != page.content_md: print(diff_strings(page.content_md, new_content)) if not dry_run: page.edit(new_content, reason=edit_reason) except NotFound: name = page.name while name.startswith('/'): name = name[1:] print(diff_strings("", new_content)) if not dry_run: sub.wiki.create(name, new_content, reason=edit_reason)
def test_content_md(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') with self.recorder.use_cassette('TestWikiPage.test_content_md'): assert page.content_md
def test_invalid_page(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'invalid') with self.recorder.use_cassette('TestWikiPage.test_invalid_page'): with pytest.raises(NotFound): page.content_md
def test_revision_by(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') with self.recorder.use_cassette('TestWikiPage.test_revision_by'): assert isinstance(page.revision_by, Redditor)
def test_pickle(self): page = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="x") for level in range(pickle.HIGHEST_PROTOCOL + 1): other = pickle.loads(pickle.dumps(page, protocol=level)) assert page == other
def test_remove(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.recorder.use_cassette("TestWikiPageModeration.test_remove"): page.mod.remove("bboe")
def test_add(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') self.reddit.read_only = False with self.recorder.use_cassette('TestWikiPageModeration.test_add'): page.mod.add('bboe')
def test_add(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.use_cassette(): page.mod.add("bboe")
def test_content_md__invalid_name(self): subreddit = self.reddit.subreddit("reddit.com") page = WikiPage(self.reddit, subreddit, "\\A") with self.use_cassette(): with pytest.raises(RedditAPIException) as excinfo: page.content_md assert str(excinfo.value) == "INVALID_PAGE_NAME"
def test_settings(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.use_cassette(): settings = page.mod.settings() assert {"editors": [], "listed": True, "permlevel": 0} == settings
def test_update(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') self.reddit.read_only = False with self.recorder.use_cassette('TestWikiPageModeration.test_update'): updated = page.mod.update(listed=False, permlevel=1) assert {'editors': [], 'listed': False, 'permlevel': 1} == updated
def test_update(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "test") self.reddit.read_only = False with self.recorder.use_cassette("TestWikiPageModeration.test_update"): updated = page.mod.update(listed=False, permlevel=1) assert {"editors": [], "listed": False, "permlevel": 1} == updated
def test_init__with_revision__author_deleted(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'index', revision='873933a0-5550-11e2-82f1-12313b0c1e2b') with self.recorder.use_cassette( 'TestWikiPage.test_init__with_revision__author_deleted'): assert page.revision_by is None
def test_init__with_revision(self): subreddit = self.reddit.subreddit( pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'index', revision='2f38e910-b109-11e2-ba44-12313b0d4e76') with self.recorder.use_cassette( 'TestWikiPage.test_init__with_revision'): assert isinstance(page.revision_by, Redditor) assert page.revision_date == 1367295177
def test_settings(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, 'test') self.reddit.read_only = False with self.recorder.use_cassette( 'TestWikiPageModeration.test_settings'): settings = page.mod.settings() assert {'editors': [], 'listed': True, 'permlevel': 0} == settings
def test_init__with_revision__author_deleted(self): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage( self.reddit, subreddit, "index", revision="873933a0-5550-11e2-82f1-12313b0c1e2b", ) with self.use_cassette(): assert page.revision_by is None
def test_hash(self): page1 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='x') page2 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='2') page3 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'b'), name='1') page4 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'A'), name='x') page5 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='X') assert hash(page1) == hash(page1) assert hash(page2) == hash(page2) assert hash(page3) == hash(page3) assert hash(page1) != hash(page2) assert hash(page1) != hash(page3) assert hash(page1) == hash(page4) assert hash(page1) == hash(page5)
def test_equality(self): page1 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="x") page2 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="2") page3 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "b"), name="1") page4 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "A"), name="x") page5 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="X") assert page1 == page1 assert page2 == page2 assert page3 == page3 assert page1 != page2 assert page1 != page3 assert page1 == page4 assert page1 == page5
def test_equality(self): page1 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='x') page2 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='2') page3 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'b'), name='1') page4 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'A'), name='x') page5 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, 'a'), name='X') assert page1 == page1 assert page2 == page2 assert page3 == page3 assert page1 != page2 assert page1 != page3 assert page1 == page4 assert page1 == page5
def test_hash(self): page1 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="x") page2 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="2") page3 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "b"), name="1") page4 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "A"), name="x") page5 = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="X") assert hash(page1) == hash(page1) assert hash(page2) == hash(page2) assert hash(page3) == hash(page3) assert hash(page1) != hash(page2) assert hash(page1) != hash(page3) assert hash(page1) == hash(page4) assert hash(page1) == hash(page5)
def test_revert_css_fail(self, _): subreddit = self.reddit.subreddit(pytest.placeholders.test_subreddit) page = WikiPage(self.reddit, subreddit, "config/stylesheet") self.reddit.read_only = False with self.use_cassette(): subreddit.stylesheet.upload( name="css-revert-fail", image_path="tests/integration/files/icon.jpg", ) page.edit("div {background: url(%%css-revert-fail%%)}") revision_id = next(page.revisions(limit=1))["id"] subreddit.stylesheet.delete_image("css-revert-fail") with pytest.raises(Forbidden) as exc: page.revision(revision_id).mod.revert() assert exc.value.response.json() == { "reason": "INVALID_CSS", "message": "Forbidden", "explanation": "%(css_error)s", }
def test_str(self): page = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="x") assert str(page) == "a/x"
def test_repr(self): page = WikiPage(self.reddit, subreddit=Subreddit(self.reddit, "a"), name="x") assert repr(page) == ( "WikiPage(subreddit=Subreddit(display_name='a'), name='x')")