rails_best_practices 1.1.0 → 1.2.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.
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/assets/result.html.erb +25 -2
- data/lib/rails_best_practices.rb +20 -9
- data/lib/rails_best_practices/core.rb +1 -0
- data/lib/rails_best_practices/core/check.rb +106 -25
- data/lib/rails_best_practices/core/controllers.rb +2 -1
- data/lib/rails_best_practices/core/error.rb +3 -2
- data/lib/rails_best_practices/core/klasses.rb +34 -0
- data/lib/rails_best_practices/core/mailers.rb +2 -1
- data/lib/rails_best_practices/core/methods.rb +113 -9
- data/lib/rails_best_practices/core/model_associations.rb +17 -0
- data/lib/rails_best_practices/core/model_attributes.rb +16 -0
- data/lib/rails_best_practices/core/models.rb +3 -2
- data/lib/rails_best_practices/core/nil.rb +9 -1
- data/lib/rails_best_practices/core/runner.rb +65 -26
- data/lib/rails_best_practices/core_ext/sexp.rb +57 -0
- data/lib/rails_best_practices/prepares.rb +12 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +13 -8
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +3 -3
- data/lib/rails_best_practices/prepares/model_prepare.rb +44 -16
- data/lib/rails_best_practices/reviews.rb +1 -0
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +5 -2
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +77 -0
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +2 -2
- data/lib/rails_best_practices/reviews/review.rb +1 -1
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.yml +1 -0
- data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +11 -0
- data/spec/rails_best_practices/core/check_spec.rb +22 -0
- data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
- data/spec/rails_best_practices/core/error_spec.rb +1 -1
- data/spec/rails_best_practices/core/klasses_spec.rb +12 -0
- data/spec/rails_best_practices/core/mailers_spec.rb +5 -0
- data/spec/rails_best_practices/core/methods_spec.rb +26 -4
- data/spec/rails_best_practices/core/models_spec.rb +2 -2
- data/spec/rails_best_practices/core/runner_spec.rb +13 -0
- data/spec/rails_best_practices/core_ext/sexp_spec.rb +26 -2
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +72 -60
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +1 -1
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +150 -59
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +20 -3
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +14 -0
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +387 -0
- metadata +15 -3
@@ -26,3 +26,4 @@ require 'rails_best_practices/reviews/simplify_render_in_views_review'
|
|
26
26
|
require 'rails_best_practices/reviews/simplify_render_in_controllers_review'
|
27
27
|
require 'rails_best_practices/reviews/remove_empty_helpers_review'
|
28
28
|
require 'rails_best_practices/reviews/restrict_auto_generated_routes_review'
|
29
|
+
require 'rails_best_practices/reviews/remove_unused_methods_in_models_review'
|
@@ -40,6 +40,7 @@ module RailsBestPractices
|
|
40
40
|
super()
|
41
41
|
@counter = 0
|
42
42
|
@nested_count = options['nested_count'] || 2
|
43
|
+
@shallow_nodes = []
|
43
44
|
end
|
44
45
|
|
45
46
|
# check all method_add_block node.
|
@@ -68,16 +69,18 @@ module RailsBestPractices
|
|
68
69
|
# then check if @counter is greater than or equal to @nested_count,
|
69
70
|
# if so, it is the needless deep nesting.
|
70
71
|
def recursively_check(node)
|
72
|
+
shallow = @shallow_nodes.include? node
|
71
73
|
if [:command_call, :command].include?(node[1].sexp_type) && ["resources", "resource"].include?(node[1].message.to_s)
|
72
74
|
hash_node = node[1].arguments.grep_node(:sexp_type => :bare_assoc_hash)
|
73
|
-
|
75
|
+
shallow = (hash_node && "true" == hash_node.hash_value("shallow").to_s) unless shallow
|
74
76
|
@counter += 1
|
75
77
|
node.block.statements.each do |stmt_node|
|
78
|
+
@shallow_nodes << stmt_node if shallow
|
76
79
|
recursively_check(stmt_node)
|
77
80
|
end
|
78
81
|
@counter -= 1
|
79
82
|
elsif [:command_call, :command].include?(node.sexp_type) && ["resources", "resource"].include?(node.message.to_s)
|
80
|
-
add_error "needless deep nesting (nested_count > #{@nested_count})", @file, node.line if @counter >= @nested_count
|
83
|
+
add_error "needless deep nesting (nested_count > #{@nested_count})", @file, node.line if @counter >= @nested_count && !@shallow_nodes.include?(node)
|
81
84
|
end
|
82
85
|
end
|
83
86
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'rails_best_practices/reviews/review'
|
3
|
+
|
4
|
+
module RailsBestPractices
|
5
|
+
module Reviews
|
6
|
+
class RemoveUnusedMethodsInModelsReview < Review
|
7
|
+
include Klassable
|
8
|
+
include Completeable
|
9
|
+
|
10
|
+
EXCEPT_METHODS = %w(initialize validate to_xml to_json)
|
11
|
+
|
12
|
+
def interesting_nodes
|
13
|
+
[:module, :class, :call, :fcall, :command, :method_add_arg, :var_ref]
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(options={})
|
17
|
+
super()
|
18
|
+
@model_methods = Prepares.model_methods
|
19
|
+
@except_methods = EXCEPT_METHODS + options['except_methods']
|
20
|
+
end
|
21
|
+
|
22
|
+
def start_call(node)
|
23
|
+
mark_used(node.message)
|
24
|
+
end
|
25
|
+
|
26
|
+
def start_fcall(node)
|
27
|
+
mark_used(node.message)
|
28
|
+
end
|
29
|
+
|
30
|
+
def start_var_ref(node)
|
31
|
+
mark_used(node)
|
32
|
+
end
|
33
|
+
|
34
|
+
def start_command(node)
|
35
|
+
unless %w(named_scope scope).include? node.message.to_s
|
36
|
+
mark_used(node.message)
|
37
|
+
node.arguments.all.each { |argument| mark_used(argument) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def start_method_add_arg(node)
|
42
|
+
if "try" == node.message.to_s
|
43
|
+
method_name = node.arguments.all[0].to_s
|
44
|
+
call_method(method_name)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def on_complete
|
49
|
+
@model_methods.get_all_unused_methods.each do |method|
|
50
|
+
if !@except_methods.include?(method.method_name) && method.method_name !~ /=$/
|
51
|
+
add_error "remove unused methods (#{method.class_name}##{method.method_name})", method.file, method.line
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def mark_used(method_node)
|
58
|
+
if :bare_assoc_hash == method_node.sexp_type
|
59
|
+
method_node.hash_values.each { |value_node| mark_used(value_node) }
|
60
|
+
elsif :array == method_node.sexp_type
|
61
|
+
method_node.array_values.each { |value_node| mark_used(value_node) }
|
62
|
+
else
|
63
|
+
method_name = method_node.to_s
|
64
|
+
end
|
65
|
+
call_method(method_name)
|
66
|
+
end
|
67
|
+
|
68
|
+
def call_method(method_name)
|
69
|
+
if @model_methods.has_method?(current_class_name, method_name)
|
70
|
+
@model_methods.get_method(current_class_name, method_name).mark_used
|
71
|
+
end
|
72
|
+
@model_methods.mark_extend_class_method_used(current_class_name, method_name)
|
73
|
+
@model_methods.possible_public_used(method_name)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -68,7 +68,7 @@ module RailsBestPractices
|
|
68
68
|
return unless Prepares.controllers.include? controller_name
|
69
69
|
resources_methods = resources_methods(node)
|
70
70
|
unless resources_methods.all? { |meth| Prepares.controller_methods.has_method?(controller_name, meth) }
|
71
|
-
only_methods = (resources_methods & Prepares.controller_methods.get_methods(controller_name)).map { |meth| ":#{meth}" }.join(", ")
|
71
|
+
only_methods = (resources_methods & Prepares.controller_methods.get_methods(controller_name).map(&:method_name)).map { |meth| ":#{meth}" }.join(", ")
|
72
72
|
add_error "restrict auto-generated routes (:only => [#{only_methods}])"
|
73
73
|
end
|
74
74
|
end
|
@@ -79,7 +79,7 @@ module RailsBestPractices
|
|
79
79
|
return unless Prepares.controllers.include? controller_name
|
80
80
|
resource_methods = resource_methods(node)
|
81
81
|
unless resource_methods.all? { |meth| Prepares.controller_methods.has_method?(controller_name, meth) }
|
82
|
-
only_methods = (resource_methods & Prepares.controller_methods.get_methods(controller_name)).map { |meth| ":#{meth}" }.join(", ")
|
82
|
+
only_methods = (resource_methods & Prepares.controller_methods.get_methods(controller_name).map(&:method_name)).map { |meth| ":#{meth}" }.join(", ")
|
83
83
|
add_error "restrict auto-generated routes (:only => [#{only_methods}])"
|
84
84
|
end
|
85
85
|
end
|
@@ -16,7 +16,7 @@ module RailsBestPractices
|
|
16
16
|
# then save it to as key in @variable_use_count hash, and add the call count (hash value).
|
17
17
|
def remember_variable_use_count(node)
|
18
18
|
variable_node = variable(node)
|
19
|
-
if variable_node
|
19
|
+
if variable_node && "self" != variable_node.to_s
|
20
20
|
variable_use_count[variable_node.to_s] ||= 0
|
21
21
|
variable_use_count[variable_node.to_s] += 1
|
22
22
|
end
|
data/rails_best_practices.yml
CHANGED
@@ -38,4 +38,26 @@ describe RailsBestPractices::Core::Check do
|
|
38
38
|
check.node_end(node)
|
39
39
|
end
|
40
40
|
end
|
41
|
+
|
42
|
+
context "callback" do
|
43
|
+
it "should add callback to start_call" do
|
44
|
+
execute = false
|
45
|
+
check.class.add_callback "start_call" do
|
46
|
+
execute = true
|
47
|
+
end
|
48
|
+
node = stub(:sexp_type => :call)
|
49
|
+
check.node_start(node)
|
50
|
+
execute.should be_true
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should ad callbacks to end_call" do
|
54
|
+
execute = false
|
55
|
+
check.class.add_callback "end_call" do
|
56
|
+
execute = true
|
57
|
+
end
|
58
|
+
node = stub(:sexp_type => :call)
|
59
|
+
check.node_end(node)
|
60
|
+
execute.should be_true
|
61
|
+
end
|
62
|
+
end
|
41
63
|
end
|
@@ -2,6 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe RailsBestPractices::Core::Error do
|
4
4
|
it "should return error with filename, line number and message" do
|
5
|
-
RailsBestPractices::Core::Error.new("app/models/user.rb", 100, "not good").to_s.should == "app/models/user.rb:100 - not good"
|
5
|
+
RailsBestPractices::Core::Error.new("app/models/user.rb", 100, "not good", "BogusReview").to_s.should == "app/models/user.rb:100 - not good"
|
6
6
|
end
|
7
7
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsBestPractices::Core::Klasses do
|
4
|
+
it { should be_a_kind_of Array }
|
5
|
+
|
6
|
+
context "Klass" do
|
7
|
+
it "should get to_s" do
|
8
|
+
klass = RailsBestPractices::Core::Klass.new("BlogPost", "Post", ["Admin"])
|
9
|
+
klass.to_s.should == "Admin::BlogPost"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -6,17 +6,39 @@ describe RailsBestPractices::Core::Methods do
|
|
6
6
|
before :each do
|
7
7
|
methods.add_method("Post", "create")
|
8
8
|
methods.add_method("Post", "destroy")
|
9
|
+
methods.add_method("Post", "save_or_update", {}, "protected")
|
10
|
+
methods.add_method("Post", "find_by_sql", {}, "private")
|
9
11
|
methods.add_method("Comment", "create")
|
10
12
|
end
|
11
13
|
|
12
14
|
it "should get_methods" do
|
13
|
-
methods.get_methods("Post").
|
14
|
-
methods.get_methods("
|
15
|
+
methods.get_methods("Post").map(&:method_name).should == ["create", "destroy", "save_or_update", "find_by_sql"]
|
16
|
+
methods.get_methods("Post", "public").map(&:method_name).should == ["create", "destroy"]
|
17
|
+
methods.get_methods("Post", "protected").map(&:method_name).should == ["save_or_update"]
|
18
|
+
methods.get_methods("Post", "private").map(&:method_name).should == ["find_by_sql"]
|
19
|
+
methods.get_methods("Comment").map(&:method_name).should == ["create"]
|
15
20
|
end
|
16
21
|
|
17
22
|
it "should has_method?" do
|
18
|
-
methods.should be_has_method("Post", "create")
|
19
|
-
methods.should be_has_method("Post", "destroy")
|
23
|
+
methods.should be_has_method("Post", "create", "public")
|
24
|
+
methods.should be_has_method("Post", "destroy", "public")
|
25
|
+
methods.should_not be_has_method("Post", "save_or_update", "public")
|
26
|
+
methods.should be_has_method("Post", "save_or_update", "protected")
|
27
|
+
methods.should_not be_has_method("Post", "find_by_sql", "public")
|
28
|
+
methods.should be_has_method("Post", "find_by_sql", "private")
|
20
29
|
methods.should_not be_has_method("Comment", "destroy")
|
21
30
|
end
|
31
|
+
|
32
|
+
it "should get_method" do
|
33
|
+
methods.get_method("Post", "create", "public").should_not be_nil
|
34
|
+
methods.get_method("Post", "create", "protected").should be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should get_all_unused_methods" do
|
38
|
+
methods.get_method("Comment", "create").mark_used
|
39
|
+
methods.get_all_unused_methods("public").map(&:method_name).should == ["create", "destroy"]
|
40
|
+
methods.get_all_unused_methods("protected").map(&:method_name).should == ["save_or_update"]
|
41
|
+
methods.get_all_unused_methods("private").map(&:method_name).should == ["find_by_sql"]
|
42
|
+
methods.get_all_unused_methods.map(&:method_name).should == ["create", "destroy", "save_or_update", "find_by_sql"]
|
43
|
+
end
|
22
44
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsBestPractices::Core::Runner do
|
4
|
+
|
5
|
+
before { RailsBestPractices::Core::Runner.base_path = 'spec/fixtures/' }
|
6
|
+
|
7
|
+
describe "load_plugin_reviews" do
|
8
|
+
it "should load plugins in lib/rails_best_practices/plugins/reviews" do
|
9
|
+
runner = RailsBestPractices::Core::Runner.new
|
10
|
+
runner.instance_variable_get('@reviews').map(&:class).should include(RailsBestPractices::Plugins::Reviews::NotUseRailsRootReview)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -365,17 +365,29 @@ describe Sexp do
|
|
365
365
|
end
|
366
366
|
|
367
367
|
describe "hash_keys" do
|
368
|
-
it "should get
|
368
|
+
it "should get hash_keys for hash node" do
|
369
369
|
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(:sexp_type => :hash)
|
370
370
|
node.hash_keys.should == ["first_name", "last_name"]
|
371
371
|
end
|
372
372
|
|
373
|
-
it "should get
|
373
|
+
it "should get hash_keys for bare_assoc_hash" do
|
374
374
|
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(:sexp_type => :bare_assoc_hash)
|
375
375
|
node.hash_keys.should == ["first_name", "last_name"]
|
376
376
|
end
|
377
377
|
end
|
378
378
|
|
379
|
+
describe "hash_values" do
|
380
|
+
it "should get hash_values for hash node" do
|
381
|
+
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(:sexp_type => :hash)
|
382
|
+
node.hash_values.map(&:to_s).should == ["Richard", "Huang"]
|
383
|
+
end
|
384
|
+
|
385
|
+
it "should get hash_values for bare_assoc_hash" do
|
386
|
+
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(:sexp_type => :bare_assoc_hash)
|
387
|
+
node.hash_values.map(&:to_s).should == ["Richard", "Huang"]
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
379
391
|
describe "array_size" do
|
380
392
|
it "should get array size" do
|
381
393
|
node = parse_content("['first_name', 'last_name']").grep_node(:sexp_type => :array)
|
@@ -388,6 +400,18 @@ describe Sexp do
|
|
388
400
|
end
|
389
401
|
end
|
390
402
|
|
403
|
+
describe "array_values" do
|
404
|
+
it "should get array values" do
|
405
|
+
node = parse_content("['first_name', 'last_name']").grep_node(:sexp_type => :array)
|
406
|
+
node.array_values.map(&:to_s).should == ["first_name", "last_name"]
|
407
|
+
end
|
408
|
+
|
409
|
+
it "should get empty array values" do
|
410
|
+
node = parse_content("[]").grep_node(:sexp_type => :array)
|
411
|
+
node.array_values.should == []
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
391
415
|
describe "to_object" do
|
392
416
|
it "should to array" do
|
393
417
|
node = parse_content("['first_name', 'last_name']").grep_node(:sexp_type => :array)
|
@@ -7,86 +7,98 @@ describe RailsBestPractices::Prepares::ControllerPrepare do
|
|
7
7
|
runner.whiny = true
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def show
|
17
|
-
end
|
18
|
-
end
|
19
|
-
EOF
|
20
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
21
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
22
|
-
methods.get_methods("PostsController").should == ["index", "show"]
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should parse controller methods with module ::" do
|
26
|
-
content =<<-EOF
|
27
|
-
class Admin::Blog::PostsController < ApplicationController
|
28
|
-
def index
|
29
|
-
end
|
30
|
-
|
31
|
-
def show
|
32
|
-
end
|
33
|
-
end
|
34
|
-
EOF
|
35
|
-
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
36
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
37
|
-
methods.get_methods("Admin::Blog::PostsController").should == ["index", "show"]
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should parse controller methods with module" do
|
41
|
-
content =<<-EOF
|
42
|
-
module Admin
|
43
|
-
module Blog
|
44
|
-
class PostsController < ApplicationController
|
45
|
-
def index
|
46
|
-
end
|
47
|
-
|
48
|
-
def show
|
49
|
-
end
|
50
|
-
end
|
10
|
+
context "methods" do
|
11
|
+
it "should parse controller methods" do
|
12
|
+
content =<<-EOF
|
13
|
+
class PostsController < ApplicationController
|
14
|
+
def index; end
|
15
|
+
def show; end
|
51
16
|
end
|
17
|
+
EOF
|
18
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
19
|
+
methods = RailsBestPractices::Prepares.controller_methods
|
20
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show"]
|
52
21
|
end
|
53
|
-
EOF
|
54
|
-
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
55
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
56
|
-
methods.get_methods("Admin::Blog::PostsController").should == ["index", "show"]
|
57
|
-
end
|
58
22
|
|
59
|
-
|
60
|
-
it "extend inherited_resources" do
|
23
|
+
it "should parse model methods with access control" do
|
61
24
|
content =<<-EOF
|
62
|
-
class PostsController <
|
25
|
+
class PostsController < ApplicationController
|
26
|
+
def index; end
|
27
|
+
def show; end
|
28
|
+
protected
|
29
|
+
def resources; end
|
30
|
+
private
|
31
|
+
def resource; end
|
63
32
|
end
|
64
33
|
EOF
|
65
34
|
runner.prepare('app/controllers/posts_controller.rb', content)
|
66
35
|
methods = RailsBestPractices::Prepares.controller_methods
|
67
|
-
methods.get_methods("PostsController").should == ["index", "show", "
|
36
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "resources", "resource"]
|
37
|
+
methods.get_methods("PostsController", "public").map(&:method_name).should == ["index", "show"]
|
38
|
+
methods.get_methods("PostsController", "protected").map(&:method_name).should == ["resources"]
|
39
|
+
methods.get_methods("PostsController", "private").map(&:method_name).should == ["resource"]
|
68
40
|
end
|
69
41
|
|
70
|
-
it "
|
42
|
+
it "should parse controller methods with module ::" do
|
71
43
|
content =<<-EOF
|
72
|
-
class PostsController <
|
73
|
-
|
44
|
+
class Admin::Blog::PostsController < ApplicationController
|
45
|
+
def index; end
|
46
|
+
def show; end
|
74
47
|
end
|
75
48
|
EOF
|
76
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
49
|
+
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
77
50
|
methods = RailsBestPractices::Prepares.controller_methods
|
78
|
-
methods.get_methods("PostsController").should == ["index", "show"]
|
51
|
+
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
79
52
|
end
|
80
53
|
|
81
|
-
it "
|
54
|
+
it "should parse controller methods with module" do
|
82
55
|
content =<<-EOF
|
83
|
-
|
84
|
-
|
56
|
+
module Admin
|
57
|
+
module Blog
|
58
|
+
class PostsController < ApplicationController
|
59
|
+
def index; end
|
60
|
+
def show; end
|
61
|
+
end
|
62
|
+
end
|
85
63
|
end
|
86
64
|
EOF
|
87
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
65
|
+
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
88
66
|
methods = RailsBestPractices::Prepares.controller_methods
|
89
|
-
methods.get_methods("PostsController").should == ["index", "show"
|
67
|
+
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
68
|
+
end
|
69
|
+
|
70
|
+
context "inherited_resources" do
|
71
|
+
it "extend inherited_resources" do
|
72
|
+
content =<<-EOF
|
73
|
+
class PostsController < InheritedResources::Base
|
74
|
+
end
|
75
|
+
EOF
|
76
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
77
|
+
methods = RailsBestPractices::Prepares.controller_methods
|
78
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
79
|
+
end
|
80
|
+
|
81
|
+
it "extend inherited_resources with actions" do
|
82
|
+
content =<<-EOF
|
83
|
+
class PostsController < InheritedResources::Base
|
84
|
+
actions :index, :show
|
85
|
+
end
|
86
|
+
EOF
|
87
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
88
|
+
methods = RailsBestPractices::Prepares.controller_methods
|
89
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show"]
|
90
|
+
end
|
91
|
+
|
92
|
+
it "DSL inherit_resources" do
|
93
|
+
content =<<-EOF
|
94
|
+
class PostsController
|
95
|
+
inherit_resources
|
96
|
+
end
|
97
|
+
EOF
|
98
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
99
|
+
methods = RailsBestPractices::Prepares.controller_methods
|
100
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
101
|
+
end
|
90
102
|
end
|
91
103
|
end
|
92
104
|
end
|