aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test')
-rw-r--r--railties/test/fixtures/lib/generators/active_record/fixjour/fixjour_generator.rb8
-rw-r--r--railties/test/fixtures/lib/generators/fixjour_generator.rb2
-rw-r--r--railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb0
-rw-r--r--railties/test/fixtures/lib/generators/missing_class/templates/.gitignore0
-rw-r--r--railties/test/fixtures/lib/generators/missing_generator/templates/.gitignore0
-rw-r--r--railties/test/fixtures/lib/generators/missing_templates/.gitignore0
-rw-r--r--railties/test/fixtures/lib/generators/rails/javascripts_generator.rb4
-rw-r--r--railties/test/fixtures/lib/generators/working/working_generator.rb2
-rw-r--r--railties/test/generators/generators_test_helper.rb6
-rw-r--r--railties/test/generators/model_generator_test.rb4
-rw-r--r--railties/test/generators_test.rb80
11 files changed, 99 insertions, 7 deletions
diff --git a/railties/test/fixtures/lib/generators/active_record/fixjour/fixjour_generator.rb b/railties/test/fixtures/lib/generators/active_record/fixjour/fixjour_generator.rb
new file mode 100644
index 0000000000..7a4edb8bcb
--- /dev/null
+++ b/railties/test/fixtures/lib/generators/active_record/fixjour/fixjour_generator.rb
@@ -0,0 +1,8 @@
+require 'generators/active_record'
+
+module ActiveRecord
+ module Generators
+ class FixjourGenerator < Base
+ end
+ end
+end
diff --git a/railties/test/fixtures/lib/generators/fixjour_generator.rb b/railties/test/fixtures/lib/generators/fixjour_generator.rb
new file mode 100644
index 0000000000..ef3e9edbed
--- /dev/null
+++ b/railties/test/fixtures/lib/generators/fixjour_generator.rb
@@ -0,0 +1,2 @@
+class FixjourGenerator < Rails::Generators::NamedBase
+end
diff --git a/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb b/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb
deleted file mode 100644
index e69de29bb2..0000000000
--- a/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb
+++ /dev/null
diff --git a/railties/test/fixtures/lib/generators/missing_class/templates/.gitignore b/railties/test/fixtures/lib/generators/missing_class/templates/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/railties/test/fixtures/lib/generators/missing_class/templates/.gitignore
+++ /dev/null
diff --git a/railties/test/fixtures/lib/generators/missing_generator/templates/.gitignore b/railties/test/fixtures/lib/generators/missing_generator/templates/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/railties/test/fixtures/lib/generators/missing_generator/templates/.gitignore
+++ /dev/null
diff --git a/railties/test/fixtures/lib/generators/missing_templates/.gitignore b/railties/test/fixtures/lib/generators/missing_templates/.gitignore
deleted file mode 100644
index e69de29bb2..0000000000
--- a/railties/test/fixtures/lib/generators/missing_templates/.gitignore
+++ /dev/null
diff --git a/railties/test/fixtures/lib/generators/rails/javascripts_generator.rb b/railties/test/fixtures/lib/generators/rails/javascripts_generator.rb
new file mode 100644
index 0000000000..cad5e96784
--- /dev/null
+++ b/railties/test/fixtures/lib/generators/rails/javascripts_generator.rb
@@ -0,0 +1,4 @@
+module Rails::Generators
+ class JavascriptsGenerator < Rails::Generators::NamedBase
+ end
+end
diff --git a/railties/test/fixtures/lib/generators/working/working_generator.rb b/railties/test/fixtures/lib/generators/working/working_generator.rb
deleted file mode 100644
index 465b34319a..0000000000
--- a/railties/test/fixtures/lib/generators/working/working_generator.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class WorkingGenerator < Rails::Generator::NamedBase
-end
diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb
index 7f22197a54..2ccedf814d 100644
--- a/railties/test/generators/generators_test_helper.rb
+++ b/railties/test/generators/generators_test_helper.rb
@@ -1,9 +1,6 @@
require 'test/unit'
require 'fileutils'
-$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib"
-require 'generators'
-
fixtures = File.expand_path(File.join(File.dirname(__FILE__), '..', 'fixtures'))
if defined?(RAILS_ROOT)
RAILS_ROOT.replace fixtures
@@ -11,6 +8,9 @@ else
RAILS_ROOT = fixtures
end
+$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../lib"
+require 'generators'
+
class GeneratorsTestCase < Test::Unit::TestCase
include FileUtils
diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb
index d076244abd..30fc837834 100644
--- a/railties/test/generators/model_generator_test.rb
+++ b/railties/test/generators/model_generator_test.rb
@@ -107,8 +107,8 @@ class ModelGeneratorTest < GeneratorsTestCase
end
def test_fixture_is_skipped_if_fixture_replacement_is_given
- content = run_generator ["account", "-r", "fixjour"]
- assert_match /Could not find and invoke 'fixjour'/, content
+ content = run_generator ["account", "-r", "factory_girl"]
+ assert_match /Could not find and invoke 'factory_girl'/, content
assert_no_file "test/fixtures/accounts.yml"
end
diff --git a/railties/test/generators_test.rb b/railties/test/generators_test.rb
new file mode 100644
index 0000000000..ac290b10bb
--- /dev/null
+++ b/railties/test/generators_test.rb
@@ -0,0 +1,80 @@
+require File.join(File.dirname(__FILE__), 'generators', 'generators_test_helper')
+require 'generators/rails/model/model_generator'
+require 'mocha'
+
+class GeneratorsTest < GeneratorsTestCase
+ def test_invoke_when_generator_is_not_found
+ output = capture(:stdout){ Rails::Generators.invoke :unknown }
+ assert_equal "Could not find generator unknown.\n", output
+ end
+
+ def test_help_when_a_generator_with_required_arguments_is_invoked_without_arguments
+ output = capture(:stdout){ Rails::Generators.invoke :model, [] }
+ assert_match /Description:/, output
+ end
+
+ def test_invoke_with_default_behavior
+ Rails::Generators::ModelGenerator.expects(:start).with(["Account"], :behavior => :invoke)
+ Rails::Generators.invoke :model, ["Account"]
+ end
+
+ def test_invoke_with_given_behavior
+ Rails::Generators::ModelGenerator.expects(:start).with(["Account"], :behavior => :skip)
+ Rails::Generators.invoke :model, ["Account"], :skip
+ end
+
+ def test_find_by_namespace_without_base_or_context
+ assert_nil Rails::Generators.find_by_namespace(:model)
+ end
+
+ def test_find_by_namespace_with_base
+ klass = Rails::Generators.find_by_namespace(:model, :rails)
+ assert klass
+ assert_equal "rails:generators:model", klass.namespace
+ end
+
+ def test_find_by_namespace_with_context
+ klass = Rails::Generators.find_by_namespace(:test_unit, nil, :model)
+ assert klass
+ assert_equal "test_unit:generators:model", klass.namespace
+ end
+
+ def test_find_by_namespace_add_generators_to_raw_lookups
+ klass = Rails::Generators.find_by_namespace("test_unit:model")
+ assert klass
+ assert_equal "test_unit:generators:model", klass.namespace
+ end
+
+ def test_find_by_namespace_lookup_to_the_rails_root_folder
+ klass = Rails::Generators.find_by_namespace(:fixjour)
+ assert klass
+ assert_equal "fixjour", klass.namespace
+ end
+
+ def test_find_by_namespace_lookup_to_deep_rails_root_folders
+ klass = Rails::Generators.find_by_namespace(:fixjour, :active_record)
+ assert klass
+ assert_equal "active_record:generators:fixjour", klass.namespace
+ end
+
+ def test_find_by_namespace_lookup_traverse_folders
+ klass = Rails::Generators.find_by_namespace(:javascripts, :rails)
+ assert klass
+ assert_equal "rails:generators:javascripts", klass.namespace
+ end
+
+ def test_builtin_generators
+ assert Rails::Generators.builtin.include? %w(rails model)
+ end
+
+ def test_rails_generators_help_with_builtin_information
+ output = capture(:stdout){ Rails::Generators.help }
+ assert_match /model/, output
+ assert_match /scaffold_controller/, output
+ end
+
+ def test_rails_generators_with_others_information
+ output = capture(:stdout){ Rails::Generators.help }.split("\n").last
+ assert_equal "Others: active_record:fixjour, fixjour, rails:javascripts.", output
+ end
+end