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['type'] = 'Comment'
data['level'] = comment.nested_level data['level'] = comment.nested_level
data['body'] = comment.body data['body'] = comment.body
data['html'] = comment.body_html or '' data['html'] = comment.body_html
data['created'] = cls.humanize_timestamp(comment.created_utc) data['created'] = cls.humanize_timestamp(comment.created_utc)
data['score'] = '{0} pts'.format( data['score'] = '{0} pts'.format(
'-' if comment.score_hidden else comment.score) '-' if comment.score_hidden else comment.score)

View File

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

View File

@@ -143,16 +143,16 @@ class SubmissionPage(Page):
If there is more than one link contained in the item, prompt the user If there is more than one link contained in the item, prompt the user
to choose which link to open. to choose which link to open.
""" """
link = self.prompt_and_select_link() data = self.get_selected_item()
if link: if data['type'] == 'Submission':
data = self.get_selected_item() link = self.prompt_and_select_link()
if data['type'] == 'Submission': if link:
self.config.history.add(link) self.config.history.add(link)
self.term.open_link(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) self.term.open_link(link)
else:
self.term.flash()
else: else:
self.term.flash() self.term.flash()

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 # Neither xclip or xsel installed, this is what happens on Travis CI
text = b'Failed to copy url: External copy application not found' text = b'Failed to copy url: External copy application not found'
window.addstr.assert_called_with(1, 1, text) 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