rails_best_practices 1.9.0 → 1.9.1
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/.travis.yml +4 -1
- data/Gemfile +0 -3
- data/Gemfile.lock +10 -9
- data/README.md +2 -0
- data/lib/rails_best_practices/analyzer.rb +40 -21
- data/lib/rails_best_practices/core.rb +1 -0
- data/lib/rails_best_practices/core/check.rb +12 -0
- data/lib/rails_best_practices/core/configs.rb +7 -0
- data/lib/rails_best_practices/core/error.rb +2 -1
- data/lib/rails_best_practices/core/routes.rb +11 -5
- data/lib/rails_best_practices/core/runner.rb +6 -2
- data/lib/rails_best_practices/core_ext/sexp.rb +3 -1
- data/lib/rails_best_practices/prepares.rb +5 -0
- data/lib/rails_best_practices/prepares/config_prepare.rb +21 -0
- data/lib/rails_best_practices/prepares/route_prepare.rb +24 -7
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +11 -3
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +7 -3
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +1 -0
- data/spec/rails_best_practices/analyzer_spec.rb +52 -32
- data/spec/rails_best_practices/core/check_spec.rb +64 -45
- data/spec/rails_best_practices/core/checking_visitor_spec.rb +65 -64
- data/spec/rails_best_practices/core/configs_spec.rb +7 -0
- data/spec/rails_best_practices/core/controllers_spec.rb +4 -2
- data/spec/rails_best_practices/core/error_spec.rb +28 -22
- data/spec/rails_best_practices/core/helpers_spec.rb +4 -2
- data/spec/rails_best_practices/core/klasses_spec.rb +8 -6
- data/spec/rails_best_practices/core/mailers_spec.rb +4 -2
- data/spec/rails_best_practices/core/methods_spec.rb +37 -35
- data/spec/rails_best_practices/core/model_associations_spec.rb +17 -15
- data/spec/rails_best_practices/core/model_attributes_spec.rb +17 -15
- data/spec/rails_best_practices/core/models_spec.rb +4 -2
- data/spec/rails_best_practices/core/modules_spec.rb +21 -19
- data/spec/rails_best_practices/core/nil_spec.rb +23 -21
- data/spec/rails_best_practices/core/routes_spec.rb +21 -14
- data/spec/rails_best_practices/core/runner_spec.rb +17 -15
- data/spec/rails_best_practices/core_ext/sexp_spec.rb +32 -7
- data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +35 -31
- data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +35 -31
- data/spec/rails_best_practices/prepares/config_prepare_spec.rb +24 -0
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +122 -123
- data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +36 -32
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +12 -8
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +326 -322
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +619 -573
- data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +25 -21
- data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +85 -87
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +224 -222
- data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +30 -26
- data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +79 -75
- data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +76 -72
- data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +138 -140
- data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +38 -34
- data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +22 -18
- data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +57 -53
- data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +62 -63
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +51 -50
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +140 -136
- data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +48 -44
- data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +42 -38
- data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +151 -149
- data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +86 -55
- data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +23 -19
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +290 -286
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +76 -72
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +601 -597
- data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +55 -54
- data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +34 -30
- data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +288 -289
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +59 -55
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +73 -69
- data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +89 -98
- data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +52 -52
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +192 -190
- data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +114 -121
- data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +189 -190
- data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +97 -93
- data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +146 -151
- data/spec/spec_helper.rb +11 -20
- metadata +42 -26
- data/.watchr.example +0 -65
@@ -48,19 +48,35 @@ describe Sexp do
|
|
48
48
|
it "should get the call nodes with subject current_user" do
|
49
49
|
nodes = []
|
50
50
|
@node.grep_nodes(:sexp_type => :call, :subject => "current_user") { |node| nodes << node }
|
51
|
-
|
51
|
+
if RUBY_VERSION == "1.9.2"
|
52
|
+
nodes.should == [s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
53
|
+
else
|
54
|
+
nodes.should == [s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
55
|
+
end
|
52
56
|
end
|
53
57
|
|
54
58
|
it "should get the call nodes with different messages" do
|
55
59
|
nodes = []
|
56
60
|
@node.grep_nodes(:sexp_type => :call, :message => ["posts", "find"]) { |node| nodes << node }
|
57
|
-
|
61
|
+
if RUBY_VERSION == "1.9.2"
|
62
|
+
nodes.should == [s(:call, s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21))), :".", s(:@ident, "find", s(2, 27))), s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
63
|
+
else
|
64
|
+
nodes.should == [s(:call, s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21))), :".", s(:@ident, "find", s(2, 27))), s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
65
|
+
end
|
58
66
|
end
|
59
67
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
68
|
+
if RUBY_VERSION == "1.9.2"
|
69
|
+
it "should get the var_ref node with to_s" do
|
70
|
+
nodes = []
|
71
|
+
@node.grep_nodes(:sexp_type => :var_ref, :to_s => "current_user") { |node| nodes << node }
|
72
|
+
nodes.should == [s(:var_ref, s(:@ident, "current_user", s(2, 8)))]
|
73
|
+
end
|
74
|
+
else
|
75
|
+
it "should get the vcall node with to_s" do
|
76
|
+
nodes = []
|
77
|
+
@node.grep_nodes(:sexp_type => :vcall, :to_s => "current_user") { |node| nodes << node }
|
78
|
+
nodes.should == [s(:vcall, s(:@ident, "current_user", s(2, 8)))]
|
79
|
+
end
|
64
80
|
end
|
65
81
|
end
|
66
82
|
|
@@ -76,7 +92,11 @@ describe Sexp do
|
|
76
92
|
|
77
93
|
it "should get first node with empty argument" do
|
78
94
|
node = @node.grep_node(:sexp_type => :call, :subject => "current_user")
|
79
|
-
|
95
|
+
if RUBY_VERSION == "1.9.2"
|
96
|
+
node.should == s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))
|
97
|
+
else
|
98
|
+
node.should == s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))
|
99
|
+
end
|
80
100
|
end
|
81
101
|
end
|
82
102
|
|
@@ -525,6 +545,11 @@ describe Sexp do
|
|
525
545
|
node = parse_content("{first_name: 'Richard'}").grep_node(:sexp_type => :@label)
|
526
546
|
node.to_s.should == "first_name"
|
527
547
|
end
|
548
|
+
|
549
|
+
it "should get to_s for call" do
|
550
|
+
node = parse_content("current_user.post").grep_node(:sexp_type => :call)
|
551
|
+
node.to_s.should == "current_user.post"
|
552
|
+
end
|
528
553
|
end
|
529
554
|
|
530
555
|
describe "const?" do
|
@@ -1,39 +1,43 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
module RailsBestPractices
|
4
|
+
module Lexicals
|
5
|
+
describe RemoveTabCheck do
|
6
|
+
let(:runner) { Core::Runner.new(:lexicals => RemoveTabCheck.new) }
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
it "should remove tab" do
|
9
|
+
content =<<-EOF
|
10
|
+
class User < ActiveRecord::Base
|
11
|
+
has_many :projects
|
12
|
+
end
|
13
|
+
EOF
|
14
|
+
content.gsub!("\n", "\t\n")
|
15
|
+
runner.lexical('app/models/user.rb', content)
|
16
|
+
runner.should have(1).errors
|
17
|
+
runner.errors[0].to_s.should == "app/models/user.rb:1 - remove tab, use spaces instead"
|
18
|
+
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
\t
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
it "should remove tab with third line" do
|
21
|
+
content =<<-EOF
|
22
|
+
class User < ActiveRecord::Base
|
23
|
+
has_many :projects
|
24
|
+
\t
|
25
|
+
end
|
26
|
+
EOF
|
27
|
+
runner.lexical('app/models/user.rb', content)
|
28
|
+
runner.should have(1).errors
|
29
|
+
runner.errors[0].to_s.should == "app/models/user.rb:3 - remove tab, use spaces instead"
|
30
|
+
end
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
it "should not remove trailing whitespace" do
|
33
|
+
content =<<-EOF
|
34
|
+
class User < ActiveRecord::Base
|
35
|
+
has_many :projects
|
36
|
+
end
|
37
|
+
EOF
|
38
|
+
runner.lexical('app/models/user.rb', content)
|
39
|
+
runner.should have(0).errors
|
40
|
+
end
|
34
41
|
end
|
35
|
-
EOF
|
36
|
-
runner.lexical('app/models/user.rb', content)
|
37
|
-
runner.should have(0).errors
|
38
42
|
end
|
39
43
|
end
|
@@ -1,39 +1,43 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
module RailsBestPractices
|
4
|
+
module Lexicals
|
5
|
+
describe RemoveTrailingWhitespaceCheck do
|
6
|
+
let(:runner) { Core::Runner.new(:lexicals => RemoveTrailingWhitespaceCheck.new) }
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
it "should remove trailing whitespace" do
|
9
|
+
content =<<-EOF
|
10
|
+
class User < ActiveRecord::Base
|
11
|
+
has_many :projects
|
12
|
+
end
|
13
|
+
EOF
|
14
|
+
content.gsub!("\n", " \n")
|
15
|
+
runner.lexical('app/models/user.rb', content)
|
16
|
+
runner.should have(1).errors
|
17
|
+
runner.errors[0].to_s.should == "app/models/user.rb:1 - remove trailing whitespace"
|
18
|
+
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
it "should remove whitespace with third line" do
|
21
|
+
content =<<-EOF
|
22
|
+
class User < ActiveRecord::Base
|
23
|
+
has_many :projects
|
24
|
+
end
|
25
|
+
EOF
|
26
|
+
content.gsub!("d\n", "d \n")
|
27
|
+
runner.lexical('app/models/user.rb', content)
|
28
|
+
runner.should have(1).errors
|
29
|
+
runner.errors[0].to_s.should == "app/models/user.rb:3 - remove trailing whitespace"
|
30
|
+
end
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
it "should not remove trailing whitespace" do
|
33
|
+
content =<<-EOF
|
34
|
+
class User < ActiveRecord::Base
|
35
|
+
has_many :projects
|
36
|
+
end
|
37
|
+
EOF
|
38
|
+
runner.lexical('app/models/user.rb', content)
|
39
|
+
runner.should have(0).errors
|
40
|
+
end
|
34
41
|
end
|
35
|
-
EOF
|
36
|
-
runner.lexical('app/models/user.rb', content)
|
37
|
-
runner.should have(0).errors
|
38
42
|
end
|
39
43
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module RailsBestPractices
|
4
|
+
module Prepares
|
5
|
+
describe ConfigPrepare do
|
6
|
+
let(:runner) { Core::Runner.new(:prepares => ConfigPrepare.new) }
|
7
|
+
|
8
|
+
context "configs" do
|
9
|
+
it "should parse configs" do
|
10
|
+
content =<<-EOF
|
11
|
+
module RailsBestPracticesCom
|
12
|
+
class Application < Rails::Application
|
13
|
+
config.active_record.whitelist_attributes = true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
EOF
|
17
|
+
runner.prepare('config/application.rb', content)
|
18
|
+
configs = Prepares.configs
|
19
|
+
configs["config.active_record.whitelist_attributes"].should == "true"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,146 +1,145 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
module RailsBestPractices
|
4
|
+
module Prepares
|
5
|
+
describe ControllerPrepare do
|
6
|
+
let(:runner) { Core::Runner.new(:prepares => [ControllerPrepare.new, HelperPrepare.new]) }
|
7
|
+
before(:each) { runner.whiny = true }
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
context "methods" do
|
13
|
-
it "should parse controller methods" do
|
14
|
-
content =<<-EOF
|
15
|
-
class PostsController < ApplicationController
|
16
|
-
def index; end
|
17
|
-
def show; 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").map(&:method_name).should == ["index", "show"]
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should parse model methods with access control" do
|
26
|
-
content =<<-EOF
|
27
|
-
class PostsController < ApplicationController
|
28
|
-
def index; end
|
29
|
-
def show; end
|
30
|
-
protected
|
31
|
-
def resources; end
|
32
|
-
private
|
33
|
-
def resource; end
|
34
|
-
end
|
35
|
-
EOF
|
36
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
37
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
38
|
-
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "resources", "resource"]
|
39
|
-
methods.get_methods("PostsController", "public").map(&:method_name).should == ["index", "show"]
|
40
|
-
methods.get_methods("PostsController", "protected").map(&:method_name).should == ["resources"]
|
41
|
-
methods.get_methods("PostsController", "private").map(&:method_name).should == ["resource"]
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should parse controller methods with module ::" do
|
45
|
-
content =<<-EOF
|
46
|
-
class Admin::Blog::PostsController < ApplicationController
|
47
|
-
def index; end
|
48
|
-
def show; end
|
49
|
-
end
|
50
|
-
EOF
|
51
|
-
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
52
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
53
|
-
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should parse controller methods with module" do
|
57
|
-
content =<<-EOF
|
58
|
-
module Admin
|
59
|
-
module Blog
|
9
|
+
context "methods" do
|
10
|
+
it "should parse controller methods" do
|
11
|
+
content =<<-EOF
|
60
12
|
class PostsController < ApplicationController
|
61
13
|
def index; end
|
62
14
|
def show; end
|
63
15
|
end
|
16
|
+
EOF
|
17
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
18
|
+
methods = Prepares.controller_methods
|
19
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show"]
|
64
20
|
end
|
65
|
-
end
|
66
|
-
EOF
|
67
|
-
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
68
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
69
|
-
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
70
|
-
end
|
71
21
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
22
|
+
it "should parse model methods with access control" do
|
23
|
+
content =<<-EOF
|
24
|
+
class PostsController < ApplicationController
|
25
|
+
def index; end
|
26
|
+
def show; end
|
27
|
+
protected
|
28
|
+
def resources; end
|
29
|
+
private
|
30
|
+
def resource; end
|
31
|
+
end
|
32
|
+
EOF
|
33
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
34
|
+
methods = Prepares.controller_methods
|
35
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "resources", "resource"]
|
36
|
+
methods.get_methods("PostsController", "public").map(&:method_name).should == ["index", "show"]
|
37
|
+
methods.get_methods("PostsController", "protected").map(&:method_name).should == ["resources"]
|
38
|
+
methods.get_methods("PostsController", "private").map(&:method_name).should == ["resource"]
|
76
39
|
end
|
77
|
-
EOF
|
78
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
79
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
80
|
-
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
81
|
-
end
|
82
40
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
41
|
+
it "should parse controller methods with module ::" do
|
42
|
+
content =<<-EOF
|
43
|
+
class Admin::Blog::PostsController < ApplicationController
|
44
|
+
def index; end
|
45
|
+
def show; end
|
46
|
+
end
|
47
|
+
EOF
|
48
|
+
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
49
|
+
methods = Prepares.controller_methods
|
50
|
+
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
87
51
|
end
|
88
|
-
EOF
|
89
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
90
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
91
|
-
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show"]
|
92
|
-
end
|
93
52
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
53
|
+
it "should parse controller methods with module" do
|
54
|
+
content =<<-EOF
|
55
|
+
module Admin
|
56
|
+
module Blog
|
57
|
+
class PostsController < ApplicationController
|
58
|
+
def index; end
|
59
|
+
def show; end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
EOF
|
64
|
+
runner.prepare('app/controllers/admin/posts_controller.rb', content)
|
65
|
+
methods = Prepares.controller_methods
|
66
|
+
methods.get_methods("Admin::Blog::PostsController").map(&:method_name).should == ["index", "show"]
|
98
67
|
end
|
99
|
-
EOF
|
100
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
101
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
102
|
-
methods.get_methods("PostsController").map(&:method_name).should == ["index", "new", "create", "edit", "update", "destroy"]
|
103
|
-
end
|
104
68
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
69
|
+
context "inherited_resources" do
|
70
|
+
it "extend inherited_resources" do
|
71
|
+
content =<<-EOF
|
72
|
+
class PostsController < InheritedResources::Base
|
73
|
+
end
|
74
|
+
EOF
|
75
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
76
|
+
methods = Prepares.controller_methods
|
77
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
78
|
+
end
|
79
|
+
|
80
|
+
it "extend inherited_resources with actions" do
|
81
|
+
content =<<-EOF
|
82
|
+
class PostsController < InheritedResources::Base
|
83
|
+
actions :index, :show
|
84
|
+
end
|
85
|
+
EOF
|
86
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
87
|
+
methods = Prepares.controller_methods
|
88
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show"]
|
89
|
+
end
|
90
|
+
|
91
|
+
it "extend inherited_resources with all actions" do
|
92
|
+
content =<<-EOF
|
93
|
+
class PostsController < InheritedResources::Base
|
94
|
+
actions :all, except: [:show]
|
95
|
+
end
|
96
|
+
EOF
|
97
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
98
|
+
methods = Prepares.controller_methods
|
99
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "new", "create", "edit", "update", "destroy"]
|
100
|
+
end
|
101
|
+
|
102
|
+
it "extend inherited_resources with all actions with no arguments" do
|
103
|
+
content =<<-EOF
|
104
|
+
class PostsController < InheritedResources::Base
|
105
|
+
actions :all
|
106
|
+
end
|
107
|
+
EOF
|
108
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
109
|
+
methods = Prepares.controller_methods
|
110
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
111
|
+
end
|
115
112
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
113
|
+
it "DSL inherit_resources" do
|
114
|
+
content =<<-EOF
|
115
|
+
class PostsController
|
116
|
+
inherit_resources
|
117
|
+
end
|
118
|
+
EOF
|
119
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
120
|
+
methods = Prepares.controller_methods
|
121
|
+
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
122
|
+
end
|
120
123
|
end
|
121
|
-
EOF
|
122
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
123
|
-
methods = RailsBestPractices::Prepares.controller_methods
|
124
|
-
methods.get_methods("PostsController").map(&:method_name).should == ["index", "show", "new", "create", "edit", "update", "destroy"]
|
125
124
|
end
|
126
|
-
end
|
127
|
-
end
|
128
125
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
126
|
+
context "helpers" do
|
127
|
+
it "should add helper decendant" do
|
128
|
+
content =<<-EOF
|
129
|
+
module PostsHelper
|
130
|
+
end
|
131
|
+
EOF
|
132
|
+
runner.prepare('app/helpers/posts_helper.rb', content)
|
133
|
+
content =<<-EOF
|
134
|
+
class PostsController
|
135
|
+
include PostsHelper
|
136
|
+
end
|
137
|
+
EOF
|
138
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
139
|
+
helpers = Prepares.helpers
|
140
|
+
helpers.first.decendants.should == ["PostsController"]
|
141
|
+
end
|
139
142
|
end
|
140
|
-
EOF
|
141
|
-
runner.prepare('app/controllers/posts_controller.rb', content)
|
142
|
-
helpers = RailsBestPractices::Prepares.helpers
|
143
|
-
helpers.first.decendants.should == ["PostsController"]
|
144
143
|
end
|
145
144
|
end
|
146
145
|
end
|