rails3-generators 0.10.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. data/.bundle/config +2 -0
  2. data/CHANGELOG.rdoc +18 -2
  3. data/README.rdoc +5 -1
  4. data/Rakefile +5 -2
  5. data/VERSION +1 -1
  6. data/lib/generators/{datamapper.rb → data_mapper.rb} +6 -3
  7. data/lib/generators/{datamapper → data_mapper}/migration/migration_generator.rb +2 -2
  8. data/lib/generators/{datamapper → data_mapper}/migration/templates/migration.rb +0 -0
  9. data/lib/generators/{datamapper → data_mapper}/model/model_generator.rb +27 -3
  10. data/lib/generators/{datamapper → data_mapper}/model/templates/migration.rb +0 -0
  11. data/lib/generators/{datamapper → data_mapper}/model/templates/model.rb +4 -2
  12. data/lib/generators/{datamapper → data_mapper}/observer/observer_generator.rb +2 -2
  13. data/lib/generators/{datamapper → data_mapper}/observer/templates/observer.rb +1 -1
  14. data/lib/generators/helpers/migration_helper.rb +53 -0
  15. data/lib/generators/helpers/model_helper.rb +75 -0
  16. data/lib/generators/jquery/install/install_generator.rb +6 -6
  17. data/lib/generators/jquery/install/templates/README +10 -0
  18. data/lib/generators/{mongomapper.rb → mongo_mapper.rb} +3 -24
  19. data/lib/generators/mongo_mapper/install/install_generator.rb +30 -0
  20. data/lib/generators/mongo_mapper/install/templates/database.mongo.yml +25 -0
  21. data/lib/generators/mongo_mapper/install/templates/mongo_mapper.rb +9 -0
  22. data/lib/generators/mongo_mapper/model/model_generator.rb +84 -0
  23. data/lib/generators/mongo_mapper/model/templates/model.rb +36 -0
  24. data/lib/generators/{mongomapper → mongo_mapper}/observer/observer_generator.rb +2 -2
  25. data/lib/generators/mongo_mapper/observer/templates/observer.rb +3 -0
  26. data/lib/generators/mongoid.rb +24 -0
  27. data/lib/generators/mongoid/install/install_generator.rb +35 -0
  28. data/lib/generators/mongoid/install/templates/database.mongo.yml +25 -0
  29. data/lib/generators/mongoid/install/templates/mongoid.rb +12 -0
  30. data/lib/generators/mongoid/model/model_generator.rb +111 -0
  31. data/lib/generators/{mongomapper → mongoid}/model/templates/model.rb +11 -9
  32. data/lib/generators/mustache/install/templates/lib/mustache_rails.rb +1 -3
  33. data/lib/rails3-generators.rb +1 -1
  34. data/rails3-generators.gemspec +60 -29
  35. data/test/lib/generators/data_mapper/migration_generator_test.rb +40 -0
  36. data/test/lib/generators/data_mapper/model_generator_test.rb +53 -0
  37. data/test/lib/generators/data_mapper/observer_generator_test.rb +22 -0
  38. data/test/lib/generators/haml/controller_generator_test.rb +1 -0
  39. data/test/lib/generators/haml/install_generator_test.rb +1 -0
  40. data/test/lib/generators/haml/scaffold_generator_test.rb +1 -0
  41. data/test/lib/generators/haml/testing_helper.rb +1 -0
  42. data/test/lib/generators/jquery/install_generator_test.rb +0 -1
  43. data/test/lib/generators/mongo_mapper/install_generator_test.rb +17 -0
  44. data/test/lib/generators/mongo_mapper/model_generator_test.rb +73 -0
  45. data/test/lib/generators/mongo_mapper/observer_generator_test.rb +20 -0
  46. data/test/lib/generators/mongo_mapper/testing_helper.rb +1 -0
  47. data/test/lib/generators/mongoid/install_generator_test.rb +18 -0
  48. data/test/lib/generators/mongoid/model_generator_test.rb +72 -0
  49. data/test/lib/generators/mongoid/testing_helper.rb +1 -0
  50. data/test/lib/generators/mustache/controller_generator_test.rb +1 -0
  51. data/test/lib/generators/mustache/scaffold_generator_test.rb +1 -0
  52. data/test/lib/generators/mustache/testing_helper.rb +1 -0
  53. data/test/test_helper.rb +31 -28
  54. metadata +61 -30
  55. data/lib/generators/jquery/install/templates/config/initializers/jquery.rb.tt +0 -9
  56. data/lib/generators/mongomapper/model/model_generator.rb +0 -29
  57. data/test/lib/generators/datamapper/migration_generator_test.rb +0 -13
  58. data/test/lib/generators/datamapper/model_generator_test.rb +0 -13
  59. data/test/lib/generators/datamapper/observer_generator_test.rb +0 -13
  60. data/test/lib/generators/mongomapper/model_generator_test.rb +0 -13
  61. data/test/lib/generators/mongomapper/observer_generator_test.rb +0 -13
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+ require_generator :data_mapper => ['migration']
3
+
4
+ class DataMapper::Generators::MigrationGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests DataMapper::Generators::MigrationGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with name of migration" do
12
+ name = 'account'
13
+ run_generator %w{Account}
14
+ migration_name = Dir[File.join(Rails.root, "db/migrate/*_#{name}.rb")].first
15
+ if migration_name
16
+ assert_file migration_name do |migration|
17
+ assert_match /up do/, migration
18
+ assert_match /down do/, migration
19
+ end
20
+ else
21
+ fail "No migration generated for #{name}"
22
+ end
23
+ end
24
+
25
+ test "invoke with name and attributes" do
26
+ name = 'account'
27
+ run_generator %w{Account name:string}
28
+ migration_name = Dir[File.join(Rails.root, "db/migrate/*_#{name}.rb")].first
29
+ if migration_name
30
+ assert_file migration_name do |migration|
31
+ assert_match /up do/, migration
32
+ assert_match /down do/, migration
33
+ assert_match /modify_table :#{name.tableize}/, migration
34
+ end
35
+ else
36
+ fail "No migration generated for #{name}"
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,53 @@
1
+ require 'test_helper'
2
+ require_generator :data_mapper => ['model']
3
+
4
+ class DataMapper::Generators::ModelGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests DataMapper::Generators::ModelGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with model name" do
12
+ content = run_generator %w(Account)
13
+
14
+ assert_file "app/models/account.rb" do |account|
15
+ assert_class "Account", account do |klass|
16
+ assert_match /include DataMapper::Resource/, klass
17
+ assert_match /property :id, Serial/, klass
18
+ end
19
+ end
20
+ end
21
+
22
+ test "invoke with model name and attributes" do
23
+ content = run_generator %w(Account name:string age:integer)
24
+
25
+ assert_file "app/models/account.rb" do |account|
26
+ assert_class "Account", account do |klass|
27
+ assert_match /property :name, String/, klass
28
+ assert_match /property :age, Integer/, klass
29
+ end
30
+ end
31
+ end
32
+
33
+ test "invoke with model name and --timestamps option" do
34
+ content = run_generator %w(Account --timestamps)
35
+
36
+ assert_file "app/models/account.rb" do |account|
37
+ assert_class "Account", account do |klass|
38
+ assert_match /property :created_at, DateTime/, klass
39
+ assert_match /property :updated_at, DateTime/, klass
40
+ end
41
+ end
42
+ end
43
+
44
+ test "invoke with model name and --parent option" do
45
+ content = run_generator %w(Admin --parent User)
46
+ assert_file "app/models/admin.rb" do |account|
47
+ assert_class "Admin", account do |klass|
48
+ assert_no_match /property :id, Serial/, klass
49
+ assert_match /<\s+User/, klass
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+ require_generator :data_mapper => ['observer']
3
+
4
+ class DataMapper::Generators::ObserverGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests DataMapper::Generators::ObserverGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with model name" do
12
+ name = 'account'
13
+ content = run_generator %w(Account)
14
+
15
+ assert_file "app/models/#{name}_observer.rb" do |account|
16
+ assert_class "Account", account do |klass|
17
+ assert_match /include DataMapper::Observer/, klass
18
+ assert_match /observe\s+#{name.camelize}/, klass
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'lib/generators/haml/testing_helper'
2
3
 
3
4
  class Haml::Generators::ControllerGeneratorTest < Rails::Generators::TestCase
4
5
  destination File.join(Rails.root)
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'lib/generators/haml/testing_helper'
2
3
 
3
4
  class Haml::Generators::InstallGeneratorTest < Rails::Generators::TestCase
4
5
  destination File.join(Rails.root)
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'lib/generators/haml/testing_helper'
2
3
 
3
4
  class Haml::Generators::ScaffoldGeneratorTest < Rails::Generators::TestCase
4
5
  destination File.join(Rails.root)
@@ -0,0 +1 @@
1
+ require_generators :haml => ['scaffold', 'controller', 'install']
@@ -10,7 +10,6 @@ class Jquery::Generators::InstallGeneratorTest < Rails::Generators::TestCase
10
10
  test 'jquery is installed' do
11
11
  run_generator
12
12
 
13
- assert_file "config/initializers/jquery.rb"
14
13
  %w(jquery.js rails.js).each { |js| assert_file "public/javascripts/#{js}" }
15
14
  %w(controls.js dragdrop.js effects.js prototype.js).each { |js| assert_no_file "public/javascripts/#{js}" }
16
15
  end
@@ -0,0 +1,17 @@
1
+ require 'test_helper'
2
+ require 'lib/generators/mongo_mapper/testing_helper'
3
+
4
+ class MongoMapper::Generators::InstallGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests MongoMapper::Generators::InstallGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke" do
12
+ run_generator ['test-db']
13
+ assert_file "config/initializers/mongo_mapper.rb" do |initializer|
14
+ assert_match /MongoMapper.connection = Mongo::Connection.new(\S+)/, initializer
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,73 @@
1
+ require 'test_helper'
2
+ require 'lib/generators/mongo_mapper/testing_helper'
3
+
4
+ class MongoMapper::Generators::ModelGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests MongoMapper::Generators::ModelGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with model name" do
12
+ content = run_generator %w(Account)
13
+
14
+ assert_file "app/models/account.rb" do |account|
15
+ assert_class "Account", account do |klass|
16
+ assert_match /include MongoMapper::Document/, klass
17
+ end
18
+ end
19
+ end
20
+
21
+ test "invoke with model name and attributes" do
22
+ content = run_generator %w(Account name:string age:integer)
23
+
24
+ assert_file "app/models/account.rb" do |account|
25
+ assert_class "Account", account do |klass|
26
+ assert_match /key :name, String/, klass
27
+ assert_match /key :age, Integer/, klass
28
+ end
29
+ end
30
+ end
31
+
32
+ test "invoke with model name and --embedded option" do
33
+ content = run_generator %w(Account --embedded)
34
+
35
+ assert_file "app/models/account.rb" do |account|
36
+ assert_class "Account", account do |klass|
37
+ assert_match /include MongoMapper::EmbeddedDocument/, klass
38
+ end
39
+ end
40
+ end
41
+
42
+ test "invoke with model name and --timestamps option" do
43
+ content = run_generator %w(Account --timestamps)
44
+
45
+ assert_file "app/models/account.rb" do |account|
46
+ assert_class "Account", account do |klass|
47
+ assert_match /timestamps!/, klass
48
+ end
49
+ end
50
+ end
51
+
52
+ test "invoke with model name and --version option" do
53
+ content = run_generator %w(Account --version)
54
+
55
+ assert_file "app/models/account.rb" do |account|
56
+ assert_class "Account", account do |klass|
57
+ assert_match /include Versioned/, klass
58
+ end
59
+ end
60
+ end
61
+
62
+
63
+ test "invoke with model name and --parent option" do
64
+ content = run_generator %w(Admin --parent User)
65
+
66
+ assert_file "app/models/admin.rb" do |account|
67
+ assert_class "Admin", account do |klass|
68
+ assert_no_match /include MongoMapper::Document/, klass
69
+ assert_match /<\s+User/, klass
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+ require 'lib/generators/mongo_mapper/testing_helper'
3
+
4
+ class MongoMapper::Generators::ObserverGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests MongoMapper::Generators::ObserverGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with name Account" do
12
+ name = 'account'
13
+ run_generator [name]
14
+ assert_file "app/models/#{name}_observer.rb" do |file_content|
15
+ assert_class "Account", file_content do |klass|
16
+ assert_match /< MongoMapper::Observer/, klass
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1 @@
1
+ require_generators :mongo_mapper => ['model', 'observer', 'install']
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+ require 'lib/generators/mongoid/testing_helper'
3
+
4
+ class Mongoid::Generators::InstallGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests Mongoid::Generators::InstallGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke" do
12
+ run_generator ['test-db']
13
+
14
+ assert_file "config/initializers/mongoid.rb" do |initializer|
15
+ assert_match /Mongo::Connection.new(\S+)/, initializer
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+ require 'lib/generators/mongoid/testing_helper'
3
+
4
+ class Mongoid::Generators::ModelGeneratorTest < Rails::Generators::TestCase
5
+ destination File.join(Rails.root)
6
+ tests Mongoid::Generators::ModelGenerator
7
+
8
+ setup :prepare_destination
9
+ setup :copy_routes
10
+
11
+ test "invoke with model name" do
12
+ content = run_generator %w(Account)
13
+
14
+ assert_file "app/models/account.rb" do |account|
15
+ assert_class "Account", account do |klass|
16
+ assert_match /Mongoid::Document/, klass
17
+ end
18
+ end
19
+ end
20
+
21
+ test "invoke with model name and attributes" do
22
+ content = run_generator %w(Account name:string age:integer)
23
+
24
+ assert_file "app/models/account.rb" do |account|
25
+ assert_class "Account", account do |klass|
26
+ assert_match /field :name, :type => String/, klass
27
+ assert_match /field :age, :type => Integer/, klass
28
+ end
29
+ end
30
+ end
31
+
32
+ test "invoke with model name and --embedded_in option" do
33
+ content = run_generator %w(Room --embedded-in House)
34
+
35
+ assert_file "app/models/room.rb" do |account|
36
+ assert_class "Room", account do |klass|
37
+ assert_match /embedded_in :house, :inverse_of => :rooms/, klass
38
+ end
39
+ end
40
+ end
41
+
42
+ test "invoke with model name and --timestamps option" do
43
+ content = run_generator %w(Account --timestamps)
44
+
45
+ assert_file "app/models/account.rb" do |account|
46
+ assert_class "Account", account do |klass|
47
+ assert_match /include Mongoid::Timestamps/, klass
48
+ end
49
+ end
50
+ end
51
+
52
+ test "invoke with model name and --version option" do
53
+ content = run_generator %w(Account --version)
54
+
55
+ assert_file "app/models/account.rb" do |account|
56
+ assert_class "Account", account do |klass|
57
+ assert_match /include Mongoid::Versioning/, klass
58
+ end
59
+ end
60
+ end
61
+
62
+ test "invoke with model name and --parent option" do
63
+ content = run_generator %w(Admin --parent User)
64
+
65
+ assert_file "app/models/admin.rb" do |account|
66
+ assert_class "Admin", account do |klass|
67
+ assert_no_match /Mongoid::Document/, klass
68
+ assert_match /<\s+User/, klass
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1 @@
1
+ require_generators :mongoid => ['model', 'install']
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'lib/generators/mustache/testing_helper'
2
3
 
3
4
  class Mustache::Generators::ControllerGeneratorTest < Rails::Generators::TestCase
4
5
  destination File.join(Rails.root)
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'lib/generators/mustache/testing_helper'
2
3
 
3
4
  class Mustache::Generators::ScaffoldGeneratorTest < Rails::Generators::TestCase
4
5
  destination File.join(Rails.root)
@@ -0,0 +1 @@
1
+ require_generators :mustache => ['scaffold', 'controller', 'install']
data/test/test_helper.rb CHANGED
@@ -43,34 +43,37 @@ def assert_class(klass, content)
43
43
  yield $2.strip if block_given?
44
44
  end
45
45
 
46
- require 'rails/generators/rails/scaffold/scaffold_generator'
47
- require 'rails/generators/rails/controller/controller_generator'
48
-
49
- # require 'generators/mustache/install/install_generator'
50
- require 'generators/mustache/scaffold/scaffold_generator'
51
- require 'generators/mustache/controller/controller_generator'
52
-
53
- require 'generators/haml/install/install_generator'
54
- require 'generators/haml/scaffold/scaffold_generator'
55
- require 'generators/haml/controller/controller_generator'
56
- require 'generators/erubis/scaffold/scaffold_generator'
57
-
58
- require 'generators/simple_form/scaffold/scaffold_generator'
59
- require 'generators/formtastic/scaffold/scaffold_generator'
60
-
61
- require 'generators/datamapper/migration/migration_generator'
62
- require 'generators/datamapper/model/model_generator'
63
- require 'generators/datamapper/observer/observer_generator'
64
- require 'generators/mongomapper/model/model_generator'
65
- require 'generators/mongomapper/observer/observer_generator'
66
-
67
- require 'generators/factory_girl/model/model_generator'
68
- require 'generators/machinist/model/model_generator'
69
-
70
- require 'generators/authlogic/session/session_generator'
46
+ def generator_list
47
+ {
48
+ :rails => ['scaffold', 'controller'],
49
+ :erubis => ['scaffold'],
50
+ :simple_form => ['scaffold'],
51
+ :formtastic => ['scaffold'],
52
+ :factory_girl => ['model'],
53
+ :machinist => ['model'],
54
+ :authlogic => ['session'],
55
+ :jquery => ['install'],
56
+ :koala => ['install'],
57
+ :shoulda => ['controller']
58
+ }
59
+ end
71
60
 
72
- require 'generators/jquery/install/install_generator'
61
+ def path_prefix(name)
62
+ case name
63
+ when :rails
64
+ 'rails/generators'
65
+ else
66
+ 'generators'
67
+ end
68
+ end
73
69
 
74
- require 'generators/koala/install/install_generator'
70
+ def require_generators(generator_list)
71
+ generator_list.each do |name, generators|
72
+ generators.each do |generator_name|
73
+ require File.join(path_prefix(name), name.to_s, generator_name.to_s, "#{generator_name}_generator")
74
+ end
75
+ end
76
+ end
77
+ alias :require_generator :require_generators
75
78
 
76
- require 'generators/shoulda/controller/controller_generator'
79
+ require_generators generator_list