Skip to content

Instantly share code, notes, and snippets.

@rocLv
Forked from sideshowcoder/awesome_report_test.rb
Created June 12, 2016 11:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rocLv/4bc4ee63497dcf40eeaefaba21e721e0 to your computer and use it in GitHub Desktop.
Save rocLv/4bc4ee63497dcf40eeaefaba21e721e0 to your computer and use it in GitHub Desktop.
Helper for testing rake tasks in rails using minitest.
require 'test_helper'
# testing rake task app:awesome_report
# defined in file lib/tasks/app/awesome_report.rake
describe 'App::AwesomeReportTaskTest' do
it 'generates the awesomeness report' do
subject.invoke
assert File.exists?('awesomeness_report.csv')
end
end
# require this in test_helper
class RakeTaskTestCase < ActiveSupport::TestCase
before do
require 'rake'
Rake::Task.define_task :environment
load rake_task_load_path
end
private
def subject
Rake::Task[task_name]
end
def rake_task_load_path
"#{_tasks_base_path}/#{_relative_task_file_path}"
end
def task_name
_relative_task_file_path.sub('/', ':').sub(/\.rake$/, '')
end
def _relative_task_file_path
"#{self.class.name.sub(/TaskTest$/, '').underscore}.rake"
end
def _tasks_base_path
File.expand_path("#{Rails.root}/lib/tasks")
end
end
class MiniTest::Spec
register_spec_type(/.*TaskTest/, RakeTaskTestCase)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment