Skip to content

Commit

Permalink
Merge pull request #259 from oskarhane/1.0-keep-remote-guide-urls
Browse files Browse the repository at this point in the history
Don't touch url:s on play-topics for remote guides
  • Loading branch information
eve-bright authored Oct 4, 2016
2 parents 9e334f0 + 418bd5c commit a04c652
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 2 deletions.
5 changes: 3 additions & 2 deletions app/scripts/directives/playTopic.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ angular.module('neo4jApp.directives')
if topic
element.on 'click', (e) ->
e.preventDefault()

topic = topic.toLowerCase().trim().replace('-', ' ')
topic = topic.trim()
if not /^https?:\/\//i.test(topic) # Lowercase and remove '-' from all local links
topic = topic.toLowerCase().replace('-', ' ')
Frame.create(input: "#{Settings.cmdchar}#{command} #{topic}")

$rootScope.$apply() unless $rootScope.$$phase
Expand Down
67 changes: 67 additions & 0 deletions test/spec/directives/playTopic.coffee
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
###!
Copyright (c) 2002-2016 "Neo Technology,"
Network Engine for Objects in Lund AB [http://neotechnology.com]
This file is part of Neo4j.
Neo4j is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
###

'use strict'

describe 'Directive: playTopic', () ->
myFrame = {
create: ->
}
beforeEach module 'neo4jApp.directives'
beforeEach module 'neo4jApp.settings'
beforeEach module 'LocalStorageModule'
beforeEach(module ($provide) ->
$provide.value('Frame', myFrame)
return
)
beforeEach ->
spyOn(myFrame, 'create')

it 'should lowercase local guides', inject ($rootScope, $compile) ->
scope = $rootScope.$new()
element = angular.element '<a play-topic="Cypher"></a>'
element = $compile(element)(scope)
scope.$apply()
element.triggerHandler('click')
expect(myFrame.create).toHaveBeenCalledWith({input: ':play cypher'})

it 'should remove hyphens from local guides', inject ($rootScope, $compile) ->
scope = $rootScope.$new()
element = angular.element '<a play-topic="movie-guide"></a>'
element = $compile(element)(scope)
scope.$apply()
element.triggerHandler('click')
expect(myFrame.create).toHaveBeenCalledWith({input: ':play movie guide'})

it 'should keep casing on remote guide urls', inject ($rootScope, $compile) ->
scope = $rootScope.$new()
element = angular.element '<a play-topic="http://guides.neo4j.com/Start.html"></a>'
element = $compile(element)(scope)
scope.$apply()
element.triggerHandler('click')
expect(myFrame.create).toHaveBeenCalledWith({input: ':play http://guides.neo4j.com/Start.html'})

it 'should keep hyphens on remote guide urls', inject ($rootScope, $compile) ->
scope = $rootScope.$new()
element = angular.element '<a play-topic="http://guides.neo4j.com/start-guides.html"></a>'
element = $compile(element)(scope)
scope.$apply()
element.triggerHandler('click')
expect(myFrame.create).toHaveBeenCalledWith({input: ':play http://guides.neo4j.com/start-guides.html'})

0 comments on commit a04c652

Please sign in to comment.