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_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__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 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_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 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", }