diff --git a/app/scripts/directives/playTopic.coffee b/app/scripts/directives/playTopic.coffee
index d1a492fdd89..817e3f18c13 100644
--- a/app/scripts/directives/playTopic.coffee
+++ b/app/scripts/directives/playTopic.coffee
@@ -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
diff --git a/test/spec/directives/playTopic.coffee b/test/spec/directives/playTopic.coffee
new file mode 100644
index 00000000000..818d7b8eb36
--- /dev/null
+++ b/test/spec/directives/playTopic.coffee
@@ -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 .
+###
+
+'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 ''
+ 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 ''
+ 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 ''
+ 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 ''
+ element = $compile(element)(scope)
+ scope.$apply()
+ element.triggerHandler('click')
+ expect(myFrame.create).toHaveBeenCalledWith({input: ':play http://guides.neo4j.com/start-guides.html'})