Added tests, minor refactoring

This commit is contained in:
Michael Lazar
2019-02-03 00:24:38 -05:00
parent e48e93aabf
commit 8042f3e1f0
5 changed files with 269 additions and 18 deletions

View File

@@ -149,7 +149,7 @@ class Content(object):
data['type'] = 'Comment'
data['level'] = comment.nested_level
data['body'] = comment.body
data['html'] = comment.body_html or ''
data['html'] = comment.body_html
data['created'] = cls.humanize_timestamp(comment.created_utc)
data['score'] = '{0} pts'.format(
'-' if comment.score_hidden else comment.score)

View File

@@ -312,19 +312,29 @@ class Page(object):
"""
data = self.get_selected_item()
url_full = data.get('url_full')
if url_full and url_full != data['permalink']:
permalink = data.get('permalink')
if url_full and url_full != permalink:
# The item is a link-only submission that won't contain text
link = data['url_full']
link = url_full
else:
extracted_links = self.content.extract_links(data.get('html', ''))
html = data.get('html')
if html:
extracted_links = self.content.extract_links(html)
if not extracted_links:
# Only one selection to choose from, so just pick it
link = data.get('permalink')
link = permalink
else:
# Let the user decide which link to open
links = [{'text': 'Permalink', 'href': data['permalink']}]
links = []
if permalink:
links += [{'text': 'Permalink', 'href': permalink}]
links += extracted_links
link = self.term.prompt_user_to_select_link(links)
else:
# Some items like hidden comments don't have any HTML to parse
link = permalink
return link
@PageController.register(Command('COPY_PERMALINK'))

View File

@@ -143,18 +143,18 @@ class SubmissionPage(Page):
If there is more than one link contained in the item, prompt the user
to choose which link to open.
"""
link = self.prompt_and_select_link()
if link:
data = self.get_selected_item()
if data['type'] == 'Submission':
link = self.prompt_and_select_link()
if link:
self.config.history.add(link)
self.term.open_link(link)
elif data['type'] == 'Comment' and data['permalink']:
elif data['type'] == 'Comment':
link = self.prompt_and_select_link()
if link:
self.term.open_link(link)
else:
self.term.flash()
else:
self.term.flash()
@SubmissionController.register(Command('SUBMISSION_OPEN_IN_PAGER'))
def open_pager(self):

View File

@@ -0,0 +1,201 @@
interactions:
- request:
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Connection: [keep-alive]
User-Agent: [rtv test suite PRAW/3.6.1 Python/3.7.0 b'Darwin-17.7.0-x86_64-i386-64bit']
method: GET
uri: https://www.reddit.com/r/Python/comments/2xmo63.json
response:
body:
string: !!binary |
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
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Encoding: [gzip]
Content-Length: ['9158']
Content-Type: [application/json; charset=UTF-8]
Date: ['Sun, 03 Feb 2019 05:20:09 GMT']
Server: [snooserv]
Set-Cookie: [edgebucket=llRU1AJmllWLGcM0iA; Domain=reddit.com; Max-Age=63071999;
Path=/; secure]
Strict-Transport-Security: [max-age=15552000; includeSubDomains; preload]
Vary: [accept-encoding]
Via: [1.1 varnish]
X-Cache: [MISS]
X-Cache-Hits: ['0']
X-Moose: [majestic]
X-Served-By: [cache-mdw17380-MDW]
X-Timer: ['S1549171210.567463,VS0,VE236']
access-control-allow-origin: ['*']
access-control-expose-headers: [X-Moose]
cache-control: ['max-age=0, must-revalidate']
x-content-type-options: [nosniff]
x-frame-options: [SAMEORIGIN]
x-ua-compatible: [IE=edge]
x-xss-protection: [1; mode=block]
status: {code: 200, message: OK}
version: 1

View File

@@ -582,3 +582,43 @@ def test_copy_to_clipboard_linux(submission_page, terminal, refresh_token):
# Neither xclip or xsel installed, this is what happens on Travis CI
text = b'Failed to copy url: External copy application not found'
window.addstr.assert_called_with(1, 1, text)
def test_submission_prompt_and_select_link(submission_page, terminal):
# A link submission should return the URL that it's pointing to
link = submission_page.prompt_and_select_link()
assert link == 'https://github.com/michael-lazar/rtv'
with mock.patch.object(submission_page, 'clear_input_queue'):
submission_page.controller.trigger('j')
# The first comment doesn't have any links in the comment body
link = submission_page.prompt_and_select_link()
data = submission_page.get_selected_item()
assert link == data['permalink']
with mock.patch.object(submission_page, 'clear_input_queue'):
submission_page.controller.trigger('j')
# The second comment has a link embedded in the comment body, and
# the user is prompted to select which link to open
with mock.patch.object(terminal, 'prompt_user_to_select_link') as prompt:
prompt.return_value = 'https://selected_link'
link = submission_page.prompt_and_select_link()
data = submission_page.get_selected_item()
assert link == prompt.return_value
embedded_url = 'http://peterdowns.com/posts/first-time-with-pypi.html'
assert prompt.call_args[0][0] == [
{'text': 'Permalink', 'href': data['permalink']},
{'text': 'Relevant tutorial', 'href': embedded_url}
]
submission_page.controller.trigger(' ')
# The comment is now hidden so there are no links to select
link = submission_page.prompt_and_select_link()
assert link is None