module Install::RSpec
Public Class Methods
included(thor)
click to toggle source
# File lib/myrails/modules/rspec.rb, line 3 def self.included(thor) thor.class_eval do desc 'add_rspec_gem', 'Add RSpec gem to Gemfile and run bundler' def add_rspec_gem insert_into_file 'Gemfile', after: "gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]\n" do <<-CODE gem 'rspec-rails', group: :test CODE end run 'bundle install' end desc 'generate_rspec', 'Run RSpec generator' def generate_rspec run 'rails g rspec:install' end desc 'setup_rspec_defaults', 'add default entris to spec/rails_helper.rb' def setup_simplecov_capybara inject_into_file "spec/rails_helper.rb", after: "require 'rspec/rails'\n" do <<-CODE require 'simplecov' SimpleCov.start Capybara.app_host = "http://localhost:3000" Capybara.server_host = "localhost" Capybara.server_port = "3000" #use Chromedriver unless ENV['NOCHROME'] Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome) end end CODE end end desc 'enable_support', 'Enable support files' def enable_support gsub_file 'spec/rails_helper.rb', "# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }", "Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }" end desc 'disable_transctional_fixtures', 'Turn off transactional fixtures option' def disable_transctional_fixtures gsub_file "spec/rails_helper.rb", "config.use_transactional_fixtures = true", "config.use_transactional_fixtures = false" end desc 'include_modules', 'Include useful modules used in feature specs' def include_modules inject_into_file 'spec/rails_helper.rb', after: "RSpec.configure do |config|\n" do <<-CODE # Can use methods like dom_id in features config.include ActionView::RecordIdentifier, type: :feature # Can use methods likke strip_tags in features config.include ActionView::Helpers::SanitizeHelper, type: :feature # Can use methods like truncate config.include ActionView::Helpers::TextHelper, type: :feature config.include(JavascriptHelper, type: :feature) config.include MailerHelper CODE end end desc 'install_rails_helper', 'Add code to rspec/rails_helper so rspec runs the way I like' def setup_rails_helper setup_simplecov_capybara enable_support disable_transctional_fixtures include_modules end desc 'setup_support_files', 'Generate RSpecsupport files' def setup_support_files Dir["#{__dir__}/../templates/spec/**/*"].each do |file| if file.include?('/support/') && !['devise'].include?(File.basename(file, '.rb')) copy_file file, "#{file.gsub(__dir__+'/../templates/', '')}" unless File.directory? file end end end desc 'setup_rspec', 'Generate rspec structure & rspec configuration that I commonly use' def setup_rspec add_rspec_gem generate_rspec setup_rails_helper setup_support_files end end end
Public Instance Methods
add_rspec_gem()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 7 def add_rspec_gem insert_into_file 'Gemfile', after: "gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]\n" do <<-CODE gem 'rspec-rails', group: :test CODE end run 'bundle install' end
disable_transctional_fixtures()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 47 def disable_transctional_fixtures gsub_file "spec/rails_helper.rb", "config.use_transactional_fixtures = true", "config.use_transactional_fixtures = false" end
enable_support()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 42 def enable_support gsub_file 'spec/rails_helper.rb', "# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }", "Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }" end
generate_rspec()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 17 def generate_rspec run 'rails g rspec:install' end
include_modules()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 53 def include_modules inject_into_file 'spec/rails_helper.rb', after: "RSpec.configure do |config|\n" do <<-CODE # Can use methods like dom_id in features config.include ActionView::RecordIdentifier, type: :feature # Can use methods likke strip_tags in features config.include ActionView::Helpers::SanitizeHelper, type: :feature # Can use methods like truncate config.include ActionView::Helpers::TextHelper, type: :feature config.include(JavascriptHelper, type: :feature) config.include MailerHelper CODE end end
setup_rails_helper()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 68 def setup_rails_helper setup_simplecov_capybara enable_support disable_transctional_fixtures include_modules end
setup_rspec()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 85 def setup_rspec add_rspec_gem generate_rspec setup_rails_helper setup_support_files end
setup_simplecov_capybara()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 22 def setup_simplecov_capybara inject_into_file "spec/rails_helper.rb", after: "require 'rspec/rails'\n" do <<-CODE require 'simplecov' SimpleCov.start Capybara.app_host = "http://localhost:3000" Capybara.server_host = "localhost" Capybara.server_port = "3000" #use Chromedriver unless ENV['NOCHROME'] Capybara.register_driver :selenium do |app| Capybara::Selenium::Driver.new(app, :browser => :chrome) end end CODE end end
setup_support_files()
click to toggle source
# File lib/myrails/modules/rspec.rb, line 76 def setup_support_files Dir["#{__dir__}/../templates/spec/**/*"].each do |file| if file.include?('/support/') && !['devise'].include?(File.basename(file, '.rb')) copy_file file, "#{file.gsub(__dir__+'/../templates/', '')}" unless File.directory? file end end end