From 8c5622f0d4d3b5c6bce52b0eb22756a83060b1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 13:03:07 +0200 Subject: Initial scratch of model generators. --- railties/test/generators/model_generator_test.rb | 72 ++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 railties/test/generators/model_generator_test.rb (limited to 'railties/test/generators/model_generator_test.rb') 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 -- cgit v1.2.3 From acaeaf308a071d9892f8d555be0697c45558ef4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 14:03:35 +0200 Subject: Add a fixture replacement hook to TestUnit model generator. --- railties/test/generators/model_generator_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 425c4f581a..904f77242d 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -22,6 +22,12 @@ class ModelGeneratorTest < GeneratorsTestCase assert_no_file "test/fixtures/accounts.yml" end + def test_fixtures_are_skipped_if_fixture_replacement_is_given + content = run_generator ["account", "-r", "fixjour"] + assert_match /Could not find and invoke 'fixjour'/, content + 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 -- cgit v1.2.3 From 7b6c5ed7dbc2fcbaaf56deacd8061b3da51221e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 15:41:29 +0200 Subject: Added parent option to model generator. --- railties/test/generators/model_generator_test.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 904f77242d..55c08d0199 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -11,6 +11,11 @@ class ModelGeneratorTest < GeneratorsTestCase assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/ end + def test_orm_with_parent_option + run_generator ["account", "--parent", "Admin::Account"] + assert_file "app/models/account.rb", /class Account < Admin::Account/ + end + def test_invokes_default_test_framework run_generator assert_file "test/unit/account_test.rb", /class AccountTest < ActiveSupport::TestCase/ -- cgit v1.2.3 From fdeee65c9624fa1490aaee829468af3b015fe956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 16:01:11 +0200 Subject: Add model_subclass generator with deprecation warning. --- railties/test/generators/model_generator_test.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 55c08d0199..62ad1d9305 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -16,6 +16,11 @@ class ModelGeneratorTest < GeneratorsTestCase assert_file "app/models/account.rb", /class Account < Admin::Account/ end + def test_orm_with_underscored_parent_option + run_generator ["account", "--parent", "admin/account"] + assert_file "app/models/account.rb", /class Account < Admin::Account/ + end + def test_invokes_default_test_framework run_generator assert_file "test/unit/account_test.rb", /class AccountTest < ActiveSupport::TestCase/ -- cgit v1.2.3 From c03585aa8da175888ad0893ef29d887f87fb749b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 21:26:53 +0200 Subject: Show invoked generators options on meta generators. --- railties/test/generators/model_generator_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 62ad1d9305..8a9c081cd9 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -6,6 +6,12 @@ require 'generators/test_unit/model/model_generator' class ModelGeneratorTest < GeneratorsTestCase + def test_help_shows_invoked_generators_options + content = run_generator ["--help"] + assert_match /ActiveRecord options:/, content + assert_match /TestUnit options:/, content + end + def test_invokes_default_orm run_generator assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/ -- cgit v1.2.3 From 496dde95fbedddad5d04afbe660ff1544229032c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 28 Jun 2009 11:56:44 +0200 Subject: Added migrations and make base generators be lazy loaded. --- railties/test/generators/model_generator_test.rb | 80 ++++++++++++------------ 1 file changed, 40 insertions(+), 40 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 8a9c081cd9..212f0f3691 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -17,28 +17,64 @@ class ModelGeneratorTest < GeneratorsTestCase assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/ end - def test_orm_with_parent_option + def test_model_with_parent_option run_generator ["account", "--parent", "Admin::Account"] assert_file "app/models/account.rb", /class Account < Admin::Account/ end - def test_orm_with_underscored_parent_option + def test_model_with_underscored_parent_option run_generator ["account", "--parent", "admin/account"] assert_file "app/models/account.rb", /class Account < Admin::Account/ end + def test_migration + run_generator + assert_migration "db/migrate/create_accounts.rb", /class CreateAccounts < ActiveRecord::Migration/ + end + + def test_migration_is_skipped + run_generator ["account", "--no-migration"] + assert_no_migration "db/migrate/create_accounts.rb" + end + + def test_migration_with_attributes + run_generator ["product", "name:string", "supplier_id:integer"] + assert_migration "db/migrate/create_products.rb", /t\.string :name/, /t\.integer :supplier_id/ + end + + def test_model_with_references_attribute_generates_belongs_to_associations + run_generator ["product", "name:string", "supplier_id:references"] + assert_file "app/models/product.rb", /belongs_to :supplier/ + end + + def test_model_with_belongs_to_attribute_generates_belongs_to_associations + run_generator ["product", "name:string", "supplier_id:belongs_to"] + assert_file "app/models/product.rb", /belongs_to :supplier/ + end + + def test_migration_with_timestamps + run_generator + assert_migration "db/migrate/create_accounts.rb", /t.timestamps/ + end + + def test_migration_timestamps_are_skipped + run_generator ["account", "--no-timestamps"] + content = assert_migration "db/migrate/create_accounts.rb" + assert_no_match /t.timestamps/, content + 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 + def test_fixture_is_skipped run_generator ["account", "--skip-fixture"] assert_no_file "test/fixtures/accounts.yml" end - def test_fixtures_are_skipped_if_fixture_replacement_is_given + 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 assert_no_file "test/fixtures/accounts.yml" @@ -49,42 +85,6 @@ class ModelGeneratorTest < GeneratorsTestCase 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"]) -- cgit v1.2.3 From 9413dba432b11d86b80449ca7b959b32ecb0844c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 28 Jun 2009 19:46:34 +0200 Subject: Added tessts for resources generator. --- railties/test/generators/model_generator_test.rb | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 212f0f3691..14cafe7b0d 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -20,6 +20,7 @@ class ModelGeneratorTest < GeneratorsTestCase def test_model_with_parent_option run_generator ["account", "--parent", "Admin::Account"] assert_file "app/models/account.rb", /class Account < Admin::Account/ + assert_no_migration "db/migrate/create_accounts.rb" end def test_model_with_underscored_parent_option @@ -39,7 +40,18 @@ class ModelGeneratorTest < GeneratorsTestCase def test_migration_with_attributes run_generator ["product", "name:string", "supplier_id:integer"] - assert_migration "db/migrate/create_products.rb", /t\.string :name/, /t\.integer :supplier_id/ + + assert_migration "db/migrate/create_products.rb" do |m| + assert_class_method m, :up do |up| + assert_match /create_table :products/, up + assert_match /t\.string :name/, up + assert_match /t\.integer :supplier_id/, up + end + + assert_class_method m, :down do |down| + assert_match /drop_table :products/, down + end + end end def test_model_with_references_attribute_generates_belongs_to_associations @@ -59,8 +71,12 @@ class ModelGeneratorTest < GeneratorsTestCase def test_migration_timestamps_are_skipped run_generator ["account", "--no-timestamps"] - content = assert_migration "db/migrate/create_accounts.rb" - assert_no_match /t.timestamps/, content + + assert_migration "db/migrate/create_accounts.rb" do |m| + assert_class_method m, :up do |up| + assert_no_match /t.timestamps/, up + end + end end def test_invokes_default_test_framework -- cgit v1.2.3 From 555a956a66628f0c14440e350fefe62125067058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 1 Jul 2009 12:07:05 +0200 Subject: Ensure both migration and routes are removed on revoke. --- railties/test/generators/model_generator_test.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 14cafe7b0d..c0768bba7b 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -79,6 +79,24 @@ class ModelGeneratorTest < GeneratorsTestCase end end + def test_migration_already_exists_error_message + run_generator + error = capture(:stderr){ run_generator ["Account"], :behavior => :skip } + assert_match /Another migration is already named create_accounts/, error + end + + def test_migration_error_is_not_shown_on_revoke + run_generator + error = capture(:stderr){ run_generator ["Account"], :behavior => :revoke } + assert_no_match /Another migration is already named create_accounts/, error + end + + def test_migration_is_removed_on_revoke + run_generator + run_generator ["Account"], :behavior => :revoke + assert_no_migration "db/migrate/create_accounts.rb" + end + def test_invokes_default_test_framework run_generator assert_file "test/unit/account_test.rb", /class AccountTest < ActiveSupport::TestCase/ @@ -103,8 +121,8 @@ class ModelGeneratorTest < GeneratorsTestCase protected - def run_generator(args=["Account", "name:string", "age:integer"]) - silence(:stdout) { Rails::Generators::ModelGenerator.start args, :root => destination_root } + def run_generator(args=["Account", "name:string", "age:integer"], config={}) + silence(:stdout) { Rails::Generators::ModelGenerator.start args, config.merge(:root => destination_root) } end end -- cgit v1.2.3 From d1c404ee90ea7470d662517aa7a2d312a61c8c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 3 Jul 2009 12:10:09 +0200 Subject: Added lookup to generators. --- railties/test/generators/model_generator_test.rb | 2 -- 1 file changed, 2 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index c0768bba7b..d076244abd 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -1,8 +1,6 @@ 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 -- cgit v1.2.3 From 21db04818e0120a35912cbf57663dfecc9bec4a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 3 Jul 2009 14:55:37 +0200 Subject: More tests for rails generators and lookup. --- railties/test/generators/model_generator_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/test/generators/model_generator_test.rb') 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 -- cgit v1.2.3 From 09c288f0c5b5f9da4473bb321cccb766d9f59d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 8 Jul 2009 12:55:50 +0200 Subject: Add the new generators environment and update commands. --- railties/test/generators/model_generator_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 30fc837834..62e1c5ab9e 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -108,7 +108,7 @@ class ModelGeneratorTest < GeneratorsTestCase def test_fixture_is_skipped_if_fixture_replacement_is_given content = run_generator ["account", "-r", "factory_girl"] - assert_match /Could not find and invoke 'factory_girl'/, content + assert_match /factory_girl \[not found\]/, content assert_no_file "test/fixtures/accounts.yml" end -- cgit v1.2.3 From a5ab030ae4ca7496fc9167c9ffa4717be130b235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 13 Jul 2009 22:26:58 +0200 Subject: Ensure non timestamped migrations are generated properly. --- railties/test/generators/model_generator_test.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 62e1c5ab9e..85aa2cc145 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -52,6 +52,17 @@ class ModelGeneratorTest < GeneratorsTestCase end end + def test_migration_without_timestamps + ActiveRecord::Base.timestamped_migrations = false + run_generator ["account"] + assert_file "db/migrate/001_create_accounts.rb", /class CreateAccounts < ActiveRecord::Migration/ + + run_generator ["project"] + assert_file "db/migrate/002_create_projects.rb", /class CreateProjects < ActiveRecord::Migration/ + ensure + ActiveRecord::Base.timestamped_migrations = true + end + def test_model_with_references_attribute_generates_belongs_to_associations run_generator ["product", "name:string", "supplier_id:references"] assert_file "app/models/product.rb", /belongs_to :supplier/ -- cgit v1.2.3 From a06c825b464758a0c22f8b089a596e46f1bba5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 14 Jul 2009 22:20:43 +0200 Subject: Updated vendored Thor to 0.11.1 and update Rails::Generators. --- railties/test/generators/model_generator_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/test/generators/model_generator_test.rb') diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 85aa2cc145..a9b772d67b 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -131,7 +131,7 @@ class ModelGeneratorTest < GeneratorsTestCase protected def run_generator(args=["Account", "name:string", "age:integer"], config={}) - silence(:stdout) { Rails::Generators::ModelGenerator.start args, config.merge(:root => destination_root) } + silence(:stdout) { Rails::Generators::ModelGenerator.start args, config.merge(:destination_root => destination_root) } end end -- cgit v1.2.3