Cleaning up parameters.

This commit is contained in:
Michael Lazar
2016-07-21 22:25:05 -07:00
parent b95c4448af
commit 6ed9d37aa1
2 changed files with 77 additions and 65 deletions

View File

@@ -70,7 +70,7 @@ This both speeds up the tests and helps to maintain consistency across runs.
.. code-block:: bash .. code-block:: bash
$ pip install pytest vcrpy $ pip install pytest vcrpy --upgrade
2. Set your ``$PYTHONPATH`` to point to the directory of your RTV repository. 2. Set your ``$PYTHONPATH`` to point to the directory of your RTV repository.

View File

@@ -14,70 +14,78 @@ from rtv.content import (
from rtv import exceptions from rtv import exceptions
SUBREDDIT_PROMPTS = [ # Test entering a bunch of text into the prompt
('python', '/r/python', None), # (text, parsed subreddit, parsed order)
('python/', '/r/python', None), SUBREDDIT_PROMPTS = {
('r/python', '/r/python', None), 'plain-0': ('python', '/r/python', None),
('/r/python', '/r/python', None), 'plain-1': ('python/', '/r/python', None),
('/r/pics/new', '/r/pics', 'new'), 'plain-2': ('r/python', '/r/python', None),
('/r/pics/hot/', '/r/pics', 'hot'), 'plain-3': ('/r/python', '/r/python', None),
('pics/top', '/r/pics', 'top'), 'new': ('/r/pics/new', '/r/pics', 'new'),
('r/pics/rising', '/r/pics', 'rising'), 'hot': ('/r/pics/hot/', '/r/pics', 'hot'),
('/r/pics/controversial', '/r/pics', 'controversial'), 'top': ('pics/top', '/r/pics', 'top'),
('/r/pics/top-day', '/r/pics', 'top-day'), 'rising': ('r/pics/rising', '/r/pics', 'rising'),
('/r/pics/top-hour', '/r/pics', 'top-hour'), 'controversial': ('/r/pics/controversial', '/r/pics', 'controversial'),
('/r/pics/top-month', '/r/pics', 'top-month'), 'top-day': ('/r/pics/top-day', '/r/pics', 'top-day'),
('/r/pics/top-week', '/r/pics', 'top-week'), 'top-hour': ('/r/pics/top-hour', '/r/pics', 'top-hour'),
('/r/pics/top-year', '/r/pics', 'top-year'), 'top-month': ('/r/pics/top-month', '/r/pics', 'top-month'),
('/r/pics/top-all', '/r/pics', 'top-all'), 'top-week': ('/r/pics/top-week', '/r/pics', 'top-week'),
('/r/pics+linux', '/r/pics+linux', None), 'top-year': ('/r/pics/top-year', '/r/pics', 'top-year'),
('/r/pics+linux/new', '/r/pics+linux', 'new'), 'top-all': ('/r/pics/top-all', '/r/pics', 'top-all'),
('front', '/r/front', None), 'pics_linux': ('/r/pics+linux', '/r/pics+linux', None),
('/r/front', '/r/front', None), 'multi-new': ('/r/pics+linux/new', '/r/pics+linux', 'new'),
('/r/front/new', '/r/front', 'new'), 'front_0': ('front', '/r/front', None),
('/r/front/top-week', '/r/front', 'top-week'), 'front-1': ('/r/front', '/r/front', None),
('/user/spez', '/user/spez', None), 'front-new': ('/r/front/new', '/r/front', 'new'),
('/u/spez', '/u/spez', None), 'front-top-week': ('/r/front/top-week', '/r/front', 'top-week'),
('/u/spez/new', '/u/spez', 'new'), 'user-0': ('/user/spez', '/user/spez', None),
('/u/spez/top-all', '/u/spez', 'top-all'), 'user-1': ('/u/spez', '/u/spez', None),
('/user/multi-mod/m/art', '/user/multi-mod/m/art', None), 'user-new': ('/u/spez/new', '/u/spez', 'new'),
('/u/multi-mod/m/art', '/u/multi-mod/m/art', None), 'user-top-all': ('/u/spez/top-all', '/u/spez', 'top-all'),
('/u/multi-mod/m/art/top', '/u/multi-mod/m/art', 'top'), 'multi-0': ('/user/multi-mod/m/art', '/user/multi-mod/m/art', None),
('/u/multi-mod/m/art/top-all', '/u/multi-mod/m/art', 'top-all'), 'multi-1': ('/u/multi-mod/m/art', '/u/multi-mod/m/art', None),
('/domain/python.org', '/domain/python.org', None), 'multi-top': ('/u/multi-mod/m/art/top', '/u/multi-mod/m/art', 'top'),
pytest.mark.xfail(reason='Bug in api.reddit.com')( 'multi-top-all':
('/u/multi-mod/m/art/top-all', '/u/multi-mod/m/art', 'top-all'),
'domain': ('/domain/python.org', '/domain/python.org', None),
'domain-top': pytest.mark.xfail(reason='Bug in api.reddit.com')(
('/domain/python.org/top', '/domain/python.org', 'top')), ('/domain/python.org/top', '/domain/python.org', 'top')),
('/domain/python.org/top-all', '/domain/python.org', 'top-all'), 'domain-top-all':
] ('/domain/python.org/top-all', '/domain/python.org', 'top-all'),
}
SUBREDDIT_AUTH_PROMPTS = [ # Will raise an error if not logged in
('/user/me', '/user/me', None), SUBREDDIT_AUTH_PROMPTS = {
('/u/me', '/u/me', None), 'me-0': ('/user/me', '/user/me', None),
('/u/me/top', '/u/me', 'top'), 'me-1': ('/u/me', '/u/me', None),
('/u/me/top-all', '/u/me', 'top-all'), 'me-top': ('/u/me/top', '/u/me', 'top'),
] 'me-top-all': ('/u/me/top-all', '/u/me', 'top-all'),
}
SUBREDDIT_INVALID_PROMPTS = [ # All of these should raise an error when entered
'', SUBREDDIT_INVALID_PROMPTS = {
'/', 'empty': '',
'//', 'one-slash': '/',
'/////////////////', 'two-slashes': '//',
'/r/python/fake', 'many-slashes': '/////////////////',
'/r/python/top-fake', 'fake': '/r/python/fake',
'/r/python/new-all', 'top-fake': '/r/python/top-fake',
] 'new-all': '/r/python/new-all',
}
SUBREDDIT_SEARCH_QUERIES = [ # All of these search queries should return at least some submissions
('/r/front', 'reddit'), # (subreddit, search query)
('/r/python', 'python'), SUBREDDIT_SEARCH_QUERIES = {
('/r/python/top-all', 'guido'), 'front': ('/r/front', 'reddit'),
('/u/spez', 'ama'), 'python': ('/r/python', 'python'),
('/user/spez/top-all', 'ama'), 'python-top': ('/r/python/top-all', 'guido'),
('/u/multi-mod/m/art', 'PsBattle'), 'user': ('/u/spez', 'ama'),
('/u/multi-mod/m/art/top-all', 'PsBattle'), 'user-top': ('/user/spez/top-all', 'ama'),
('/domain/python.org', 'Python'), 'multi': ('/u/multi-mod/m/art', 'PsBattle'),
('/domain/python.org/top-all', 'Python'), 'multi-top': ('/u/multi-mod/m/art/top-all', 'PsBattle'),
] 'domain': ('/domain/python.org', 'Python'),
'domain-top': ('/domain/python.org/top-all', 'Python'),
}
def test_content_humanize_timestamp(): def test_content_humanize_timestamp():
@@ -300,7 +308,8 @@ def test_content_subreddit_load_more(reddit, terminal):
assert data['title'].startswith(six.text_type(i + 1)) assert data['title'].startswith(six.text_type(i + 1))
@pytest.mark.parametrize('prompt,name,order', SUBREDDIT_PROMPTS) @pytest.mark.parametrize('prompt,name,order', SUBREDDIT_PROMPTS.values(),
ids=SUBREDDIT_PROMPTS.keys())
def test_content_subreddit_from_name(prompt, name, order, reddit, terminal): def test_content_subreddit_from_name(prompt, name, order, reddit, terminal):
content = SubredditContent.from_name(reddit, prompt, terminal.loader) content = SubredditContent.from_name(reddit, prompt, terminal.loader)
@@ -308,7 +317,8 @@ def test_content_subreddit_from_name(prompt, name, order, reddit, terminal):
assert content.order == order assert content.order == order
@pytest.mark.parametrize('prompt,name,order', SUBREDDIT_AUTH_PROMPTS) @pytest.mark.parametrize('prompt,name,order', SUBREDDIT_AUTH_PROMPTS.values(),
ids=SUBREDDIT_AUTH_PROMPTS.keys())
def test_content_subreddit_from_name_authenticated( def test_content_subreddit_from_name_authenticated(
prompt, name, order, reddit, terminal, oauth, refresh_token): prompt, name, order, reddit, terminal, oauth, refresh_token):
@@ -324,7 +334,8 @@ def test_content_subreddit_from_name_authenticated(
assert content.order == order assert content.order == order
@pytest.mark.parametrize('prompt', SUBREDDIT_INVALID_PROMPTS) @pytest.mark.parametrize('prompt', SUBREDDIT_INVALID_PROMPTS.values(),
ids=SUBREDDIT_INVALID_PROMPTS.keys())
def test_content_subreddit_from_name_invalid(prompt, reddit, terminal): def test_content_subreddit_from_name_invalid(prompt, reddit, terminal):
with terminal.loader(): with terminal.loader():
@@ -332,7 +343,8 @@ def test_content_subreddit_from_name_invalid(prompt, reddit, terminal):
assert isinstance(terminal.loader.exception, praw.errors.InvalidSubreddit) assert isinstance(terminal.loader.exception, praw.errors.InvalidSubreddit)
@pytest.mark.parametrize('prompt,query', SUBREDDIT_SEARCH_QUERIES) @pytest.mark.parametrize('prompt,query', SUBREDDIT_SEARCH_QUERIES.values(),
SUBREDDIT_SEARCH_QUERIES.keys())
def test_content_subreddit_from_name_query(prompt, query, reddit, terminal): def test_content_subreddit_from_name_query(prompt, query, reddit, terminal):
SubredditContent.from_name(reddit, prompt, terminal.loader, query=query) SubredditContent.from_name(reddit, prompt, terminal.loader, query=query)