Exemplo n.º 1
0
def test_content_subreddit_from_name_query(prompt, query, reddit, terminal,
                                           config):

    SubredditContent.from_name(reddit,
                               config,
                               prompt,
                               terminal.loader,
                               query=query)
Exemplo n.º 2
0
def test_content_subreddit_from_name_invalid(prompt, reddit, terminal, config):

    with terminal.loader():
        SubredditContent.from_name(reddit, config, prompt, terminal.loader)

    assert isinstance(terminal.loader.exception, praw.errors.InvalidSubreddit)

    # Must always have an argument because it gets displayed
    assert terminal.loader.exception.args[0]
Exemplo n.º 3
0
def test_content_subreddit_multireddit(reddit, terminal, config):

    name = '/r/python+linux'
    content = SubredditContent.from_name(reddit, config, name, terminal.loader)
    assert content.name == '/r/python+linux'

    # Invalid multireddit
    name = '/r/a+b'
    with terminal.loader():
        SubredditContent.from_name(reddit, config, name, terminal.loader)

    assert isinstance(terminal.loader.exception, praw.errors.NotFound)
Exemplo n.º 4
0
def test_content_subreddit_from_name(prompt, name, order, reddit, terminal,
                                     config):

    content = SubredditContent.from_name(reddit, config, prompt,
                                         terminal.loader)
    assert content.name == name
    assert content.order == order
Exemplo n.º 5
0
def test_content_subreddit_saved(reddit, oauth, refresh_token, terminal,
                                 config):

    # Not logged in
    with terminal.loader():
        SubredditContent.from_name(reddit, config, '/u/me/saved',
                                   terminal.loader)

    assert isinstance(terminal.loader.exception, exceptions.AccountError)

    # Logged in
    oauth.config.refresh_token = refresh_token
    oauth.authorize()

    with terminal.loader():
        SubredditContent.from_name(reddit, config, '/u/me/saved',
                                   terminal.loader)
Exemplo n.º 6
0
def test_content_subreddit_nsfw_filter(reddit, oauth, refresh_token, terminal,
                                       config):

    # NSFW subreddits should load if not logged in
    name = '/r/ImGoingToHellForThis'
    SubredditContent.from_name(reddit, config, name, terminal.loader)

    # Log in
    oauth.config.refresh_token = refresh_token
    oauth.authorize()

    # Make sure the API parameter hasn't changed
    assert reddit.user.over_18 is not None

    # Turn on safe search
    reddit.user.over_18 = False

    # Should refuse to load this subreddit
    with pytest.raises(exceptions.SubredditError):
        name = '/r/ImGoingToHellForThis'
        SubredditContent.from_name(reddit, config, name, terminal.loader)

    # Should filter out all of the nsfw posts
    name = '/r/ImGoingToHellForThis+python'
    content = SubredditContent.from_name(reddit, config, name, terminal.loader)

    for data in islice(content.iterate(0, 1), 50):
        assert data['object'].over_18 is False

    # Turn off safe search
    reddit.user.over_18 = True

    # The NSFW subreddit should load now
    name = '/r/ImGoingToHellForThis'
    SubredditContent.from_name(reddit, config, name, terminal.loader)
Exemplo n.º 7
0
def test_content_subreddit_from_name_authenticated(prompt, name, order, reddit,
                                                   terminal, config, oauth,
                                                   refresh_token):

    with pytest.raises(exceptions.AccountError):
        SubredditContent.from_name(reddit, config, prompt, terminal.loader)

    # Login and try again
    oauth.config.refresh_token = refresh_token
    oauth.authorize()

    if '{username}' in name:
        name = name.format(username=reddit.user.name)

    content = SubredditContent.from_name(reddit, config, prompt,
                                         terminal.loader)
    assert content.name == name
    assert content.order == order
Exemplo n.º 8
0
def test_content_subreddit_me(reddit, oauth, refresh_token, terminal, config):

    # Not logged in
    with terminal.loader():
        SubredditContent.from_name(reddit, config, '/u/me', terminal.loader)

    assert isinstance(terminal.loader.exception, exceptions.AccountError)

    # Logged in
    oauth.config.refresh_token = refresh_token
    oauth.authorize()
    with terminal.loader():
        SubredditContent.from_name(reddit, config, '/u/me', terminal.loader)

    # If there is no submitted content, an error should be raised
    if terminal.loader.exception:
        assert isinstance(terminal.loader.exception,
                          exceptions.NoSubmissionsError)
        assert terminal.loader.exception.name == '/u/me'
Exemplo n.º 9
0
def test_content_subreddit_from_name_order(reddit, terminal, config):

    # Explicit order trumps implicit
    name = '/r/python/top'

    content = SubredditContent.from_name(reddit,
                                         config,
                                         name,
                                         terminal.loader,
                                         order='new')

    assert content.name == '/r/python'
    assert content.order == 'new'
Exemplo n.º 10
0
def test_content_subreddit_gilded(reddit, terminal, config):

    name = '/r/python/gilded'
    content = SubredditContent.from_name(reddit, config, name, terminal.loader)
    assert content.order == 'gilded'
    assert content.get(0)['object'].gilded
Exemplo n.º 11
0
def test_content_subreddit_random(reddit, terminal, config):

    name = '/r/random'
    content = SubredditContent.from_name(reddit, config, name, terminal.loader)
    assert content.name.startswith('/r/')
    assert content.name != name