generator-spec 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +53 -37
- data/VERSION +1 -1
- data/lib/{rspec_for_generators.rb → generator_spec.rb} +1 -1
- data/lib/generator_spec/extensions/core_ext.rb +17 -0
- data/lib/{rspec_for_generators/rails_spec_helper.rb → generator_spec/helpers/configure_rails.rb} +0 -4
- data/lib/{rspec_for_generators → generator_spec/helpers}/migration_helper.rb +0 -0
- data/lib/generator_spec/main.rb +42 -0
- data/lib/generator_spec/matchers/content/content_matcher.rb +21 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_block.rb +17 -8
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_call.rb +6 -6
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_calls.rb +5 -5
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_class.rb +14 -6
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_method.rb +17 -8
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_module.rb +7 -6
- data/lib/generator_spec/matchers/content/have_region.rb +49 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/have_subclass.rb +19 -7
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/include_module.rb +5 -5
- data/lib/{rspec_for_generators → generator_spec}/matchers/content/inherit_from.rb +7 -3
- data/lib/{rspec_for_generators → generator_spec}/matchers/file/generate_directory.rb +1 -1
- data/lib/{rspec_for_generators → generator_spec}/matchers/file/generate_file.rb +6 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/file/generate_migration.rb +1 -1
- data/lib/{rspec_for_generators → generator_spec}/matchers/helpers/content.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/helpers/file.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/helpers/migration.rb +1 -1
- data/lib/{rspec_for_generators → generator_spec}/matchers/migration/have_column.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/migration/have_index.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/migration/have_table.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/migration/have_tbl_column.rb +0 -0
- data/lib/{rspec_for_generators → generator_spec}/matchers/migration/have_up_down.rb +0 -0
- data/lib/generator_spec/rails_helpers/rails_app.rb +159 -0
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_controller.rb +4 -2
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_helper.rb +4 -2
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_mailer.rb +4 -2
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_migration.rb +1 -1
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_model.rb +4 -2
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_observer.rb +4 -2
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_orm.rb +37 -17
- data/lib/{rspec_for_generators → generator_spec}/rails_helpers/rails_view.rb +3 -1
- data/lib/generator_spec/require_generator.rb +67 -0
- data/lib/generator_spec/rspec_generator/configure.rb +51 -0
- data/lib/generator_spec/rspec_generator/generator_util.rb +57 -0
- data/lib/generator_spec/rspec_generator/routes.rb +2 -0
- data/lib/generator_spec/rspec_generator/test_case.rb +25 -0
- data/spec/{rspec_for_generators → generator_spec}/controller_generator_spec.rb +0 -0
- data/spec/{rspec_for_generators → generator_spec}/helper_generator_spec.rb +10 -10
- data/spec/{rspec_for_generators → generator_spec}/migration_generator_spec.rb +0 -0
- data/spec/{rspec_for_generators → generator_spec}/model_generator_spec.rb +0 -0
- data/spec/{rspec_for_generators → generator_spec}/observer_generator_spec.rb +0 -0
- data/spec/{rspec_for_generators → generator_spec}/view_generator_spec.rb +0 -0
- data/spec/spec_helper.rb +12 -9
- metadata +55 -51
- data/generator-spec.gemspec +0 -128
- data/lib/rspec_for_generators/fixtures/routes.rb +0 -2
- data/lib/rspec_for_generators/generator_spec_helper.rb +0 -151
- data/lib/rspec_for_generators/main.rb +0 -19
- data/lib/rspec_for_generators/rails_helpers/rails_app.rb +0 -119
- data/lib/rspec_for_generators/rspec_test_case.rb +0 -26
@@ -6,8 +6,8 @@
|
|
6
6
|
# say_hello_file_content.should have_method "hello"
|
7
7
|
#
|
8
8
|
module RSpec::RubyContentMatchers
|
9
|
-
class HaveMethod
|
10
|
-
attr_reader :method, :type
|
9
|
+
class HaveMethod < RSpec::RubyContentMatcher
|
10
|
+
attr_reader :method, :type
|
11
11
|
|
12
12
|
def initialize(method, type=nil)
|
13
13
|
@method = method.to_s
|
@@ -15,12 +15,12 @@ module RSpec::RubyContentMatchers
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def matches?(content)
|
18
|
-
|
18
|
+
super
|
19
19
|
match_res = case type
|
20
20
|
when :class
|
21
|
-
content =~ /def\s+self.#{method}
|
21
|
+
content =~ /def\s+self.#{method}#{args_expr}(.*?)#{end_expr}/m
|
22
22
|
else
|
23
|
-
content =~ /def\s+#{method}
|
23
|
+
content =~ /def\s+#{method}#{args_expr}(.*?)#{end_expr}/m
|
24
24
|
end
|
25
25
|
if block_given? && $2
|
26
26
|
ruby_content = $2.strip.extend(RSpec::RubyContent::Helpers)
|
@@ -31,17 +31,26 @@ module RSpec::RubyContentMatchers
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def failure_message
|
34
|
-
|
34
|
+
super
|
35
35
|
return "Expected there to be the class method #{method}, but there wasn't" if type == :class
|
36
36
|
"Expected there to be the method #{method}, but there wasn't"
|
37
37
|
end
|
38
38
|
|
39
39
|
def negative_failure_message
|
40
|
-
|
40
|
+
super
|
41
41
|
return "Did not expect there to be the class method #{method}, but there was" if type == :class
|
42
42
|
"Did not expect there to be the method #{method}, but there was"
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
47
|
+
def args_expr
|
48
|
+
'\s*(\(.+\))?'
|
49
|
+
end
|
50
|
+
|
51
|
+
def end_expr
|
52
|
+
"(def|end|# #{method})"
|
53
|
+
end
|
45
54
|
end
|
46
55
|
|
47
56
|
def have_method(method, type = nil)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module RSpec::RubyContentMatchers
|
2
|
-
class HaveModule
|
3
|
-
attr_reader :module_name
|
2
|
+
class HaveModule < RSpec::RubyContentMatcher
|
3
|
+
attr_reader :module_name
|
4
4
|
|
5
5
|
def initialize(module_name)
|
6
6
|
@module_name = module_name.to_s.camelize
|
7
7
|
end
|
8
8
|
|
9
9
|
def matches?(content)
|
10
|
-
|
10
|
+
super
|
11
11
|
match_res =~ /module\s+#{module_name}\s+(.*)end/m
|
12
12
|
if block_given? && match_res
|
13
13
|
ruby_content = $2.strip.extend(RSpec::RubyContent::Helpers)
|
@@ -18,12 +18,12 @@ module RSpec::RubyContentMatchers
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def failure_message
|
21
|
-
|
21
|
+
super
|
22
22
|
"Expected there to be the module #{module_name}"
|
23
23
|
end
|
24
24
|
|
25
25
|
def negative_failure_message
|
26
|
-
|
26
|
+
super
|
27
27
|
"Did no expected there to be the module #{module_name}"
|
28
28
|
end
|
29
29
|
|
@@ -31,5 +31,6 @@ module RSpec::RubyContentMatchers
|
|
31
31
|
|
32
32
|
def have_module(module_name)
|
33
33
|
HaveModule.new(module_name)
|
34
|
-
end
|
34
|
+
end
|
35
|
+
alias_method :be_module, :have_module
|
35
36
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module RSpec::RubyContentMatchers
|
2
|
+
class HaveRegion < RSpec::RubyContentMatcher
|
3
|
+
attr_reader :region
|
4
|
+
|
5
|
+
def initialize(region)
|
6
|
+
@region = region.to_s
|
7
|
+
end
|
8
|
+
|
9
|
+
def matches?(content)
|
10
|
+
super
|
11
|
+
match_res = (content =~ /#{region}(.*)#{end_epxr}/m)
|
12
|
+
if block_given? && $1
|
13
|
+
ruby_content = $1.strip.extend(RSpec::RubyContent::Helpers)
|
14
|
+
yield ruby_content
|
15
|
+
end
|
16
|
+
match_res
|
17
|
+
end
|
18
|
+
|
19
|
+
def failure_message
|
20
|
+
super
|
21
|
+
"Expected there to be a #{region} region"
|
22
|
+
end
|
23
|
+
|
24
|
+
def negative_failure_message
|
25
|
+
super
|
26
|
+
"Did no expected there to be a #{region} region"
|
27
|
+
end
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
def end_expr
|
32
|
+
'(private|protected|public|$)'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def have_public
|
37
|
+
HaveRegion.new :public
|
38
|
+
end
|
39
|
+
|
40
|
+
def have_protected
|
41
|
+
HaveRegion.new :protected
|
42
|
+
end
|
43
|
+
|
44
|
+
def have_private
|
45
|
+
HaveRegion.new :private
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module RSpec::RubyContentMatchers
|
2
|
-
class HaveSubclass
|
3
|
-
attr_reader :klass, :superclass, :type
|
2
|
+
class HaveSubclass < RSpec::RubyContentMatcher
|
3
|
+
attr_reader :klass, :superclass, :type
|
4
4
|
|
5
5
|
def initialize(klass, superclass, type=nil)
|
6
6
|
@klass = klass.to_s.camelize
|
@@ -9,8 +9,8 @@ module RSpec::RubyContentMatchers
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def matches?(content)
|
12
|
-
|
13
|
-
match_res = (content =~ /class\s+#{klass}#{type}\s+<\s+#{superclass}(.*)
|
12
|
+
super
|
13
|
+
match_res = (content =~ /class\s+#{klass}#{type}\s+<\s+#{superclass}(.*)#{end_expr}/m)
|
14
14
|
if block_given? && $1
|
15
15
|
ruby_content = $1.strip.extend(RSpec::RubyContent::Helpers)
|
16
16
|
yield ruby_content
|
@@ -20,25 +20,37 @@ module RSpec::RubyContentMatchers
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def failure_message
|
23
|
-
|
23
|
+
super
|
24
24
|
"Expected there to be the subclass #{klass} of #{superclass}"
|
25
25
|
end
|
26
26
|
|
27
27
|
def negative_failure_message
|
28
|
-
|
28
|
+
super
|
29
29
|
"Did no expected there to be the subclass #{klass} of #{superclass}"
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def end_expr
|
35
|
+
"(end$|# #{klass})"
|
30
36
|
end
|
37
|
+
|
31
38
|
end
|
32
39
|
|
33
|
-
def
|
40
|
+
def have_subclass(klass, superclass, type=nil)
|
34
41
|
HaveSubclass.new(klass, superclass, type)
|
35
42
|
end
|
43
|
+
alias_method :be_subclass, :have_subclass
|
36
44
|
|
37
45
|
def have_observer_class(klass)
|
38
46
|
HaveSubclass.new(klass, 'ActiveRecord::Observer', :observer)
|
39
47
|
end
|
48
|
+
alias_method :be_observer, :have_observer_class
|
49
|
+
alias_method :be_observer_class, :have_observer_class
|
50
|
+
|
40
51
|
|
41
52
|
def have_migration(klass)
|
42
53
|
HaveSubclass.new(klass, 'ActiveRecord::Migration')
|
43
54
|
end
|
55
|
+
alias_method :be_migration, :have_migration
|
44
56
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module RSpec::RubyContentMatchers
|
2
|
-
class IncludeModule
|
3
|
-
attr_reader :module_name
|
2
|
+
class IncludeModule < RSpec::RubyContentMatcher
|
3
|
+
attr_reader :module_name
|
4
4
|
|
5
5
|
def initialize module_name
|
6
6
|
@module_name = module_name.to_s.camelize
|
7
7
|
end
|
8
8
|
|
9
9
|
def matches?(content)
|
10
|
-
|
10
|
+
super
|
11
11
|
match_res = (content =~ /include\s+#{module_name}/)
|
12
12
|
if block_given? && match_res
|
13
13
|
ruby_content = content.extend(RSpec::RubyContent::Helpers)
|
@@ -18,12 +18,12 @@ module RSpec::RubyContentMatchers
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def failure_message
|
21
|
-
|
21
|
+
super
|
22
22
|
"Expected there to be an inclusion of module #{module_name}"
|
23
23
|
end
|
24
24
|
|
25
25
|
def negative_failure_message
|
26
|
-
|
26
|
+
super
|
27
27
|
"Did not expect there to be an inclusion of module #{module_name}"
|
28
28
|
end
|
29
29
|
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module RSpec::RubyContentMatchers
|
2
|
-
class InheritFrom
|
2
|
+
class InheritFrom < RSpec::RubyContentMatcher
|
3
3
|
attr_reader :klass
|
4
4
|
|
5
5
|
def initialize klass
|
6
6
|
@klass = klass.to_s.camelize
|
7
7
|
end
|
8
8
|
|
9
|
-
def matches?(content)
|
9
|
+
def matches?(content)
|
10
|
+
super
|
10
11
|
match_res =~ /class\s+(.*?)<\s+#{klass}(.*)end/
|
11
12
|
if block_given? && match_res
|
12
13
|
ruby_content = $2.strip.extend(RSpec::RubyContent::Helpers)
|
@@ -17,17 +18,20 @@ module RSpec::RubyContentMatchers
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def failure_message
|
21
|
+
super
|
20
22
|
"Expected the class to inherit from #{klass}"
|
21
23
|
end
|
22
24
|
|
23
25
|
def negative_failure_message
|
26
|
+
super
|
24
27
|
"Did not expect the class to inherit from #{klass}"
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
28
31
|
def inherit_from(klass)
|
29
32
|
InheritFrom.new(klass)
|
30
|
-
end
|
33
|
+
end
|
34
|
+
alias_method :be_subclass_of, :inherit_from
|
31
35
|
|
32
36
|
def be_active_record
|
33
37
|
InheritFrom.new('ActiveRecord::Base')
|
@@ -80,26 +80,32 @@ module RSpec::FileMatchers
|
|
80
80
|
def generate_file(relative, type = nil)
|
81
81
|
GenerateFile.new(relative, type)
|
82
82
|
end
|
83
|
+
alias_method :have_file, :generate_file
|
83
84
|
|
84
85
|
def generate_model(relative)
|
85
86
|
GenerateFile.new(relative, :model)
|
86
87
|
end
|
88
|
+
alias_method :have_model, :generate_model
|
87
89
|
|
88
90
|
def generate_controller(relative)
|
89
91
|
puts "Generate controller: #{relative}"
|
90
92
|
GenerateFile.new(relative, :controller)
|
91
93
|
end
|
94
|
+
alias_method :have_controller, :generate_controller
|
92
95
|
|
93
96
|
def generate_helper(relative)
|
94
97
|
GenerateFile.new(relative, :helper)
|
95
98
|
end
|
99
|
+
alias_method :have_helper, :generate_helper
|
96
100
|
|
97
101
|
def generate_view(relative, action, ext)
|
98
102
|
GenerateFile.new("#{relative}/#{action}.#{ext}", :view)
|
99
103
|
end
|
104
|
+
alias_method :have_view, :generate_view
|
100
105
|
|
101
106
|
def generate_observer(relative)
|
102
107
|
GenerateFile.new(relative, :observer)
|
103
108
|
end
|
109
|
+
alias_method :have_observer, :generate_observer
|
104
110
|
end
|
105
111
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,159 @@
|
|
1
|
+
module RSpec::Rails
|
2
|
+
module App
|
3
|
+
def root_dir
|
4
|
+
::Rails.root
|
5
|
+
end
|
6
|
+
|
7
|
+
def app_dir
|
8
|
+
File.join(root_dir, 'app')
|
9
|
+
end
|
10
|
+
|
11
|
+
def config_dir
|
12
|
+
File.join(root_dir, 'config')
|
13
|
+
end
|
14
|
+
|
15
|
+
def db_dir
|
16
|
+
File.join(root_dir, 'db')
|
17
|
+
end
|
18
|
+
|
19
|
+
def locale_dir
|
20
|
+
File.join(root_dir, 'public')
|
21
|
+
end
|
22
|
+
|
23
|
+
def model_dir
|
24
|
+
File.join(app_dir, 'models')
|
25
|
+
end
|
26
|
+
|
27
|
+
def observer_dir
|
28
|
+
model_dir
|
29
|
+
end
|
30
|
+
|
31
|
+
def controller_dir
|
32
|
+
File.join(app_dir, 'controllers')
|
33
|
+
end
|
34
|
+
|
35
|
+
def mailer_dir
|
36
|
+
File.join(app_dir, 'mailers')
|
37
|
+
end
|
38
|
+
|
39
|
+
def migration_dir
|
40
|
+
File.join(db_dir, 'migrations')
|
41
|
+
end
|
42
|
+
|
43
|
+
def helper_dir
|
44
|
+
File.join(app_dir, 'helpers')
|
45
|
+
end
|
46
|
+
|
47
|
+
def view_dir
|
48
|
+
File.join(app_dir, 'views')
|
49
|
+
end
|
50
|
+
|
51
|
+
def initializer_dir
|
52
|
+
File.join(config_dir, 'initializers')
|
53
|
+
end
|
54
|
+
|
55
|
+
def migration_dir
|
56
|
+
File.join(db_dir, 'migrations')
|
57
|
+
end
|
58
|
+
|
59
|
+
def locale_dir
|
60
|
+
File.join(config_dir, 'locales')
|
61
|
+
end
|
62
|
+
|
63
|
+
def stylesheet_dir
|
64
|
+
File.join(public_dir, 'stylesheets')
|
65
|
+
end
|
66
|
+
|
67
|
+
def javascript_dir
|
68
|
+
File.join(public_dir, 'javascripts')
|
69
|
+
end
|
70
|
+
|
71
|
+
def all_files
|
72
|
+
rails_files root_dir
|
73
|
+
end
|
74
|
+
|
75
|
+
def app_files
|
76
|
+
rails_app_files
|
77
|
+
end
|
78
|
+
|
79
|
+
def model_files
|
80
|
+
rails_app_files :models
|
81
|
+
end
|
82
|
+
|
83
|
+
def controller_files
|
84
|
+
rails_app_files :controllers
|
85
|
+
end
|
86
|
+
|
87
|
+
def mailer_files
|
88
|
+
rails_app_files :mailers
|
89
|
+
end
|
90
|
+
|
91
|
+
def helper_files
|
92
|
+
rails_app_files :helpers
|
93
|
+
end
|
94
|
+
|
95
|
+
def observer_files
|
96
|
+
rails_app_files :models, '**/*_observer.rb'
|
97
|
+
end
|
98
|
+
|
99
|
+
def view_files
|
100
|
+
rails_app_files :views
|
101
|
+
end
|
102
|
+
|
103
|
+
def view_files_html
|
104
|
+
rails_app_files :views, '**/*.html*'
|
105
|
+
end
|
106
|
+
|
107
|
+
def view_files_haml
|
108
|
+
rails_app_files :views, '**/*.haml*'
|
109
|
+
end
|
110
|
+
|
111
|
+
def initializer_files
|
112
|
+
rails_files initializer_dir
|
113
|
+
end
|
114
|
+
|
115
|
+
def db_files
|
116
|
+
rails_files db_dir
|
117
|
+
end
|
118
|
+
|
119
|
+
def migration_files
|
120
|
+
rails_files migration_dir
|
121
|
+
end
|
122
|
+
|
123
|
+
def locale_files
|
124
|
+
rails_files locale_dir, '**/*.yml'
|
125
|
+
end
|
126
|
+
|
127
|
+
def javascript_files
|
128
|
+
rails_files javascript_dir, '**/*.js'
|
129
|
+
end
|
130
|
+
|
131
|
+
def css_files
|
132
|
+
rails_files stylesheet_dir, '**/*.css'
|
133
|
+
end
|
134
|
+
|
135
|
+
def sass_files
|
136
|
+
rails_files stylesheet_dir, '**/*.sass'
|
137
|
+
end
|
138
|
+
|
139
|
+
protected
|
140
|
+
|
141
|
+
RB_FILES = '**/*.rb'
|
142
|
+
|
143
|
+
def rails_files dir, type=nil, pattern=nil
|
144
|
+
path = case type
|
145
|
+
when nil
|
146
|
+
"#{dir}/#{RB_FILES}"
|
147
|
+
when String
|
148
|
+
"#{dir}/#{type}"
|
149
|
+
when Symbol
|
150
|
+
pattern ? "#{dir}/#{type}/#{pattern}" : "#{dir}/#{type}"
|
151
|
+
end
|
152
|
+
FileList[path]
|
153
|
+
end
|
154
|
+
|
155
|
+
def rails_app_files type=nil, pattern='**/*.rb'
|
156
|
+
rails_files :app, type, pattern
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|