2010-10-15 10:46:31 -04:00
require 'generators/generators_test_helper'
2013-06-30 17:02:19 -04:00
require 'rails/generators/rails/plugin/plugin_generator'
2012-09-21 17:57:15 -04:00
require 'generators/shared_generator_tests'
2014-07-19 16:35:12 -04:00
require 'mocha/setup' # FIXME: stop using mocha
2010-10-15 10:46:31 -04:00
DEFAULT_PLUGIN_FILES = %w(
. gitignore
Gemfile
Rakefile
2011-07-29 13:35:40 -04:00
README . rdoc
2010-10-15 10:46:31 -04:00
bukkits . gemspec
MIT - LICENSE
lib
lib / bukkits . rb
2010-11-02 10:44:07 -04:00
lib / tasks / bukkits_tasks . rake
2011-07-29 13:35:40 -04:00
lib / bukkits / version . rb
2010-10-15 10:46:31 -04:00
test / bukkits_test . rb
test / test_helper . rb
test / dummy
)
2013-06-30 17:02:19 -04:00
class PluginGeneratorTest < Rails :: Generators :: TestCase
2010-10-15 10:46:31 -04:00
include GeneratorsTestHelper
destination File . join ( Rails . root , " tmp/bukkits " )
arguments [ destination_root ]
2011-05-06 18:11:13 -04:00
# brings setup, teardown, and some tests
2010-10-20 18:55:08 -04:00
include SharedGeneratorTests
2010-10-15 10:46:31 -04:00
def test_invalid_plugin_name_raises_an_error
2014-01-05 14:41:16 -05:00
content = capture ( :stderr ) { run_generator [ File . join ( destination_root , " my_plugin-31fr-extension " ) ] }
assert_equal " Invalid plugin name my_plugin-31fr-extension. Please give a name which does not contain a namespace starting with numeric characters. \n " , content
2012-01-30 08:47:05 -05:00
content = capture ( :stderr ) { run_generator [ File . join ( destination_root , " things4.3 " ) ] }
2014-01-05 14:41:16 -05:00
assert_equal " Invalid plugin name things4.3. Please give a name which uses only alphabetic, numeric, \" _ \" or \" - \" characters. \n " , content
2012-05-01 22:29:56 -04:00
2012-01-30 08:47:05 -05:00
content = capture ( :stderr ) { run_generator [ File . join ( destination_root , " 43things " ) ] }
assert_equal " Invalid plugin name 43things. Please give a name which does not start with numbers. \n " , content
2014-01-05 15:48:05 -05:00
content = capture ( :stderr ) { run_generator [ File . join ( destination_root , " plugin " ) ] }
assert_equal " Invalid plugin name plugin. Please give a name which does not match one of the reserved rails words. \n " , content
content = capture ( :stderr ) { run_generator [ File . join ( destination_root , " Digest " ) ] }
assert_equal " Invalid plugin name Digest, constant Digest is already in use. Please choose another plugin name. \n " , content
2010-10-15 10:46:31 -04:00
end
2014-01-05 14:41:16 -05:00
def test_correct_file_in_lib_folder_of_hyphenated_plugin_name
run_generator [ File . join ( destination_root , " hyphenated-name " ) ]
assert_no_file " hyphenated-name/lib/hyphenated-name.rb "
assert_no_file " hyphenated-name/lib/hyphenated_name.rb "
assert_file " hyphenated-name/lib/hyphenated/name.rb " , / module Hyphenated \ n module Name \ n # Your code goes here... \ n end \ nend /
end
def test_correct_file_in_lib_folder_of_camelcase_plugin_name
2011-11-19 12:03:44 -05:00
run_generator [ File . join ( destination_root , " CamelCasedName " ) ]
assert_no_file " CamelCasedName/lib/CamelCasedName.rb "
assert_file " CamelCasedName/lib/camel_cased_name.rb " , / module CamelCasedName /
end
2011-01-14 20:32:40 -05:00
def test_generating_without_options
2010-10-15 10:46:31 -04:00
run_generator
2011-01-15 01:13:43 -05:00
assert_file " README.rdoc " , / Bukkits /
2011-01-14 20:32:40 -05:00
assert_no_file " config/routes.rb "
2014-09-16 22:42:04 -04:00
assert_file " test/test_helper.rb " do | content |
assert_match ( / require.+test \/ dummy \/ config \/ environment / , content )
assert_match ( / ActiveRecord::Migrator \ .migrations_paths.+test \/ dummy \/ db \/ migrate / , content )
2014-12-01 12:31:06 -05:00
assert_match ( / Minitest \ .backtrace_filter = Minitest::BacktraceFilter \ .new / , content )
2014-09-16 22:42:04 -04:00
end
2010-10-15 10:46:31 -04:00
assert_file " test/bukkits_test.rb " , / assert_kind_of Module, Bukkits /
end
2010-10-26 16:22:15 -04:00
def test_generating_test_files_in_full_mode
run_generator [ destination_root , " --full " ]
assert_directory " test/integration/ "
2010-11-02 09:05:11 -04:00
assert_file " test/integration/navigation_test.rb " , / ActionDispatch::IntegrationTest /
2010-10-26 16:22:15 -04:00
end
2014-04-08 14:57:12 -04:00
def test_inclusion_of_a_debugger
2013-12-06 10:48:28 -05:00
run_generator [ destination_root , '--full' ]
2014-12-22 15:43:58 -05:00
if defined? ( JRUBY_VERSION ) || RUBY_ENGINE == " rbx "
2013-12-06 10:48:28 -05:00
assert_file " Gemfile " do | content |
2014-04-08 14:57:12 -04:00
assert_no_match ( / byebug / , content )
2013-12-06 10:48:28 -05:00
end
2014-04-08 14:57:12 -04:00
else
assert_file " Gemfile " , / # gem 'byebug' /
2013-12-06 10:48:28 -05:00
end
end
2012-06-08 08:59:23 -04:00
def test_generating_test_files_in_full_mode_without_unit_test_files
run_generator [ destination_root , " -T " , " --full " ]
assert_no_directory " test/integration/ "
assert_no_file " test "
2013-02-28 14:09:04 -05:00
assert_file " Rakefile " do | contents |
assert_no_match ( / APP_RAKEFILE / , contents )
end
2012-06-08 08:59:23 -04:00
end
2012-11-07 14:54:49 -05:00
def test_generating_adds_dummy_app_rake_tasks_without_unit_test_files
run_generator [ destination_root , " -T " , " --mountable " , '--dummy-path' , 'my_dummy_app' ]
2013-02-28 14:09:04 -05:00
assert_file " Rakefile " , / APP_RAKEFILE /
end
def test_generating_adds_dummy_app_without_javascript_and_assets_deps
2014-07-30 22:13:59 -04:00
run_generator
2012-11-07 14:54:49 -05:00
2013-02-28 14:09:04 -05:00
assert_file " test/dummy/app/assets/stylesheets/application.css "
assert_file " test/dummy/app/assets/javascripts/application.js " do | contents |
assert_no_match ( / jquery / , contents )
end
2012-11-07 14:54:49 -05:00
end
2010-10-23 14:56:02 -04:00
def test_ensure_that_plugin_options_are_not_passed_to_app_generator
FileUtils . cd ( Rails . root )
2011-03-12 19:01:12 -05:00
assert_no_match ( / It works from file!.*It works_from_file / , run_generator ( [ destination_root , " -m " , " lib/template.rb " ] ) )
2010-10-19 18:47:13 -04:00
end
2010-11-02 10:13:10 -04:00
def test_ensure_that_test_dummy_can_be_generated_from_a_template
FileUtils . cd ( Rails . root )
2015-01-27 17:59:48 -05:00
run_generator ( [ destination_root , " -m " , " lib/create_test_dummy_template.rb " , " --skip-test " ] )
2010-11-02 10:13:10 -04:00
assert_file " spec/dummy "
assert_no_file " test "
end
2011-06-13 04:34:09 -04:00
def test_database_entry_is_generated_for_sqlite3_by_default_in_full_mode
2010-11-02 09:23:45 -04:00
run_generator ( [ destination_root , " --full " ] )
assert_file " test/dummy/config/database.yml " , / sqlite /
2011-07-28 11:44:29 -04:00
assert_file " bukkits.gemspec " , / sqlite3 /
2010-11-02 09:23:45 -04:00
end
def test_config_another_database
run_generator ( [ destination_root , " -d " , " mysql " , " --full " ] )
assert_file " test/dummy/config/database.yml " , / mysql /
2011-07-28 11:44:29 -04:00
assert_file " bukkits.gemspec " , / mysql /
2010-11-02 09:23:45 -04:00
end
2012-06-08 13:09:18 -04:00
def test_dont_generate_development_dependency
run_generator [ destination_root , " --skip-active-record " ]
assert_file " bukkits.gemspec " do | contents |
assert_no_match ( / s.add_development_dependency "sqlite3" / , contents )
end
end
2014-12-31 08:10:26 -05:00
def test_app_generator_without_skips
run_generator
assert_file " test/dummy/config/application.rb " , / \ s+require \ s+["']rails \/ all["'] /
assert_file " test/dummy/config/environments/development.rb " do | content |
assert_match ( / config \ .action_mailer \ .raise_delivery_errors = false / , content )
end
assert_file " test/dummy/config/environments/test.rb " do | content |
assert_match ( / config \ .action_mailer \ .delivery_method = :test / , content )
end
assert_file " test/dummy/config/environments/production.rb " do | content |
assert_match ( / # config \ .action_mailer \ .raise_delivery_errors = false / , content )
end
end
2010-11-02 09:23:45 -04:00
def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given
run_generator [ destination_root , " --skip-active-record " ]
assert_file " test/dummy/config/application.rb " , / # \ s+require \ s+["']active_record \/ railtie["'] /
end
2010-10-26 16:22:15 -04:00
def test_ensure_that_skip_active_record_option_is_passed_to_app_generator
run_generator [ destination_root , " --skip_active_record " ]
assert_no_file " test/dummy/config/database.yml "
2013-02-28 14:09:04 -05:00
assert_file " test/test_helper.rb " do | contents |
2013-04-03 13:19:30 -04:00
assert_no_match ( / ActiveRecord / , contents )
2013-02-28 14:09:04 -05:00
end
2010-10-26 16:22:15 -04:00
end
2014-12-31 08:10:26 -05:00
def test_action_mailer_is_removed_from_frameworks_if_skip_action_mailer_is_given
run_generator [ destination_root , " --skip-action-mailer " ]
assert_file " test/dummy/config/application.rb " , / # \ s+require \ s+["']action_mailer \/ railtie["'] /
assert_file " test/dummy/config/environments/development.rb " do | content |
assert_no_match ( / config \ .action_mailer / , content )
end
assert_file " test/dummy/config/environments/test.rb " do | content |
assert_no_match ( / config \ .action_mailer / , content )
end
assert_file " test/dummy/config/environments/production.rb " do | content |
assert_no_match ( / config \ .action_mailer / , content )
end
end
2010-10-26 18:16:57 -04:00
def test_ensure_that_database_option_is_passed_to_app_generator
run_generator [ destination_root , " --database " , " postgresql " ]
assert_file " test/dummy/config/database.yml " , / postgres /
end
2011-05-17 18:29:20 -04:00
def test_generation_runs_bundle_install_with_full_and_mountable
2012-06-25 00:57:11 -04:00
result = run_generator [ destination_root , " --mountable " , " --full " , " --dev " ]
2015-02-10 16:22:53 -05:00
assert_match ( / run bundle install / , result )
assert $? . success? , " Command failed: #{ result } "
2012-06-25 00:57:11 -04:00
assert_file " #{ destination_root } /Gemfile.lock " do | contents |
assert_match ( / bukkits / , contents )
end
2011-05-17 18:29:20 -04:00
end
2010-12-15 06:20:20 -05:00
def test_skipping_javascripts_without_mountable_option
run_generator
2011-06-12 21:29:14 -04:00
assert_no_file " app/assets/javascripts/bukkits/application.js "
2010-12-15 06:20:20 -05:00
end
def test_javascripts_generation
run_generator [ destination_root , " --mountable " ]
2011-06-12 21:29:14 -04:00
assert_file " app/assets/javascripts/bukkits/application.js "
2010-12-15 06:20:20 -05:00
end
def test_skip_javascripts
run_generator [ destination_root , " --skip-javascript " , " --mountable " ]
2011-06-12 21:29:14 -04:00
assert_no_file " app/assets/javascripts/bukkits/application.js "
2010-12-15 06:20:20 -05:00
end
2010-10-19 19:05:34 -04:00
def test_template_from_dir_pwd
FileUtils . cd ( Rails . root )
2011-03-12 19:01:12 -05:00
assert_match ( / It works from file! / , run_generator ( [ destination_root , " -m " , " lib/template.rb " ] ) )
2010-10-19 19:05:34 -04:00
end
2011-05-12 18:43:43 -04:00
def test_ensure_that_tests_work
2010-10-20 15:21:37 -04:00
run_generator
FileUtils . cd destination_root
2011-05-12 19:41:52 -04:00
quietly { system 'bundle install' }
2014-03-14 12:33:42 -04:00
assert_match ( / 1 runs, 1 assertions, 0 failures, 0 errors / , ` bundle exec rake test 2>&1 ` )
2010-10-20 15:21:37 -04:00
end
2010-10-26 16:22:15 -04:00
def test_ensure_that_tests_works_in_full_mode
2010-12-04 11:12:57 -05:00
run_generator [ destination_root , " --full " , " --skip_active_record " ]
2010-10-26 16:22:15 -04:00
FileUtils . cd destination_root
2011-05-12 19:41:52 -04:00
quietly { system 'bundle install' }
2014-03-14 12:33:42 -04:00
assert_match ( / 1 runs, 1 assertions, 0 failures, 0 errors / , ` bundle exec rake test 2>&1 ` )
2010-10-26 16:22:15 -04:00
end
2011-07-04 16:48:15 -04:00
def test_ensure_that_migration_tasks_work_with_mountable_option
run_generator [ destination_root , " --mountable " ]
FileUtils . cd destination_root
quietly { system 'bundle install' }
2014-03-14 12:33:42 -04:00
output = ` bundle exec rake db:migrate 2>&1 `
assert $? . success? , " Command failed: #{ output } "
2011-07-04 16:48:15 -04:00
end
2010-10-26 16:22:15 -04:00
def test_creating_engine_in_full_mode
run_generator [ destination_root , " --full " ]
2011-06-12 21:29:14 -04:00
assert_file " app/assets/javascripts/bukkits "
assert_file " app/assets/stylesheets/bukkits "
assert_file " app/assets/images/bukkits "
2011-04-17 04:23:07 -04:00
assert_file " app/models "
assert_file " app/controllers "
assert_file " app/views "
assert_file " app/helpers "
2011-07-29 12:36:36 -04:00
assert_file " app/mailers "
2013-01-06 18:13:47 -05:00
assert_file " bin/rails "
2011-01-14 20:32:40 -05:00
assert_file " config/routes.rb " , / Rails.application.routes.draw do /
2011-05-26 06:06:17 -04:00
assert_file " lib/bukkits/engine.rb " , / module Bukkits \ n class Engine < ::Rails::Engine \ n end \ nend /
2010-10-26 16:22:15 -04:00
assert_file " lib/bukkits.rb " , / require "bukkits \/ engine" /
end
2014-01-05 14:41:16 -05:00
def test_creating_engine_with_hyphenated_name_in_full_mode
run_generator [ File . join ( destination_root , " hyphenated-name " ) , " --full " ]
assert_file " hyphenated-name/app/assets/javascripts/hyphenated/name "
assert_file " hyphenated-name/app/assets/stylesheets/hyphenated/name "
assert_file " hyphenated-name/app/assets/images/hyphenated/name "
assert_file " hyphenated-name/app/models "
assert_file " hyphenated-name/app/controllers "
assert_file " hyphenated-name/app/views "
assert_file " hyphenated-name/app/helpers "
assert_file " hyphenated-name/app/mailers "
assert_file " hyphenated-name/bin/rails "
assert_file " hyphenated-name/config/routes.rb " , / Rails.application.routes.draw do /
assert_file " hyphenated-name/lib/hyphenated/name/engine.rb " , / module Hyphenated \ n module Name \ n class Engine < ::Rails::Engine \ n end \ n end \ nend /
assert_file " hyphenated-name/lib/hyphenated/name.rb " , / require "hyphenated \/ name \/ engine" /
assert_file " hyphenated-name/bin/rails " , / \ . \ . \/ \ . \ . \/ lib \/ hyphenated \/ name \/ engine /
end
def test_creating_engine_with_hyphenated_and_underscored_name_in_full_mode
run_generator [ File . join ( destination_root , " my_hyphenated-name " ) , " --full " ]
assert_file " my_hyphenated-name/app/assets/javascripts/my_hyphenated/name "
assert_file " my_hyphenated-name/app/assets/stylesheets/my_hyphenated/name "
assert_file " my_hyphenated-name/app/assets/images/my_hyphenated/name "
assert_file " my_hyphenated-name/app/models "
assert_file " my_hyphenated-name/app/controllers "
assert_file " my_hyphenated-name/app/views "
assert_file " my_hyphenated-name/app/helpers "
assert_file " my_hyphenated-name/app/mailers "
assert_file " my_hyphenated-name/bin/rails "
assert_file " my_hyphenated-name/config/routes.rb " , / Rails.application.routes.draw do /
assert_file " my_hyphenated-name/lib/my_hyphenated/name/engine.rb " , / module MyHyphenated \ n module Name \ n class Engine < ::Rails::Engine \ n end \ n end \ nend /
assert_file " my_hyphenated-name/lib/my_hyphenated/name.rb " , / require "my_hyphenated \/ name \/ engine" /
assert_file " my_hyphenated-name/bin/rails " , / \ . \ . \/ \ . \ . \/ lib \/ my_hyphenated \/ name \/ engine /
end
2010-10-27 21:00:42 -04:00
def test_being_quiet_while_creating_dummy_application
2011-03-12 19:01:12 -05:00
assert_no_match ( / create \ s+config \/ application.rb / , run_generator )
2010-10-27 21:00:42 -04:00
end
2010-11-02 11:34:07 -04:00
def test_create_mountable_application_with_mountable_option
run_generator [ destination_root , " --mountable " ]
2011-06-12 21:29:14 -04:00
assert_file " app/assets/javascripts/bukkits "
assert_file " app/assets/stylesheets/bukkits "
assert_file " app/assets/images/bukkits "
2010-11-02 11:34:07 -04:00
assert_file " config/routes.rb " , / Bukkits::Engine.routes.draw do /
assert_file " lib/bukkits/engine.rb " , / isolate_namespace Bukkits /
assert_file " test/dummy/config/routes.rb " , / mount Bukkits::Engine => " \/ bukkits" /
2010-11-16 10:41:37 -05:00
assert_file " app/controllers/bukkits/application_controller.rb " , / module Bukkits \ n class ApplicationController < ActionController::Base /
2010-11-02 11:34:07 -04:00
assert_file " app/helpers/bukkits/application_helper.rb " , / module Bukkits \ n module ApplicationHelper /
2011-06-12 21:29:14 -04:00
assert_file " app/views/layouts/bukkits/application.html.erb " do | contents |
assert_match " <title>Bukkits</title> " , contents
2011-09-03 22:53:13 -04:00
assert_match ( / stylesheet_link_tag \ s+['"]bukkits \/ application['"] / , contents )
assert_match ( / javascript_include_tag \ s+['"]bukkits \/ application['"] / , contents )
2011-06-12 21:29:14 -04:00
end
2014-10-12 17:22:49 -04:00
assert_file " test/test_helper.rb " do | content |
assert_match ( / ActiveRecord::Migrator \ .migrations_paths.+ \ . \ . \/ test \/ dummy \/ db \/ migrate / , content )
assert_match ( / ActiveRecord::Migrator \ .migrations_paths.+<<.+ \ . \ . \/ db \/ migrate / , content )
end
2010-11-02 11:34:07 -04:00
end
2014-01-05 14:41:16 -05:00
def test_create_mountable_application_with_mountable_option_and_hypenated_name
run_generator [ File . join ( destination_root , " hyphenated-name " ) , " --mountable " ]
assert_file " hyphenated-name/app/assets/javascripts/hyphenated/name "
assert_file " hyphenated-name/app/assets/stylesheets/hyphenated/name "
assert_file " hyphenated-name/app/assets/images/hyphenated/name "
assert_file " hyphenated-name/config/routes.rb " , / Hyphenated::Name::Engine.routes.draw do /
assert_file " hyphenated-name/lib/hyphenated/name/version.rb " , / module Hyphenated \ n module Name \ n VERSION = "0.0.1" \ n end \ nend /
2015-01-30 18:42:51 -05:00
assert_file " hyphenated-name/lib/hyphenated/name/engine.rb " , / module Hyphenated \ n module Name \ n class Engine < ::Rails::Engine \ n isolate_namespace Hyphenated::Name \ n end \ n end \ nend /
2014-01-05 14:41:16 -05:00
assert_file " hyphenated-name/lib/hyphenated/name.rb " , / require "hyphenated \/ name \/ engine" /
assert_file " hyphenated-name/test/dummy/config/routes.rb " , / mount Hyphenated::Name::Engine => " \/ hyphenated-name" /
assert_file " hyphenated-name/app/controllers/hyphenated/name/application_controller.rb " , / module Hyphenated \ n module Name \ n class ApplicationController < ActionController::Base \ n end \ n end \ nend /
assert_file " hyphenated-name/app/helpers/hyphenated/name/application_helper.rb " , / module Hyphenated \ n module Name \ n module ApplicationHelper \ n end \ n end \ nend /
assert_file " hyphenated-name/app/views/layouts/hyphenated/name/application.html.erb " do | contents |
assert_match " <title>Hyphenated name</title> " , contents
assert_match ( / stylesheet_link_tag \ s+['"]hyphenated \/ name \/ application['"] / , contents )
assert_match ( / javascript_include_tag \ s+['"]hyphenated \/ name \/ application['"] / , contents )
end
end
def test_create_mountable_application_with_mountable_option_and_hypenated_and_underscored_name
run_generator [ File . join ( destination_root , " my_hyphenated-name " ) , " --mountable " ]
assert_file " my_hyphenated-name/app/assets/javascripts/my_hyphenated/name "
assert_file " my_hyphenated-name/app/assets/stylesheets/my_hyphenated/name "
assert_file " my_hyphenated-name/app/assets/images/my_hyphenated/name "
2015-01-30 18:42:51 -05:00
assert_file " my_hyphenated-name/config/routes.rb " , / MyHyphenated::Name::Engine.routes.draw do /
2014-01-05 14:41:16 -05:00
assert_file " my_hyphenated-name/lib/my_hyphenated/name/version.rb " , / module MyHyphenated \ n module Name \ n VERSION = "0.0.1" \ n end \ nend /
2015-01-30 18:42:51 -05:00
assert_file " my_hyphenated-name/lib/my_hyphenated/name/engine.rb " , / module MyHyphenated \ n module Name \ n class Engine < ::Rails::Engine \ n isolate_namespace MyHyphenated::Name \ n end \ n end \ nend /
2014-01-05 14:41:16 -05:00
assert_file " my_hyphenated-name/lib/my_hyphenated/name.rb " , / require "my_hyphenated \/ name \/ engine" /
2015-01-30 18:42:51 -05:00
assert_file " my_hyphenated-name/test/dummy/config/routes.rb " , / mount MyHyphenated::Name::Engine => " \/ my_hyphenated-name" /
2014-01-05 14:41:16 -05:00
assert_file " my_hyphenated-name/app/controllers/my_hyphenated/name/application_controller.rb " , / module MyHyphenated \ n module Name \ n class ApplicationController < ActionController::Base \ n end \ n end \ nend /
assert_file " my_hyphenated-name/app/helpers/my_hyphenated/name/application_helper.rb " , / module MyHyphenated \ n module Name \ n module ApplicationHelper \ n end \ n end \ nend /
assert_file " my_hyphenated-name/app/views/layouts/my_hyphenated/name/application.html.erb " do | contents |
assert_match " <title>My hyphenated name</title> " , contents
assert_match ( / stylesheet_link_tag \ s+['"]my_hyphenated \/ name \/ application['"] / , contents )
assert_match ( / javascript_include_tag \ s+['"]my_hyphenated \/ name \/ application['"] / , contents )
end
end
def test_create_mountable_application_with_mountable_option_and_multiple_hypenates_in_name
run_generator [ File . join ( destination_root , " deep-hyphenated-name " ) , " --mountable " ]
assert_file " deep-hyphenated-name/app/assets/javascripts/deep/hyphenated/name "
assert_file " deep-hyphenated-name/app/assets/stylesheets/deep/hyphenated/name "
assert_file " deep-hyphenated-name/app/assets/images/deep/hyphenated/name "
2015-01-30 18:42:51 -05:00
assert_file " deep-hyphenated-name/config/routes.rb " , / Deep::Hyphenated::Name::Engine.routes.draw do /
2014-01-05 14:41:16 -05:00
assert_file " deep-hyphenated-name/lib/deep/hyphenated/name/version.rb " , / module Deep \ n module Hyphenated \ n module Name \ n VERSION = "0.0.1" \ n end \ n end \ nend /
2015-01-30 18:42:51 -05:00
assert_file " deep-hyphenated-name/lib/deep/hyphenated/name/engine.rb " , / module Deep \ n module Hyphenated \ n module Name \ n class Engine < ::Rails::Engine \ n isolate_namespace Deep::Hyphenated::Name \ n end \ n end \ n end \ nend /
2014-01-05 14:41:16 -05:00
assert_file " deep-hyphenated-name/lib/deep/hyphenated/name.rb " , / require "deep \/ hyphenated \/ name \/ engine" /
2015-01-30 18:42:51 -05:00
assert_file " deep-hyphenated-name/test/dummy/config/routes.rb " , / mount Deep::Hyphenated::Name::Engine => " \/ deep-hyphenated-name" /
2014-01-05 14:41:16 -05:00
assert_file " deep-hyphenated-name/app/controllers/deep/hyphenated/name/application_controller.rb " , / module Deep \ n module Hyphenated \ n module Name \ n class ApplicationController < ActionController::Base \ n end \ n end \ n end \ nend /
assert_file " deep-hyphenated-name/app/helpers/deep/hyphenated/name/application_helper.rb " , / module Deep \ n module Hyphenated \ n module Name \ n module ApplicationHelper \ n end \ n end \ n end \ nend /
assert_file " deep-hyphenated-name/app/views/layouts/deep/hyphenated/name/application.html.erb " do | contents |
assert_match " <title>Deep hyphenated name</title> " , contents
assert_match ( / stylesheet_link_tag \ s+['"]deep \/ hyphenated \/ name \/ application['"] / , contents )
assert_match ( / javascript_include_tag \ s+['"]deep \/ hyphenated \/ name \/ application['"] / , contents )
end
end
2011-05-24 03:30:23 -04:00
def test_creating_gemspec
2011-05-24 06:37:57 -04:00
run_generator
2011-07-28 11:44:29 -04:00
assert_file " bukkits.gemspec " , / s.name \ s+= "bukkits" /
2012-05-01 22:29:56 -04:00
assert_file " bukkits.gemspec " , / s.files = Dir \ [" \ {app,config,db,lib \ } \/ \ * \ * \/ \ *", "MIT-LICENSE", "Rakefile", "README \ .rdoc" \ ] /
2011-05-25 09:03:07 -04:00
assert_file " bukkits.gemspec " , / s.test_files = Dir \ ["test \/ \ * \ * \/ \ *" \ ] /
2011-07-28 11:44:29 -04:00
assert_file " bukkits.gemspec " , / s.version \ s+ = Bukkits::VERSION /
2011-05-24 03:30:23 -04:00
end
2011-05-27 02:25:56 -04:00
def test_usage_of_engine_commands
2011-05-27 07:44:10 -04:00
run_generator [ destination_root , " --full " ]
2013-01-06 18:13:47 -05:00
assert_file " bin/rails " , / ENGINE_PATH = File.expand_path \ ('.. \/ .. \/ lib \/ bukkits \/ engine', __FILE__ \ ) /
assert_file " bin/rails " , / ENGINE_ROOT = File.expand_path \ ('.. \/ ..', __FILE__ \ ) /
assert_file " bin/rails " , / require 'rails \/ all' /
assert_file " bin/rails " , / require 'rails \/ engine \/ commands' /
2011-05-27 02:25:56 -04:00
end
2011-05-24 07:57:36 -04:00
def test_shebang
2011-05-27 07:44:10 -04:00
run_generator [ destination_root , " --full " ]
2013-01-06 18:13:47 -05:00
assert_file " bin/rails " , / # ! \/ usr \/ bin \/ env ruby /
2011-05-24 07:57:36 -04:00
end
2010-11-08 16:43:51 -05:00
def test_passing_dummy_path_as_a_parameter
run_generator [ destination_root , " --dummy_path " , " spec/dummy " ]
assert_file " spec/dummy "
assert_file " spec/dummy/config/application.rb "
assert_no_file " test/dummy "
2014-09-16 22:42:04 -04:00
assert_file " test/test_helper.rb " do | content |
assert_match ( / require.+spec \/ dummy \/ config \/ environment / , content )
assert_match ( / ActiveRecord::Migrator \ .migrations_paths.+spec \/ dummy \/ db \/ migrate / , content )
end
2010-11-08 16:43:51 -05:00
end
2011-05-25 09:03:42 -04:00
2012-05-10 17:11:59 -04:00
def test_creating_dummy_application_with_different_name
run_generator [ destination_root , " --dummy_path " , " spec/fake " ]
assert_file " spec/fake "
assert_file " spec/fake/config/application.rb "
assert_no_file " test/dummy "
2014-09-16 22:42:04 -04:00
assert_file " test/test_helper.rb " do | content |
assert_match ( / require.+spec \/ fake \/ config \/ environment / , content )
assert_match ( / ActiveRecord::Migrator \ .migrations_paths.+spec \/ fake \/ db \/ migrate / , content )
end
2012-05-10 17:11:59 -04:00
end
2011-05-24 07:18:27 -04:00
def test_creating_dummy_without_tests_but_with_dummy_path
2015-01-27 17:59:48 -05:00
run_generator [ destination_root , " --dummy_path " , " spec/dummy " , " --skip-test " ]
2011-05-24 07:18:27 -04:00
assert_file " spec/dummy "
assert_file " spec/dummy/config/application.rb "
assert_no_file " test "
2014-09-13 21:17:54 -04:00
assert_no_file " test/test_helper.rb "
2012-07-03 12:58:17 -04:00
assert_file '.gitignore' do | contents |
assert_match ( / spec \/ dummy / , contents )
end
2011-05-24 07:18:27 -04:00
end
2012-01-07 12:53:49 -05:00
2011-11-10 02:22:26 -05:00
def test_ensure_that_gitignore_can_be_generated_from_a_template_for_dummy_path
FileUtils . cd ( Rails . root )
2015-01-27 17:59:48 -05:00
run_generator ( [ destination_root , " --dummy_path " , " spec/dummy " , " --skip-test " ] )
2011-11-10 02:22:26 -05:00
assert_file " .gitignore " do | contents |
assert_match ( / spec \/ dummy / , contents )
end
end
2010-11-08 16:43:51 -05:00
2015-01-29 15:44:26 -05:00
def test_skipping_test_files
2015-01-27 17:59:48 -05:00
run_generator [ destination_root , " --skip-test " ]
2011-05-25 09:03:07 -04:00
assert_no_file " test "
2011-05-25 09:12:54 -04:00
assert_file " bukkits.gemspec " do | contents |
2011-09-03 22:53:13 -04:00
assert_no_match ( / s.test_files = Dir \ ["test \/ \ * \ * \/ \ *" \ ] / , contents )
2011-05-25 09:12:54 -04:00
end
2012-07-03 12:58:17 -04:00
assert_file '.gitignore' do | contents |
assert_no_match ( / test \ dummy / , contents )
end
2011-05-25 09:03:07 -04:00
end
2010-11-14 20:04:17 -05:00
def test_skipping_gemspec
run_generator [ destination_root , " --skip-gemspec " ]
assert_no_file " bukkits.gemspec "
2012-06-05 01:49:40 -04:00
assert_file " Gemfile " do | contents |
assert_no_match ( 'gemspec' , contents )
2014-05-10 16:56:16 -04:00
assert_match ( / gem 'rails', '~> #{ Rails . version } ' / , contents )
2013-11-23 05:38:54 -05:00
assert_match_sqlite3 ( contents )
2012-06-05 01:49:40 -04:00
assert_no_match ( / # gem "jquery-rails" / , contents )
end
end
def test_skipping_gemspec_in_full_mode
run_generator [ destination_root , " --skip-gemspec " , " --full " ]
assert_no_file " bukkits.gemspec "
assert_file " Gemfile " do | contents |
assert_no_match ( 'gemspec' , contents )
2014-05-10 16:56:16 -04:00
assert_match ( / gem 'rails', '~> #{ Rails . version } ' / , contents )
2013-11-23 05:38:54 -05:00
assert_match_sqlite3 ( contents )
2012-06-05 01:49:40 -04:00
end
2010-11-14 20:04:17 -05:00
end
2012-01-07 12:53:49 -05:00
def test_creating_plugin_in_app_directory_adds_gemfile_entry
2013-12-02 09:05:02 -05:00
# simulate application existence
2012-01-07 12:53:49 -05:00
gemfile_path = " #{ Rails . root } /Gemfile "
Object . const_set ( 'APP_PATH' , Rails . root )
FileUtils . touch gemfile_path
2014-07-30 22:13:59 -04:00
run_generator
2012-01-07 12:53:49 -05:00
2012-05-22 05:26:06 -04:00
assert_file gemfile_path , / gem 'bukkits', path: 'tmp \/ bukkits' /
2012-01-07 12:53:49 -05:00
ensure
Object . send ( :remove_const , 'APP_PATH' )
FileUtils . rm gemfile_path
end
def test_skipping_gemfile_entry
2013-12-02 09:05:02 -05:00
# simulate application existence
2012-01-07 12:53:49 -05:00
gemfile_path = " #{ Rails . root } /Gemfile "
Object . const_set ( 'APP_PATH' , Rails . root )
FileUtils . touch gemfile_path
run_generator [ destination_root , " --skip-gemfile-entry " ]
assert_file gemfile_path do | contents |
2012-05-22 05:26:06 -04:00
assert_no_match ( / gem 'bukkits', path: 'tmp \/ bukkits' / , contents )
2012-01-07 12:53:49 -05:00
end
ensure
Object . send ( :remove_const , 'APP_PATH' )
FileUtils . rm gemfile_path
end
2014-02-25 08:57:23 -05:00
def test_generating_controller_inside_mountable_engine
run_generator [ destination_root , " --mountable " ]
capture ( :stdout ) do
` #{ destination_root } /bin/rails g controller admin/dashboard foo `
end
assert_file " config/routes.rb " do | contents |
assert_match ( / namespace :admin / , contents )
assert_no_match ( / namespace :bukkit / , contents )
end
end
2012-01-07 12:53:49 -05:00
2013-04-12 00:51:52 -04:00
def test_git_name_and_email_in_gemspec_file
2014-05-02 05:26:31 -04:00
name = ` git config user.name ` . chomp rescue " TODO: Write your name "
email = ` git config user.email ` . chomp rescue " TODO: Write your email address "
2013-04-12 00:51:52 -04:00
2014-07-30 22:13:59 -04:00
run_generator
2013-04-12 00:51:52 -04:00
assert_file " bukkits.gemspec " do | contents |
2014-07-30 22:06:30 -04:00
assert_match name , contents
assert_match email , contents
2013-04-12 00:51:52 -04:00
end
end
2014-05-02 05:26:31 -04:00
def test_git_name_in_license_file
name = ` git config user.name ` . chomp rescue " TODO: Write your name "
2013-04-12 00:51:52 -04:00
2014-07-30 22:13:59 -04:00
run_generator
2013-04-12 00:51:52 -04:00
assert_file " MIT-LICENSE " do | contents |
2014-07-30 22:06:30 -04:00
assert_match name , contents
2013-04-12 00:51:52 -04:00
end
end
2014-05-02 05:26:31 -04:00
def test_no_details_from_git_when_skip_git
name = " TODO: Write your name "
email = " TODO: Write your email address "
run_generator [ destination_root , '--skip-git' ]
assert_file " MIT-LICENSE " do | contents |
2014-07-30 22:06:30 -04:00
assert_match name , contents
2014-05-02 05:26:31 -04:00
end
assert_file " bukkits.gemspec " do | contents |
2014-07-30 22:06:30 -04:00
assert_match name , contents
assert_match email , contents
2014-05-02 05:26:31 -04:00
end
end
2010-10-15 10:46:31 -04:00
protected
def action ( * args , & block )
silence ( :stdout ) { generator . send ( * args , & block ) }
end
2011-07-29 12:36:36 -04:00
def default_files
:: DEFAULT_PLUGIN_FILES
end
2013-11-23 05:38:54 -05:00
def assert_match_sqlite3 ( contents )
2014-07-30 22:00:48 -04:00
if defined? ( JRUBY_VERSION )
2014-05-10 16:56:16 -04:00
assert_match ( / group :development do \ n gem 'activerecord-jdbcsqlite3-adapter' \ nend / , contents )
2014-07-30 22:00:48 -04:00
else
assert_match ( / group :development do \ n gem 'sqlite3' \ nend / , contents )
2013-11-23 05:38:54 -05:00
end
end
2010-10-15 10:46:31 -04:00
end