From 54a1b53af9d12611d0d4c0ffa7ed2fdadc7f9ccb Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Mon, 9 Mar 2015 23:43:17 +0200 Subject: [PATCH] Add tests for Crono::Web --- Gemfile.lock | 3 +++ crono.gemspec | 1 + lib/crono/web.rb | 2 +- spec/web_spec.rb | 32 ++++++++++++++++++++++++++++++++ web/views/dashboard.haml | 2 +- 5 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 spec/web_spec.rb diff --git a/Gemfile.lock b/Gemfile.lock index b981a8e..67661ee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,6 +44,8 @@ GEM rack (1.6.0) rack-protection (1.5.3) rack + rack-test (0.6.3) + rack (>= 1.0) rake (10.4.2) rspec (3.2.0) rspec-core (~> 3.2.0) @@ -78,6 +80,7 @@ DEPENDENCIES byebug crono! haml + rack-test rake (~> 10.0) rspec (~> 3.0) sinatra diff --git a/crono.gemspec b/crono.gemspec index f1e1c78..70260bd 100644 --- a/crono.gemspec +++ b/crono.gemspec @@ -24,6 +24,7 @@ Gem::Specification.new do |s| s.add_development_dependency "byebug" s.add_development_dependency "sinatra" s.add_development_dependency "haml" + s.add_development_dependency "rack-test" s.files = `git ls-files`.split("\n") s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact diff --git a/lib/crono/web.rb b/lib/crono/web.rb index 35a58b3..88951ab 100644 --- a/lib/crono/web.rb +++ b/lib/crono/web.rb @@ -12,7 +12,7 @@ module Crono haml :dashboard, format: :html5 end - get '/jobs/:id' do + get '/job/:id' do @job = Crono::CronoJob.find(params[:id]) haml :job end diff --git a/spec/web_spec.rb b/spec/web_spec.rb new file mode 100644 index 0000000..c77bc23 --- /dev/null +++ b/spec/web_spec.rb @@ -0,0 +1,32 @@ +require "spec_helper" +require "rack/test" +include Rack::Test::Methods + +describe Crono::Web do + let(:app) { Crono::Web } + + before do + @test_job_id = "Perform TestJob every 5 seconds" + @test_job_log = "All runs ok" + @test_job = Crono::CronoJob.create!(job_id: @test_job_id, log: @test_job_log) + end + + after { @test_job.destroy } + + describe "/" do + it "should show all jobs" do + get '/' + expect(last_response).to be_ok + expect(last_response.body).to include @test_job_id + end + end + + describe "/job/:id" do + it "should show job log" do + get "/job/#{@test_job.id}" + expect(last_response).to be_ok + expect(last_response.body).to include @test_job_id + expect(last_response.body).to include @test_job_log + end + end +end diff --git a/web/views/dashboard.haml b/web/views/dashboard.haml index 3b4279c..7d5bfc3 100644 --- a/web/views/dashboard.haml +++ b/web/views/dashboard.haml @@ -12,6 +12,6 @@ %td= job.job_id %td= job.last_performed_at || "—" %td - %a{href: url("/jobs/#{job.id}")} + %a{href: url("/job/#{job.id}")} Log %span.glyphicon.glyphicon-menu-right