generator-spec 0.5.0 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. data/.document +0 -0
  2. data/.gitignore +0 -0
  3. data/.rspec +0 -0
  4. data/LICENSE +0 -0
  5. data/README.markdown +19 -13
  6. data/Rakefile +14 -35
  7. data/VERSION +1 -1
  8. data/generator-spec.gemspec +63 -148
  9. data/lib/generator-spec.rb +12 -0
  10. data/lib/generator-spec/namespaces.rb +7 -0
  11. data/lib/{generator_spec/helpers/configure_rails.rb → generator-spec/rails/configure.rb} +3 -3
  12. data/lib/generator-spec/rspec.rb +1 -0
  13. data/lib/generator-spec/rspec/configure.rb +6 -0
  14. data/lib/{generator_spec/rspec_generator/generator_util.rb → generator-spec/rspec/generator.rb} +6 -6
  15. data/lib/{generator_spec/rspec_generator → generator-spec/rspec/generator}/configure.rb +0 -0
  16. data/lib/{generator_spec/require_generator.rb → generator-spec/rspec/generator/require.rb} +0 -0
  17. data/lib/{generator_spec/rspec_generator → generator-spec/rspec/generator}/routes.rb +0 -0
  18. data/lib/{generator_spec/rspec_generator → generator-spec/rspec/generator}/test_case.rb +0 -0
  19. data/lib/generator-spec/rspec/macro.rb +18 -0
  20. data/lib/generator-spec/rspec/matchers/generate_artifact.rb +34 -0
  21. data/lib/generator-spec/rspec/matchers/generate_artifacts.rb +33 -0
  22. data/lib/generators/controller/controller_generator.rb +15 -21
  23. data/lib/generators/helper/helper_generator.rb +13 -29
  24. data/lib/generators/migration/migration_generator.rb +6 -7
  25. data/lib/generators/migration/templates/create_users.erb +0 -0
  26. data/lib/generators/model/model_generator.rb +36 -55
  27. data/lib/generators/observer/observer_generator.rb +2 -0
  28. data/lib/generators/view/view_generator.rb +2 -0
  29. data/spec/generator_spec/generators/controller_gen_spec.rb +40 -0
  30. data/spec/generator_spec/generators/{helper_generator_spec.rb → helper_gen_spec.rb} +4 -8
  31. data/spec/generator_spec/generators/{migration_generator_spec.rb → migration_gen_spec.rb} +3 -8
  32. data/spec/generator_spec/generators/model_gen_spec.rb +36 -0
  33. data/spec/generator_spec/generators/{observer_generator_spec.rb → observer_gen_spec.rb} +12 -21
  34. data/spec/generator_spec/generators/{view_generator_spec.rb → view_gen_spec.rb} +9 -20
  35. data/spec/generator_spec/matchers/generate_artifact_spec.rb +36 -0
  36. data/spec/generator_spec/matchers/generate_artifacts_spec.rb +35 -0
  37. data/spec/spec_helper.rb +5 -6
  38. data/wiki/Custom Rails 3 Generators.textile b/data/wiki/Custom Rails 3 → Generators.textile +0 -0
  39. data/wiki/content_matchers.textile +0 -0
  40. data/wiki/file_matchers.textile +0 -0
  41. data/wiki/migration_matchers.textile +0 -0
  42. data/wiki/rails_helpers.textile +0 -0
  43. metadata +117 -154
  44. data/lib/generator_spec.rb +0 -12
  45. data/lib/generator_spec/extensions/core_ext.rb +0 -47
  46. data/lib/generator_spec/helpers/generator_helper.rb +0 -11
  47. data/lib/generator_spec/helpers/migration_helper.rb +0 -69
  48. data/lib/generator_spec/main.rb +0 -77
  49. data/lib/generator_spec/matchers/content/content_matcher.rb +0 -110
  50. data/lib/generator_spec/matchers/content/have_block.rb +0 -57
  51. data/lib/generator_spec/matchers/content/have_call.rb +0 -59
  52. data/lib/generator_spec/matchers/content/have_calls.rb +0 -60
  53. data/lib/generator_spec/matchers/content/have_class_self.rb +0 -40
  54. data/lib/generator_spec/matchers/content/have_comment.rb +0 -42
  55. data/lib/generator_spec/matchers/content/have_method.rb +0 -66
  56. data/lib/generator_spec/matchers/content/have_module.rb +0 -66
  57. data/lib/generator_spec/matchers/content/have_region.rb +0 -48
  58. data/lib/generator_spec/matchers/content/have_subclass.rb +0 -50
  59. data/lib/generator_spec/matchers/content/include_module.rb +0 -51
  60. data/lib/generator_spec/matchers/content/inherit_from.rb +0 -40
  61. data/lib/generator_spec/matchers/file/generate_directory.rb +0 -73
  62. data/lib/generator_spec/matchers/file/generate_file.rb +0 -103
  63. data/lib/generator_spec/matchers/file/generate_migration.rb +0 -54
  64. data/lib/generator_spec/matchers/file/have_file.rb +0 -115
  65. data/lib/generator_spec/matchers/helpers/content.rb +0 -18
  66. data/lib/generator_spec/matchers/helpers/file.rb +0 -26
  67. data/lib/generator_spec/matchers/helpers/migration.rb +0 -89
  68. data/lib/generator_spec/matchers/migration/have_column.rb +0 -29
  69. data/lib/generator_spec/matchers/migration/have_index.rb +0 -9
  70. data/lib/generator_spec/matchers/migration/have_table.rb +0 -18
  71. data/lib/generator_spec/matchers/migration/have_tbl_column.rb +0 -25
  72. data/lib/generator_spec/matchers/migration/have_up_down.rb +0 -15
  73. data/lib/generator_spec/rails_helpers/base_helper.rb +0 -171
  74. data/lib/generator_spec/rails_helpers/rails_app.rb +0 -166
  75. data/lib/generator_spec/rails_helpers/rails_controller.rb +0 -44
  76. data/lib/generator_spec/rails_helpers/rails_helper.rb +0 -40
  77. data/lib/generator_spec/rails_helpers/rails_mailer.rb +0 -39
  78. data/lib/generator_spec/rails_helpers/rails_migration.rb +0 -51
  79. data/lib/generator_spec/rails_helpers/rails_model.rb +0 -40
  80. data/lib/generator_spec/rails_helpers/rails_observer.rb +0 -39
  81. data/lib/generator_spec/rails_helpers/rails_orm.rb +0 -114
  82. data/lib/generator_spec/rails_helpers/rails_view.rb +0 -65
  83. data/rspec_for_generators.gemspec +0 -96
  84. data/spec/generator_spec/generators/controller_generator_spec.rb +0 -47
  85. data/spec/generator_spec/generators/model_generator_spec.rb +0 -41
  86. data/spec/generator_spec/matchers/content/class_self_spec.rb +0 -30
  87. data/spec/generator_spec/matchers/content/have_block_spec.rb +0 -57
  88. data/spec/generator_spec/matchers/content/have_call_spec.rb +0 -55
  89. data/spec/generator_spec/matchers/content/have_calls_spec.rb +0 -47
  90. data/spec/generator_spec/matchers/content/have_class_spec.rb +0 -34
  91. data/spec/generator_spec/matchers/content/have_method_spec.rb +0 -52
  92. data/spec/generator_spec/matchers/content/have_module_spec.rb +0 -34
  93. data/spec/generator_spec/matchers/content/have_region_spec.rb +0 -56
  94. data/spec/generator_spec/matchers/content/have_subclass_spec.rb +0 -34
  95. data/spec/generator_spec/matchers/content/include_module_spec.rb +0 -36
  96. data/spec/generator_spec/matchers/content/inherit_from_spec.rb +0 -34
  97. data/spec/generator_spec/matchers/file/directory_spec.rb +0 -0
  98. data/spec/generator_spec/matchers/file/file_spec.rb +0 -0
  99. data/spec/generator_spec/matchers/file/migration_spec.rb +0 -0
  100. data/spec/generator_spec/matchers/migration/have_column_spec.rb +0 -0
  101. data/spec/generator_spec/matchers/migration/have_index_spec.rb +0 -0
  102. data/spec/generator_spec/matchers/migration/have_table_spec.rb +0 -0
  103. data/spec/generator_spec/matchers/migration/have_tbl_column_spec.rb +0 -0
  104. data/spec/generator_spec/matchers/migration/have_up_down_spec.rb +0 -0
  105. data/spec/generator_spec/matchers/rails/controller_matcher_spec.rb +0 -27
  106. data/spec/generator_spec/matchers/rails/helper_matcher_spec.rb +0 -26
  107. data/spec/generator_spec/matchers/rails/mailer_matcher_spec.rb +0 -24
  108. data/spec/generator_spec/matchers/rails/model_matcher_spec.rb +0 -31
  109. data/spec/generator_spec/matchers/rails/observer_matcher_spec.rb +0 -19
  110. data/spec/generator_spec/matchers/rails/view_matcher_spec.rb +0 -23
  111. data/spec/generator_spec/rails_helpers/rails_app_spec.rb +0 -0
  112. data/spec/generator_spec/rails_helpers/rails_controller_spec.rb +0 -33
  113. data/spec/generator_spec/rails_helpers/rails_helper_spec.rb +0 -33
  114. data/spec/generator_spec/rails_helpers/rails_mailer_spec.rb +0 -33
  115. data/spec/generator_spec/rails_helpers/rails_migration_spec.rb +0 -0
  116. data/spec/generator_spec/rails_helpers/rails_model_spec.rb +0 -31
  117. data/spec/generator_spec/rails_helpers/rails_observer_spec.rb +0 -33
  118. data/spec/generator_spec/rails_helpers/rails_orm_spec.rb +0 -0
  119. data/spec/generator_spec/rails_helpers/rails_view_spec.rb +0 -31
@@ -1,73 +0,0 @@
1
- # Asserts a given file exists. You need to supply an absolute path or a path relative
2
- # to the configured destination:
3
- #
4
- # generator.should have_generated_file "app/controller/products_controller.rb"
5
- #
6
-
7
- module RSpec::FileMatchers
8
- class GenerateDir
9
- attr_accessor :relative_path
10
-
11
- def initialize(relative_path, type = nil)
12
- @relative_path = relative_rails_dir(relative_path, type)
13
- end
14
-
15
- def matches?(generator, &block)
16
- file = File.expand_path(relative_path, generator.class.destination_root)
17
- file_exists = File.exists?(expected)
18
- if block && file_exists
19
- read = File.read(file)
20
- ruby_content = read.extend(RSpec::RubyContent::Helpers)
21
- yield ruby_content
22
- else
23
- file_exists
24
- end
25
- end
26
-
27
- def failure_message
28
- "Expected file #{relative_path} to have been generated, but it was not"
29
- end
30
-
31
- def negative_failure_message
32
- "Did not expected file #{relative_path} to have been generated, but it was"
33
- end
34
-
35
- protected
36
-
37
- def relative_rails_dir path, type = nil
38
- path = path.to_s
39
- return File.join(::Rails.root, base_dir(type), folder(type), "#{path}") if type
40
- File.join(::Rails.root, path)
41
- end
42
-
43
- def folder type
44
- case type
45
- when :observer
46
- 'models'
47
- else
48
- type.to_s.pluralize
49
- end
50
- end
51
-
52
- def base_dir type
53
- case type
54
- when :model, :controller, :view, :helper, :observer
55
- 'app'
56
- when :migration
57
- 'db'
58
- when :javascript, :stylesheet
59
- 'public'
60
- when :initializer, :locale
61
- 'config'
62
- else
63
- ''
64
- end
65
- end
66
- end
67
-
68
- def generate_dir(relative, type = nil)
69
- GenerateDir.new(relative, type)
70
- end
71
- alias_method :have_dir, :generate_dir
72
- end
73
-
@@ -1,103 +0,0 @@
1
- # Asserts a given file exists. You need to supply an absolute path or a path relative
2
- # to the configured destination:
3
- #
4
- # generator.should have_generated_file "app/controller/products_controller.rb"
5
- #
6
-
7
- module RSpec::FileMatchers
8
- class GenerateFile
9
- attr_accessor :relative_path
10
-
11
- def initialize(relative_path, type = nil)
12
- @relative_path = relative_rails_file(relative_path, type)
13
- end
14
-
15
- def matches?(generator, &block)
16
- file = File.expand_path(relative_path, generator.class.destination_root)
17
- file_exists = File.exists?(file)
18
- if block && file_exists
19
- read = File.read(file)
20
- ruby_content = read.extend(RSpec::RubyContent::Helpers)
21
- yield ruby_content
22
- else
23
- file_exists
24
- end
25
- end
26
-
27
- def failure_message
28
- "Expected file #{relative_path} to have been generated, but it was not"
29
- end
30
-
31
- def negative_failure_message
32
- "Did not expected file #{relative_path} to have been generated, but it was"
33
- end
34
-
35
- protected
36
-
37
- def relative_rails_file path, type = nil
38
- path = path.to_s
39
- f_name = file_name(path, type)
40
- return File.join(::Rails.root, base_dir(type), folder(type), f_name) if type
41
- File.join(::Rails.root, path)
42
- end
43
-
44
- def file_name path, type
45
- return "#{path}#{postfix(type)}.rb" if !path.include? '.'
46
- path
47
- end
48
-
49
-
50
- def postfix type
51
- "_#{type}" if [:helper, :controller, :observer].include?(type)
52
- end
53
-
54
- def folder type
55
- case type
56
- when :observer
57
- 'models'
58
- else
59
- type.to_s.pluralize
60
- end
61
- end
62
-
63
- def base_dir type
64
- case type
65
- when :model, :controller, :view, :helper, :observer
66
- 'app'
67
- when :migration
68
- 'db'
69
- when :javascript, :stylesheet
70
- 'public'
71
- when :initializer, :locale
72
- 'config'
73
- else
74
- ''
75
- end
76
- end
77
- end
78
-
79
- def generate_file(relative, type = nil)
80
- GenerateFile.new(relative, type)
81
- end
82
-
83
- def generate_model(relative)
84
- GenerateFile.new(relative, :model)
85
- end
86
-
87
- def generate_controller(relative)
88
- GenerateFile.new(relative, :controller)
89
- end
90
-
91
- def generate_helper(relative)
92
- GenerateFile.new(relative, :helper)
93
- end
94
-
95
- def generate_view(relative, action, ext)
96
- GenerateFile.new("#{relative}/#{action}.#{ext}", :view)
97
- end
98
-
99
- def generate_observer(relative)
100
- GenerateFile.new(relative, :observer)
101
- end
102
- end
103
-
@@ -1,54 +0,0 @@
1
- # This method manipulates the given path and tries to find any migration which
2
- # matches the migration name. For example, the call above is converted to:
3
- #
4
- # generator.should generate_migration "db/migrate/003_create_products.rb"
5
- #
6
- # Consequently it accepts the same arguments as the matcher have_file.
7
-
8
- module RSpec
9
- module FileMatchers
10
- class GenerateMigration
11
- include RSpec::Rails::Migration
12
-
13
- attr_reader :name
14
-
15
- def initialize(name)
16
- @name = name.to_s
17
- end
18
-
19
- def matches?(generator)
20
- expected = migration_file_name(name, generator)
21
- if block_given? && expected
22
- read = File.read(expected)
23
- ruby_content = read.extend(RSpec::RubyContent::Helpers)
24
- yield ruby_content
25
- else
26
- expected
27
- end
28
- end
29
-
30
- def failure_message
31
- "Expected migration #{name} to have been generated, but it was not"
32
- end
33
-
34
- def negative_failure_message
35
- "Did not expect migration #{name} to have been generated, but it was"
36
- end
37
-
38
- protected
39
-
40
- def migration_file_name(relative, generator) #:nodoc:
41
- dirname = migration_dir
42
- file_name = relative.sub(/\.rb$/, '')
43
- migrations = Dir.glob("#{dirname}/[0-9]*_*.rb")
44
- !migrations.empty? ? migrations.grep(/\d+_#{file_name}\.rb$/).first : false
45
- end
46
-
47
- end
48
-
49
- def generate_migration(name)
50
- GenerateMigration.new(name)
51
- end
52
- alias_method :have_migration, :generate_migration
53
- end
54
- end
@@ -1,115 +0,0 @@
1
- # Asserts a given file exists. You need to supply an absolute path or a path relative
2
- # to the configured destination:
3
- #
4
- # generator.should have_generated_file "app/controller/products_controller.rb"
5
- #
6
-
7
- module RSpec::FileMatchers
8
- class HaveFile
9
- attr_accessor :relative_path
10
-
11
- def initialize(relative_path, type = nil)
12
- @relative_path = relative_rails_file(relative_path, type)
13
- end
14
-
15
- def matches?(generator, &block)
16
- file = File.expand_path(relative_path, Rails.root)
17
- file_exists = File.exists?(file)
18
- if block && file_exists
19
- read = File.read(file)
20
- ruby_content = read.extend(RSpec::RubyContent::Helpers)
21
- yield ruby_content
22
- else
23
- file_exists
24
- end
25
- end
26
-
27
- def failure_message
28
- "Expected file #{relative_path} to have been generated, but it was not"
29
- end
30
-
31
- def negative_failure_message
32
- "Did not expected file #{relative_path} to have been generated, but it was"
33
- end
34
-
35
- protected
36
-
37
- def relative_rails_file path, type = nil
38
- path = path.to_s
39
- f_name = file_name(path, type)
40
- return File.join(::Rails.root, base_dir(type), folder(type), f_name) if type
41
- File.join(::Rails.root, path)
42
- end
43
-
44
- def file_name path, type
45
- return "#{path}#{postfix(type)}.rb" if !path.include? '.'
46
- path
47
- end
48
-
49
-
50
- def postfix type
51
- "_#{type}" if ![:model].include?(type)
52
- end
53
-
54
- def folder type
55
- case type
56
- when :observer
57
- 'models'
58
- else
59
- type.to_s.pluralize
60
- end
61
- end
62
-
63
- def base_dir type
64
- case type
65
- when :model, :controller, :view, :helper, :observer, :mailer
66
- 'app'
67
- when :migration
68
- 'db'
69
- when :javascript, :stylesheet
70
- 'public'
71
- when :initializer, :locale
72
- 'config'
73
- else
74
- ''
75
- end
76
- end
77
- end
78
-
79
- def have_file(relative, type = nil)
80
- HaveFile.new(relative, type)
81
- end
82
- alias_method :contain_file, :have_file
83
-
84
- def have_model(relative)
85
- HaveFile.new(relative, :model)
86
- end
87
- alias_method :contain_model, :have_model
88
-
89
- def have_controller(relative)
90
- HaveFile.new(relative, :controller)
91
- end
92
- alias_method :contain_controller, :have_controller
93
-
94
- def have_helper(relative)
95
- HaveFile.new(relative, :helper)
96
- end
97
- alias_method :contain_helper, :have_helper
98
-
99
- def have_view(relative, action='show', ext='html.erb')
100
- HaveFile.new("#{relative}/#{action}.#{ext}", :view)
101
- end
102
- alias_method :contain_view, :have_view
103
-
104
- def have_observer(relative)
105
- HaveFile.new(relative, :observer)
106
- end
107
- alias_method :contain_observer, :have_observer
108
-
109
- def have_mailer(relative)
110
- HaveFile.new(relative, :mailer)
111
- end
112
- alias_method :contain_mailer, :have_mailer
113
-
114
- end
115
-
@@ -1,18 +0,0 @@
1
- module RSpec::RubyContent
2
- module Helpers
3
- def check_matchings matchings
4
- matchings.each do |matching|
5
- self.should match /#{Regexp.escape(matching)}/
6
- end
7
- end
8
- alias_method :matchings, :check_matchings
9
-
10
-
11
- def check_methods methods, type=nil
12
- methods.each do |method_name|
13
- self.should have_method(method_name, type)
14
- end
15
- end
16
- alias_method :methods, :check_methods
17
- end
18
- end
@@ -1,26 +0,0 @@
1
- module RSpec::Generator
2
- module Helpers
3
- def check_file file_name, type=nil, &block
4
- self.should generate_file(file_name, type, &block)
5
- end
6
- alias_method :file, :check_file
7
-
8
- def check_view(file_name, matchings)
9
- self.should generate_file(file_name, :view) do |content|
10
- check_matchings matchings
11
- end
12
- end
13
- alias_method :view, :check_view
14
-
15
- def check_model(file_name, clazz, options = {})
16
- self.should generate_file("#{file_name.underscore}.rb", :model) do |file_content|
17
- file_content.should have_class clazz do |content|
18
- check_matchings options[:matchings]
19
- check_methods(options[:methods])
20
- check_class_methods(options[:class_methods])
21
- end
22
- end
23
- end
24
- alias_method :model, :check_model
25
- end
26
- end
@@ -1,89 +0,0 @@
1
- module RSpec::Generator
2
- module Helpers
3
- def check_migration(file_name, &block)
4
- self.should generate_migration file_name do |content|
5
- yield content if block
6
- end
7
- end
8
- alias_method :migration, :check_migration
9
- end
10
- end
11
-
12
- module RSpec::RubyContent
13
- module Helpers
14
- def check_up &block
15
- self.should have_up, &block
16
- end
17
- alias_method :up, :check_up
18
-
19
- def check_down &block
20
- self.should have_down, &block
21
- end
22
- alias_method :down, :check_down
23
-
24
- def check_create_table name, &block
25
- self.should create_table name, &block
26
- end
27
- alias_method :creates_table, :check_create_table
28
-
29
- def check_change_table name, &block
30
- self.should change_table name, &block
31
- end
32
- alias_method :changes_table, :check_change_table
33
-
34
- def check_drop_table name
35
- self.should drop_table name, &block
36
- end
37
- alias_method :drops_table, :check_drop_table
38
-
39
- def check_rename_table name
40
- self.should rename_table name, &block
41
- end
42
- alias_method :renames_table, :check_rename_table
43
-
44
- def check_remove_column name
45
- self.should remove_colum name, &block
46
- end
47
- alias_method :removes_column, :check_remove_column
48
-
49
- def check_add_column name, type='string'
50
- self.should add_column name, type, &block
51
- end
52
- alias_method :adds_column, :check_add_column
53
-
54
- def check_change_column name, type='string'
55
- self.should change_column name, type, &block
56
- end
57
- alias_method :changes_column, :check_change_column
58
-
59
- def check_add_tbl_column tbl_name, name, type='string'
60
- self.should add_tbl_column tbl_name, name, type
61
- end
62
- alias_method :adds_tbl_column, :check_add_tbl_column
63
-
64
- def check_change_tbl_column tbl_name, name, type='string'
65
- self.should change_tbl_column tbl_name, name, type
66
- end
67
- alias_method :changes_tbl_column, :check_change_tbl_column
68
-
69
- def check_rename_tbl_column tbl_name, new_name
70
- self.should rename_tbl_column tbl_name, new_name
71
- end
72
- alias_method :renames_tbl_column, :check_rename_tbl_column
73
-
74
- def check_remove_tbl_column tbl_name, name
75
- self.should remove_tbl_column tbl_name, name
76
- end
77
- alias_method :removes_tbl_column, :check_remove_tbl_column
78
-
79
- def check_add_tbl_index tbl_name, name
80
- self.should add_tbl_index tbl_name, name
81
- end
82
- alias_method :adds_tbl_index, :check_add_tbl_index
83
-
84
- def check_remove_tbl_index tbl_name, name
85
- self.should remove_tbl_index tbl_name, name
86
- end
87
- alias_method :removes_tbl_index, :check_remove_tbl_index
88
- end
89
- end