Created
September 27, 2018 12:57
-
-
Save dreamstarter/69d4a06056d8f50c150c217891b9c245 to your computer and use it in GitHub Desktop.
Testing rake tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File: lib/tasks/bar.rake | |
class BarOutput | |
def self.banner text | |
puts '*' * 60 | |
puts " #{text}" | |
puts '*' * 60 | |
end | |
def self.puts string | |
puts string | |
end | |
end | |
namespace :foo do | |
desc "bake some bars" | |
task bake_a_bar: :environment do | |
BarOutput.banner " Step back: baking in action!" | |
BarOutput.puts Bar.new.bake | |
BarOutput.banner " All done. Thank you for your patience." | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File: lib/tasks/bar_problematic.rake | |
namespace :foo do | |
desc "bake some bars" | |
task bake_a_problematic_bar: :environment do | |
puts '*' * 60 | |
puts ' Step back: baking in action!' | |
puts '*' * 60 | |
puts Bar.new.bake | |
puts '*' * 60 | |
puts ' All done. Thank you for your patience.' | |
puts '*' * 60 | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File: spec/tasks/bar_rake_problematic_spec.rb | |
require 'spec_helper' | |
require 'rake' | |
describe 'foo namespace rake task' do | |
describe 'foo:bake_a_problematic_bar' do | |
before do | |
load File.expand_path("../../../lib/tasks/bar_problematic.rake", __FILE__) | |
Rake::Task.define_task(:environment) | |
end | |
it "should bake a bar" do | |
Bar.any_instance.should_receive :bake | |
Rake::Task["foo:bake_a_problematic_bar"].invoke | |
end | |
it "should bake a bar again" do | |
Bar.any_instance.should_receive :bake | |
Rake::Task["foo:bake_a_problematic_bar"].invoke | |
end | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File: spec/tasks/bar_rake_spec.rb | |
require 'spec_helper' | |
require 'rake' | |
describe 'foo namespace rake task' do | |
before :all do | |
Rake.application.rake_require "tasks/bar" | |
Rake::Task.define_task(:environment) | |
end | |
describe 'foo:bar' do | |
before do | |
BarOutput.stub(:banner) | |
BarOutput.stub(:puts) | |
end | |
let :run_rake_task do | |
Rake::Task["foo:bake_a_bar"].reenable | |
Rake.application.invoke_task "foo:bake_a_bar" | |
end | |
it "should bake a bar" do | |
Bar.any_instance.should_receive :bake | |
run_rake_task | |
end | |
it "should bake a bar again" do | |
Bar.any_instance.should_receive :bake | |
run_rake_task | |
end | |
it "should output two banners" do | |
BarOutput.should_receive(:banner).twice | |
run_rake_task | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment