Skip to content

Commit

Permalink
add method get_suggested_edits to class Site
Browse files Browse the repository at this point in the history
  • Loading branch information
wchistow committed Jul 19, 2023
1 parent d09d220 commit 00b8f74
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 2 deletions.
2 changes: 1 addition & 1 deletion TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
+ [X] `get_revisions(self, ids: list[int], **kwargs: Any) -> list[Item]` - API method `revisions/`;
+ [X] `get_posts(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]` - API method `posts/` and `posts/{ids}`;
+ [X] `get_post(self, c_id: int, **kwargs: Any) -> Item | None`;
+ [ ] `get_suggested_edits(self, **kwargs: Any) -> list[Item]` - API method `suggested-edits/`;
+ [X] `get_suggested_edits(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]` - API method `suggested-edits/` and `suggested-edits/{ids}`;
+ [ ] `get_comments_on_answers(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]` - API method `answers/{ids}/comments`;
+ [ ] `get_comments_on_articles(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]` - API method `articles/{ids}/comments`;
+ [ ] `get_comments_on_posts(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]` - API method `posts/{ids}/comments`;
Expand Down
8 changes: 8 additions & 0 deletions src/pystackapi/site.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,14 @@ def get_similar(self, title: str, **kwargs: Any) -> list[Item]:
"""
return [Item(data) for data in self.get('similar/', title=title, **kwargs)['items']]

def get_suggested_edits(self, ids: list[int] | None = None, **kwargs: Any) -> list[Item]:
"""
Returns, if `ids` is set, the suggested edits identified by `ids`,
else all suggested edits on the site.
"""
addition = ';'.join(map(str, ids or []))
return [Item(data) for data in self.get(f'suggested-edits/{addition}', **kwargs)['items']]

def get_tags(self, **kwargs: Any) -> list[Item]:
"""Returns all tags in the system."""
return [Item(data) for data in self.get('tags/', **kwargs)['items']]
Expand Down
3 changes: 2 additions & 1 deletion tests/test_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@
from . import test_get_info
from . import test_get_posts
from . import test_get_privileges
from . import test_search
from . import test_get_suggested_edits
from . import test_get_questions
from . import test_get_revisions
from . import test_search
from . import test_get_tags
from . import test_get_users
38 changes: 38 additions & 0 deletions tests/test_client/test_get_suggested_edits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Tests for `Site.get_suggested_edits`."""
import lest

from pystackapi import site as site_m
from pystackapi.item import Item

from . import API_VERSION, requests

site_m.__dict__['requests'] = requests
site = site_m.Site('stackoverflow')


@lest.setup
def reset_requests() -> None:
requests.reset()


@lest.register
def test_get_suggested_edits_without_ids_url() -> None:
site.get_suggested_edits()

lest.assert_eq(requests.url, f'https://api.stackexchange.com/{API_VERSION}/suggested-edits/'
'?site=stackoverflow')


@lest.register
def test_get_suggested_edits_with_ids_url() -> None:
site.get_suggested_edits([1, 2])

lest.assert_eq(requests.url, f'https://api.stackexchange.com/{API_VERSION}/suggested-edits/1;2'
'?site=stackoverflow')


@lest.register
def test_get_suggested_edits_return_value() -> None:
res = site.get_suggested_edits()

lest.assert_eq(res, [Item({'id': 1})])

0 comments on commit 00b8f74

Please sign in to comment.