summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dashing.rb10
-rw-r--r--test/app_test.rb32
2 files changed, 37 insertions, 5 deletions
diff --git a/lib/dashing.rb b/lib/dashing.rb
index 952b614..391095d 100644
--- a/lib/dashing.rb
+++ b/lib/dashing.rb
@@ -50,8 +50,12 @@ end
get '/:dashboard' do
protected!
- if File.exist? File.join(settings.views, "#{params[:dashboard]}.erb")
- erb params[:dashboard].to_sym
+ view_engine = Tilt.mappings.keys.find do |ext|
+ File.exist? File.join(settings.views, "#{params[:dashboard]}.#{ext}")
+ end
+
+ if view_engine
+ render view_engine.to_sym, params[:dashboard].to_sym
else
halt 404
end
@@ -107,7 +111,7 @@ def latest_events
end
def first_dashboard
- files = Dir[File.join(settings.views, '*.erb')].collect { |f| f.match(/(\w*).erb/)[1] }
+ files = Dir[File.join(settings.views, '*')].collect { |f| File.basename(f, '.*') }
files -= ['layout']
files.first
end
diff --git a/test/app_test.rb b/test/app_test.rb
index f6fa537..83bdb74 100644
--- a/test/app_test.rb
+++ b/test/app_test.rb
@@ -58,6 +58,15 @@ class AppTest < Dashing::Test
end
end
+ def test_redirect_to_first_dashboard_without_erb
+ with_generated_project do |dir|
+ FileUtils.touch(File.join(dir, "dashboards/htmltest.html"))
+ get '/'
+ assert_equal 302, last_response.status
+ assert_equal 'http://example.org/htmltest', last_response.location
+ end
+ end
+
def test_get_dashboard
with_generated_project do
get '/sampletv'
@@ -65,7 +74,26 @@ class AppTest < Dashing::Test
assert_include last_response.body, 'class="gridster"'
end
end
-
+
+ begin
+ require 'haml'
+ def test_get_haml
+ with_generated_project do |dir|
+ File.write(File.join(dir, "dashboards/hamltest.haml"), <<-HAML)
+.gridster
+ %ul
+ %li{data: {col: 1, row: 1, sizex: 1, sizey: 1}}
+ %div{data: {view: "Clock"}}
+ %i.icon-time.icon-background
+HAML
+ get '/hamltest'
+ assert_equal 200, last_response.status
+ assert_include last_response.body, "class='gridster'"
+ end
+ end
+ rescue LoadError
+ end
+
def test_get_nonexistent_dashboard
with_generated_project do
get '/nodashboard'
@@ -88,7 +116,7 @@ class AppTest < Dashing::Test
Sinatra::Application.settings.views = File.join(dir, 'new_project/dashboards')
Sinatra::Application.settings.root = File.join(dir, 'new_project')
- yield
+ yield Sinatra::Application.settings.root
end
end