aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-27 13:03:07 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-27 21:29:59 +0200
commit8c5622f0d4d3b5c6bce52b0eb22756a83060b1b1 (patch)
treea09d54d92582028e343d731fa9fafef352145119 /railties/test
parent9acb721e6a4e78bdd1b9d5f9fb80f4ed2b263b34 (diff)
downloadrails-8c5622f0d4d3b5c6bce52b0eb22756a83060b1b1.tar.gz
rails-8c5622f0d4d3b5c6bce52b0eb22756a83060b1b1.tar.bz2
rails-8c5622f0d4d3b5c6bce52b0eb22756a83060b1b1.zip
Initial scratch of model generators.
Diffstat (limited to 'railties/test')
-rw-r--r--railties/test/generators/controller_generator_test.rb2
-rw-r--r--railties/test/generators/generators_test_helper.rb14
-rw-r--r--railties/test/generators/helper_generator_test.rb19
-rw-r--r--railties/test/generators/mailer_generator_test.rb6
-rw-r--r--railties/test/generators/model_generator_test.rb72
-rw-r--r--railties/test/generators/observer_generator_test.rb6
6 files changed, 107 insertions, 12 deletions
diff --git a/railties/test/generators/controller_generator_test.rb b/railties/test/generators/controller_generator_test.rb
index e10580f40f..d0c963a9ac 100644
--- a/railties/test/generators/controller_generator_test.rb
+++ b/railties/test/generators/controller_generator_test.rb
@@ -20,6 +20,8 @@ class ControllerGeneratorTest < GeneratorsTestCase
assert_match /The name 'ObjectController' is either already used in your application or reserved/, content
end
+ # No need to spec content since it's already spec'ed on helper generator.
+ #
def test_invokes_helper
run_generator
assert_file "app/helpers/account_helper.rb"
diff --git a/railties/test/generators/generators_test_helper.rb b/railties/test/generators/generators_test_helper.rb
index 1fcfdaebb9..29ff306551 100644
--- a/railties/test/generators/generators_test_helper.rb
+++ b/railties/test/generators/generators_test_helper.rb
@@ -34,15 +34,17 @@ class GeneratorsTestCase < Test::Unit::TestCase
end
alias :silence :capture
- def assert_file(relative, content=nil)
+ def assert_file(relative, *contents)
absolute = File.join(destination_root, relative)
assert File.exists?(absolute)
- case content
- when String
- assert_equal content, File.read(absolute)
- when Regexp
- assert_match content, File.read(absolute)
+ contents.each do |content|
+ case content
+ when String
+ assert_equal content, File.read(absolute)
+ when Regexp
+ assert_match content, File.read(absolute)
+ end
end
end
diff --git a/railties/test/generators/helper_generator_test.rb b/railties/test/generators/helper_generator_test.rb
index 9b2f277f54..b2533e5315 100644
--- a/railties/test/generators/helper_generator_test.rb
+++ b/railties/test/generators/helper_generator_test.rb
@@ -33,6 +33,25 @@ class HelperGeneratorTest < GeneratorsTestCase
assert_match /The name 'AnotherObjectHelperTest' is either already used in your application or reserved/, content
end
+ def test_namespaced_and_not_namespaced_helpers
+ run_generator ["products"]
+
+ # We have to require the generated helper to show the problem because
+ # the test helpers just check for generated files and contents but
+ # do not actually load them. But they have to be loaded (as in a real environment)
+ # to make the second generator run fail
+ require "#{destination_root}/app/helpers/products_helper"
+
+ assert_nothing_raised do
+ begin
+ run_generator ["admin::products"]
+ ensure
+ # cleanup
+ Object.send(:remove_const, :ProductsHelper)
+ end
+ end
+ end
+
protected
def run_generator(args=["admin"])
diff --git a/railties/test/generators/mailer_generator_test.rb b/railties/test/generators/mailer_generator_test.rb
index 710847587d..3e5dc60361 100644
--- a/railties/test/generators/mailer_generator_test.rb
+++ b/railties/test/generators/mailer_generator_test.rb
@@ -18,9 +18,9 @@ class MailerGeneratorTest < GeneratorsTestCase
def test_invokes_default_test_framework
run_generator
- assert_file "test/unit/notifier_test.rb"
- assert_file "test/fixtures/notifier/foo"
- assert_file "test/fixtures/notifier/bar"
+ assert_file "test/unit/notifier_test.rb", /class NotifierTest < ActionMailer::TestCase/
+ assert_file "test/fixtures/notifier/foo", /app\/views\/notifier\/foo/
+ assert_file "test/fixtures/notifier/bar", /app\/views\/notifier\/bar/
end
def test_invokes_default_template_engine
diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb
new file mode 100644
index 0000000000..425c4f581a
--- /dev/null
+++ b/railties/test/generators/model_generator_test.rb
@@ -0,0 +1,72 @@
+require 'abstract_unit'
+require 'generators/generators_test_helper'
+require 'generators/active_record/model/model_generator'
+require 'generators/rails/model/model_generator'
+require 'generators/test_unit/model/model_generator'
+
+class ModelGeneratorTest < GeneratorsTestCase
+
+ def test_invokes_default_orm
+ run_generator
+ assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/
+ end
+
+ def test_invokes_default_test_framework
+ run_generator
+ assert_file "test/unit/account_test.rb", /class AccountTest < ActiveSupport::TestCase/
+ assert_file "test/fixtures/accounts.yml", /name: MyString/, /age: 1/
+ end
+
+ def test_fixtures_are_skipped
+ run_generator ["account", "--skip-fixture"]
+ assert_no_file "test/fixtures/accounts.yml"
+ end
+
+ def test_check_class_collision
+ content = capture(:stderr){ run_generator ["object"] }
+ assert_match /The name 'Object' is either already used in your application or reserved/, content
+ end
+
+# def test_model_skip_migration_skips_migration
+# run_generator('model', %w(Product name:string --skip-migration))
+
+# assert_generated_model_for :product
+# assert_generated_fixtures_for :products
+# assert_skipped_migration :create_products
+# end
+
+# def test_model_with_attributes_generates_resources_with_attributes
+# run_generator('model', %w(Product name:string supplier_id:integer created_at:timestamp))
+
+# assert_generated_model_for :product
+# assert_generated_fixtures_for :products
+# assert_generated_migration :create_products do |t|
+# assert_generated_column t, :name, :string
+# assert_generated_column t, :supplier_id, :integer
+# assert_generated_column t, :created_at, :timestamp
+# end
+# end
+
+# def test_model_with_reference_attributes_generates_belongs_to_associations
+# run_generator('model', %w(Product name:string supplier:references))
+
+# assert_generated_model_for :product do |body|
+# assert body =~ /^\s+belongs_to :supplier/, "#{body.inspect} should contain 'belongs_to :supplier'"
+# end
+# end
+
+# def test_model_with_belongs_to_attributes_generates_belongs_to_associations
+# run_generator('model', %w(Product name:string supplier:belongs_to))
+
+# assert_generated_model_for :product do |body|
+# assert body =~ /^\s+belongs_to :supplier/, "#{body.inspect} should contain 'belongs_to :supplier'"
+# end
+# end
+
+ protected
+
+ def run_generator(args=["Account", "name:string", "age:integer"])
+ silence(:stdout) { Rails::Generators::ModelGenerator.start args, :root => destination_root }
+ end
+
+end
diff --git a/railties/test/generators/observer_generator_test.rb b/railties/test/generators/observer_generator_test.rb
index 780c854d85..e2b027028a 100644
--- a/railties/test/generators/observer_generator_test.rb
+++ b/railties/test/generators/observer_generator_test.rb
@@ -6,19 +6,19 @@ require 'generators/test_unit/observer/observer_generator'
class ObserverGeneratorTest < GeneratorsTestCase
- def test_observer_skeleton_is_created
+ def test_invokes_default_orm
run_generator
assert_file "app/models/account_observer.rb", /class AccountObserver < ActiveRecord::Observer/
end
- def test_observer_with_class_path_skeleton_is_created
+ def test_invokes_default_orm_with_class_path
run_generator ["admin/account"]
assert_file "app/models/admin/account_observer.rb", /class Admin::AccountObserver < ActiveRecord::Observer/
end
def test_invokes_default_test_framework
run_generator
- assert_file "test/unit/account_observer_test.rb"
+ assert_file "test/unit/account_observer_test.rb", /class AccountObserverTest < ActiveSupport::TestCase/
end
def test_logs_if_the_test_framework_cannot_be_found