def test_content_submission_load_more_comments(reddit, terminal): url = 'https://www.reddit.com/r/AskReddit/comments/2np694/' submission = reddit.get_submission(url) content = SubmissionContent(submission, terminal.loader) assert len(content._comment_data) == 391 # More comments load when toggled assert content.get(390)['type'] == 'MoreComments' content.toggle(390) assert len(content._comment_data) > 390 assert content.get(390)['type'] == 'Comment'
def test_content_submission_initialize(reddit, terminal): url = 'https://www.reddit.com/r/Python/comments/2xmo63/' submission = reddit.get_submission(url) content = SubmissionContent(submission, terminal.loader, indent_size=3, max_indent_level=4, order='top') assert content.indent_size == 3 assert content.max_indent_level == 4 assert content.order == 'top' assert content.name is not None
def test_content_submission_from_url(reddit, terminal): url = 'https://www.reddit.com/r/AskReddit/comments/2np694/' SubmissionContent.from_url(reddit, url, terminal.loader) SubmissionContent.from_url(reddit, url, terminal.loader, order='new') # Invalid sorting order doesn't raise an exception with terminal.loader(): SubmissionContent.from_url(reddit, url, terminal.loader, order='fake') assert not terminal.loader.exception # Invalid comment URL with terminal.loader(): SubmissionContent.from_url(reddit, url[:-2], terminal.loader) assert isinstance(terminal.loader.exception, praw.errors.NotFound)
def test_content_submission_from_url(reddit, oauth, refresh_token, terminal): url = 'https://www.reddit.com/r/AskReddit/comments/2np694/' SubmissionContent.from_url(reddit, url, terminal.loader) SubmissionContent.from_url(reddit, url, terminal.loader, order='new') # Invalid sorting order doesn't raise an exception with terminal.loader(): SubmissionContent.from_url(reddit, url, terminal.loader, order='fake') assert not terminal.loader.exception # Invalid comment URL with terminal.loader(): SubmissionContent.from_url(reddit, url[:-2], terminal.loader) assert isinstance(terminal.loader.exception, praw.errors.NotFound) # np.* urls should not raise a 403 error when logged into oauth oauth.config.refresh_token = refresh_token oauth.authorize() url = 'https://np.reddit.com//r/LifeProTips/comments/441hsf//czmp112.json' with terminal.loader(): SubmissionContent.from_url(reddit, url, terminal.loader) assert not terminal.loader.exception
def test_content_submission_load_more_comments(reddit, terminal): url = 'https://www.reddit.com/r/AskReddit/comments/2np694/' submission = reddit.get_submission(url) content = SubmissionContent(submission, terminal.loader) last_index = len(content._comment_data) - 1 # More comments load when toggled assert content.get(last_index)['type'] == 'MoreComments' content.toggle(last_index) # Loading more comments should increase the range assert content.range[0] == -1 assert content.range[1] > last_index assert content.get(last_index)['type'] == 'Comment'
def test_content_submission(reddit, terminal): url = 'https://www.reddit.com/r/Python/comments/2xmo63/' submission = reddit.get_submission(url) content = SubmissionContent(submission, terminal.loader) # Everything is loaded upon instantiation assert content.range == (-1, 44) assert content.get(-1)['type'] == 'Submission' assert content.get(40)['type'] == 'Comment' for data in content.iterate(-1, 1): assert all(k in data for k in ('object', 'n_rows', 'offset', 'type', 'hidden')) # All text should be converted to unicode by this point for val in data.values(): assert not isinstance(val, six.binary_type) # Out of bounds with pytest.raises(IndexError): content.get(-2) with pytest.raises(IndexError): content.get(50) # Toggling the submission doesn't do anything content.toggle(-1) assert len(content._comment_data) == 45 # Toggling a comment hides its 3 children content.toggle(2) data = content.get(2) assert data['type'] == 'HiddenComment' assert data['count'] == 3 assert data['hidden'] is True assert data['level'] >= content.get(3)['level'] assert content.range == (-1, 42) # Toggling again expands the children content.toggle(2) data = content.get(2) assert data['hidden'] is False assert content.range == (-1, 44)
def test_content_submission(reddit, terminal): url = 'https://www.reddit.com/r/Python/comments/2xmo63/' submission = reddit.get_submission(url) content = SubmissionContent(submission, terminal.loader) # Everything is loaded upon instantiation assert len(content._comment_data) == 45 assert content.get(-1)['type'] == 'Submission' assert content.get(40)['type'] == 'Comment' for data in content.iterate(-1, 1): assert all(k in data for k in ('object', 'n_rows', 'offset', 'type')) # All text should be converted to unicode by this point for val in data.values(): assert not isinstance(val, six.binary_type) # Out of bounds with pytest.raises(IndexError): content.get(-2) with pytest.raises(IndexError): content.get(50) # Toggling the submission doesn't do anything content.toggle(-1) assert len(content._comment_data) == 45 # Toggling a comment hides its 3 children content.toggle(2) data = content.get(2) assert data['type'] == 'HiddenComment' assert data['count'] == 3 assert data['level'] >= content.get(3)['level'] assert len(content._comment_data) == 43 # Toggling again expands the children content.toggle(2) assert len(content._comment_data) == 45