require 'spec_helper' module RailsBestPractices module Reviews describe DryBundlerInCapistranoReview do let(:runner) { Core::Runner.new(reviews: DryBundlerInCapistranoReview.new) } it 'should dry bundler in capistrno' do content = <<-EOF namespace :bundler do task :create_symlink, roles: :app do shared_dir = File.join(shared_path, 'bundle') release_dir = File.join(current_release, '.bundle') run("mkdir -p \#{shared_dir} && ln -s \#{shared_dir} \#{release_dir}") end task :bundle_new_release, roles: :app do bundler.create_symlink run "cd \#{release_path} && bundle install --without development test" end end after 'deploy:update_code', 'bundler:bundle_new_release' EOF runner.review('config/deploy.rb', content) expect(runner.errors.size).to eq(1) expect(runner.errors[0].to_s).to eq('config/deploy.rb:1 - dry bundler in capistrano') end it 'should not dry bundler in capistrano' do content = <<-EOF require 'bundler/capistrano' EOF runner.review('config/deploy.rb', content) expect(runner.errors.size).to eq(0) end it 'should not check ignored files' do runner = Core::Runner.new(reviews: DryBundlerInCapistranoReview.new(ignored_files: /deploy\.rb/)) content = <<-EOF namespace :bundler do task :create_symlink, roles: :app do shared_dir = File.join(shared_path, 'bundle') release_dir = File.join(current_release, '.bundle') run("mkdir -p \#{shared_dir} && ln -s \#{shared_dir} \#{release_dir}") end task :bundle_new_release, roles: :app do bundler.create_symlink run "cd \#{release_path} && bundle install --without development test" end end after 'deploy:update_code', 'bundler:bundle_new_release' EOF runner.review('config/deploy.rb', content) expect(runner.errors.size).to eq(0) end end end end