otwarchive-symphonyarchive/spec/support/task_example_group.rb
2026-03-11 22:22:11 +00:00

28 lines
973 B
Ruby

require "rake"
# https://www.eliotsykes.com/test-rails-rake-tasks-with-rspec
# https://github.com/crismali/fantaskspec#rake-testing-gotchas
module TaskExampleGroup
extend ActiveSupport::Concern
included do
let(:task_name) { self.class.top_level_description.sub(/\Arake /, "") }
subject { Rake::Task[task_name] }
# Rake tasks can be run by either "invoke" or "execute".
#
# "execute" will run the task but not its dependencies.
# "invoke" will run the task and its dependencies, but the task and its dependencies
# will be disabled unless we "reenable" them.
#
# "invoke" is how Rake behaves on the command line, so let's favor it during tests.
after do
subject.all_prerequisite_tasks.each { |prerequisite| Rake::Task[prerequisite].reenable }
subject.reenable
end
it "depends on the :environment task" do
expect(subject.all_prerequisite_tasks.map(&:name)).to include("environment")
end
end
end