whenever/test/functional/output_default_defined_jobs_test.rb
2010-10-18 12:08:28 -04:00

112 lines
2.8 KiB
Ruby

require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
class OutputDefaultDefinedJobsTest < Test::Unit::TestCase
# command
context "A plain command" do
setup do
@output = Whenever.cron \
<<-file
every 2.hours do
command "blahblah"
end
file
end
should "output the command" do
assert_match /^.+ .+ .+ .+ blahblah$/, @output
end
end
# runner
context "A runner with path set" do
setup do
@output = Whenever.cron \
<<-file
set :path, '/my/path'
every 2.hours do
runner 'blahblah'
end
file
end
should "output the runner using that path" do
assert_match two_hours + %( cd /my/path && script/runner -e production 'blahblah'), @output
end
end
context "A runner that overrides the path set" do
setup do
@output = Whenever.cron \
<<-file
set :path, '/my/path'
every 2.hours do
runner "blahblah", :path => '/some/other/path'
end
file
end
should "output the runner using that path" do
assert_match two_hours + %( cd /some/other/path && script/runner -e production 'blahblah'), @output
end
end
context "A runner for a Rails 3 app" do
setup do
Whenever.stubs(:path).returns('/my/path')
File.expects(:exists?).with('/my/path/script/rails').returns(true)
@output = Whenever.cron \
<<-file
every 2.hours do
runner 'blahblah'
rails2_runner 'blahblah'
end
file
end
should "use the Rails 3 runner job by default" do
assert_match two_hours + %( cd /my/path && script/rails runner -e production 'blahblah'), @output
end
should "have the Rails 2 runner job redefined as rails2_runner" do
assert_match two_hours + %( cd /my/path && script/runner -e production 'blahblah'), @output
end
end
# rake
context "A rake command with path set" do
setup do
@output = Whenever.cron \
<<-file
set :path, '/my/path'
every 2.hours do
rake "blahblah"
end
file
end
should "output the rake command using that path" do
assert_match two_hours + ' cd /my/path && RAILS_ENV=production rake blahblah --silent', @output
end
end
context "A rake command that overrides the path set" do
setup do
@output = Whenever.cron \
<<-file
set :path, '/my/path'
every 2.hours do
rake "blahblah", :path => '/some/other/path'
end
file
end
should "output the rake command using that path" do
assert_match two_hours + ' cd /some/other/path && RAILS_ENV=production rake blahblah --silent', @output
end
end
end