From 1cff92e05166ac1eb0ad8fb46f9facff10a8b89c Mon Sep 17 00:00:00 2001 From: gliviu Date: Tue, 30 Aug 2016 09:17:33 +0300 Subject: [PATCH 1/2] Allow local files in descriptionMoreURL #762 --- lib/suggestion-list-element.coffee | 5 ++++- spec/provider-api-spec.coffee | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/suggestion-list-element.coffee b/lib/suggestion-list-element.coffee index 26756861..d90fa4a9 100644 --- a/lib/suggestion-list-element.coffee +++ b/lib/suggestion-list-element.coffee @@ -2,6 +2,7 @@ SnippetParser = require './snippet-parser' {isString} = require('./type-helpers') fuzzaldrinPlus = require 'fuzzaldrin-plus' +shell = require('electron').shell ItemTemplate = """ @@ -107,7 +108,9 @@ class SuggestionListElement extends HTMLElement @descriptionContent.textContent = item.description if item.descriptionMoreURL? and item.descriptionMoreURL.length? @descriptionMoreLink.style.display = 'inline' - @descriptionMoreLink.setAttribute('href', item.descriptionMoreURL) + @descriptionMoreLink.onclick = (event) -> + shell.openExternal(item.descriptionMoreURL) + event.stopPropagation() else @descriptionMoreLink.style.display = 'none' @descriptionMoreLink.setAttribute('href', '#') diff --git a/spec/provider-api-spec.coffee b/spec/provider-api-spec.coffee index 5147a133..3a217291 100644 --- a/spec/provider-api-spec.coffee +++ b/spec/provider-api-spec.coffee @@ -139,7 +139,7 @@ describe 'Provider API', -> expect(content).toHaveText('There be documentation') expect(moreLink).toHaveText('More..') expect(moreLink.style.display).toBe 'inline' - expect(moreLink.getAttribute('href')).toBe 'http://google.com' + expect(moreLink.onclick).toBeDefined() describe "when the filterSuggestions option is set to true", -> getSuggestions = -> From d8382dd58c2b43aa2d3cd93ca554022f5d8d202f Mon Sep 17 00:00:00 2001 From: gliviu Date: Fri, 16 Sep 2016 06:44:54 +0300 Subject: [PATCH 2/2] #762 add unit tests --- spec/provider-api-spec.coffee | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spec/provider-api-spec.coffee b/spec/provider-api-spec.coffee index 3a217291..caffe33a 100644 --- a/spec/provider-api-spec.coffee +++ b/spec/provider-api-spec.coffee @@ -1,4 +1,5 @@ {waitForAutocomplete, triggerAutocompletion} = require './spec-helper' +shell = require('electron').shell describe 'Provider API', -> [completionDelay, editor, mainModule, autocompleteManager, registration, testProvider] = [] @@ -16,6 +17,8 @@ describe 'Provider API', -> workspaceElement = atom.views.getView(atom.workspace) jasmine.attachToDOM(workspaceElement) + + spyOn(shell, "openExternal") # Activate the package waitsForPromise -> @@ -141,6 +144,28 @@ describe 'Provider API', -> expect(moreLink.style.display).toBe 'inline' expect(moreLink.onclick).toBeDefined() + it 'correctly handles More link', -> + testProvider = + scopeSelector: '.source.js, .source.coffee' + getSuggestions: (options) -> + [ + text: 'ohai', + replacementPrefix: 'o', + rightLabelHTML: 'ohai', + description: 'There be documentation' + descriptionMoreURL: 'http://google.com' + ] + registration = atom.packages.serviceHub.provide('autocomplete.provider', '2.0.0', testProvider) + + triggerAutocompletion(editor, true, 'o') + + runs -> + suggestionListView = atom.views.getView(autocompleteManager.suggestionList) + moreLink = suggestionListView.querySelector('.suggestion-description-more-link') + expect(moreLink.onclick).toBeDefined() + moreLink.onclick(stopPropagation: ->) + expect(shell.openExternal).toHaveBeenCalledWith('http://google.com') + describe "when the filterSuggestions option is set to true", -> getSuggestions = -> ({text} for {text} in autocompleteManager.suggestionList.items)