rails_best_practices 1.9.0 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/.travis.yml +4 -1
  2. data/Gemfile +0 -3
  3. data/Gemfile.lock +10 -9
  4. data/README.md +2 -0
  5. data/lib/rails_best_practices/analyzer.rb +40 -21
  6. data/lib/rails_best_practices/core.rb +1 -0
  7. data/lib/rails_best_practices/core/check.rb +12 -0
  8. data/lib/rails_best_practices/core/configs.rb +7 -0
  9. data/lib/rails_best_practices/core/error.rb +2 -1
  10. data/lib/rails_best_practices/core/routes.rb +11 -5
  11. data/lib/rails_best_practices/core/runner.rb +6 -2
  12. data/lib/rails_best_practices/core_ext/sexp.rb +3 -1
  13. data/lib/rails_best_practices/prepares.rb +5 -0
  14. data/lib/rails_best_practices/prepares/config_prepare.rb +21 -0
  15. data/lib/rails_best_practices/prepares/route_prepare.rb +24 -7
  16. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +11 -3
  17. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +7 -3
  18. data/lib/rails_best_practices/version.rb +1 -1
  19. data/rails_best_practices.gemspec +1 -0
  20. data/spec/rails_best_practices/analyzer_spec.rb +52 -32
  21. data/spec/rails_best_practices/core/check_spec.rb +64 -45
  22. data/spec/rails_best_practices/core/checking_visitor_spec.rb +65 -64
  23. data/spec/rails_best_practices/core/configs_spec.rb +7 -0
  24. data/spec/rails_best_practices/core/controllers_spec.rb +4 -2
  25. data/spec/rails_best_practices/core/error_spec.rb +28 -22
  26. data/spec/rails_best_practices/core/helpers_spec.rb +4 -2
  27. data/spec/rails_best_practices/core/klasses_spec.rb +8 -6
  28. data/spec/rails_best_practices/core/mailers_spec.rb +4 -2
  29. data/spec/rails_best_practices/core/methods_spec.rb +37 -35
  30. data/spec/rails_best_practices/core/model_associations_spec.rb +17 -15
  31. data/spec/rails_best_practices/core/model_attributes_spec.rb +17 -15
  32. data/spec/rails_best_practices/core/models_spec.rb +4 -2
  33. data/spec/rails_best_practices/core/modules_spec.rb +21 -19
  34. data/spec/rails_best_practices/core/nil_spec.rb +23 -21
  35. data/spec/rails_best_practices/core/routes_spec.rb +21 -14
  36. data/spec/rails_best_practices/core/runner_spec.rb +17 -15
  37. data/spec/rails_best_practices/core_ext/sexp_spec.rb +32 -7
  38. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +35 -31
  39. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +35 -31
  40. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +24 -0
  41. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +122 -123
  42. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +36 -32
  43. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +12 -8
  44. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +326 -322
  45. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +619 -573
  46. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +25 -21
  47. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +85 -87
  48. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +224 -222
  49. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +30 -26
  50. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +79 -75
  51. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +76 -72
  52. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +138 -140
  53. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +38 -34
  54. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +22 -18
  55. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +57 -53
  56. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +62 -63
  57. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +51 -50
  58. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +140 -136
  59. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +48 -44
  60. data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +42 -38
  61. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +151 -149
  62. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +86 -55
  63. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +23 -19
  64. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +290 -286
  65. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +76 -72
  66. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +601 -597
  67. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +55 -54
  68. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +34 -30
  69. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +288 -289
  70. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +59 -55
  71. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +73 -69
  72. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +89 -98
  73. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +52 -52
  74. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +192 -190
  75. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +114 -121
  76. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +189 -190
  77. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +97 -93
  78. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +146 -151
  79. data/spec/spec_helper.rb +11 -20
  80. metadata +42 -26
  81. data/.watchr.example +0 -65
@@ -1,71 +1,72 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RailsBestPractices::Reviews::ReplaceComplexCreationWithFactoryMethodReview do
4
- let(:runner) { RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::ReplaceComplexCreationWithFactoryMethodReview.new) }
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe ReplaceComplexCreationWithFactoryMethodReview do
6
+ let(:runner) { Core::Runner.new(:reviews => ReplaceComplexCreationWithFactoryMethodReview.new) }
5
7
 
6
- it "should replace complex creation with factory method" do
7
- content = <<-EOF
8
- class InvoiceController < ApplicationController
8
+ it "should replace complex creation with factory method" do
9
+ content = <<-EOF
10
+ class InvoiceController < ApplicationController
11
+ def create
12
+ @invoice = Invoice.new(params[:invoice])
13
+ @invoice.address = current_user.address
14
+ @invoice.phone = current_user.phone
15
+ @invoice.vip = (@invoice.amount > 1000)
9
16
 
10
- def create
11
- @invoice = Invoice.new(params[:invoice])
12
- @invoice.address = current_user.address
13
- @invoice.phone = current_user.phone
14
- @invoice.vip = (@invoice.amount > 1000)
17
+ if Time.now.day > 15
18
+ @invoice.deliver_time = Time.now + 2.month
19
+ else
20
+ @invoice.deliver_time = Time.now + 1.month
21
+ end
15
22
 
16
- if Time.now.day > 15
17
- @invoice.deliver_time = Time.now + 2.month
18
- else
19
- @invoice.deliver_time = Time.now + 1.month
23
+ @invoice.save
24
+ end
20
25
  end
21
-
22
- @invoice.save
26
+ EOF
27
+ runner.review('app/controllers/invoices_controller.rb', content)
28
+ runner.should have(1).errors
29
+ runner.errors[0].to_s.should == "app/controllers/invoices_controller.rb:3 - replace complex creation with factory method (@invoice attribute_assignment_count > 2)"
23
30
  end
24
- end
25
- EOF
26
- runner.review('app/controllers/invoices_controller.rb', content)
27
- runner.should have(1).errors
28
- runner.errors[0].to_s.should == "app/controllers/invoices_controller.rb:3 - replace complex creation with factory method (@invoice attribute_assignment_count > 2)"
29
- end
30
-
31
- it "should not replace complex creation with factory method with simple creation" do
32
- content = <<-EOF
33
- class InvoiceController < ApplicationController
34
31
 
35
- def create
36
- @invoice = Invoice.new(params[:invoice])
37
- @invoice.address = current_user.address
38
- @invoice.phone = current_user.phone
39
- @invoice.save
32
+ it "should not replace complex creation with factory method with simple creation" do
33
+ content = <<-EOF
34
+ class InvoiceController < ApplicationController
35
+ def create
36
+ @invoice = Invoice.new(params[:invoice])
37
+ @invoice.address = current_user.address
38
+ @invoice.phone = current_user.phone
39
+ @invoice.save
40
+ end
41
+ end
42
+ EOF
43
+ runner.review('app/controllers/invoices_controller.rb', content)
44
+ runner.should have(0).errors
40
45
  end
41
- end
42
- EOF
43
- runner.review('app/controllers/invoices_controller.rb', content)
44
- runner.should have(0).errors
45
- end
46
46
 
47
- it "should not replace complex creation with factory method when attrasgn_count is 5" do
48
- content = <<-EOF
49
- class InvoiceController < ApplicationController
47
+ it "should not replace complex creation with factory method when attrasgn_count is 5" do
48
+ content = <<-EOF
49
+ class InvoiceController < ApplicationController
50
+ def create
51
+ @invoice = Invoice.new(params[:invoice])
52
+ @invoice.address = current_user.address
53
+ @invoice.phone = current_user.phone
54
+ @invoice.vip = (@invoice.amount > 1000)
50
55
 
51
- def create
52
- @invoice = Invoice.new(params[:invoice])
53
- @invoice.address = current_user.address
54
- @invoice.phone = current_user.phone
55
- @invoice.vip = (@invoice.amount > 1000)
56
+ if Time.now.day > 15
57
+ @invoice.deliver_time = Time.now + 2.month
58
+ else
59
+ @invoice.deliver_time = Time.now + 1.month
60
+ end
56
61
 
57
- if Time.now.day > 15
58
- @invoice.deliver_time = Time.now + 2.month
59
- else
60
- @invoice.deliver_time = Time.now + 1.month
62
+ @invoice.save
63
+ end
61
64
  end
62
-
63
- @invoice.save
65
+ EOF
66
+ runner = Core::Runner.new(:reviews => ReplaceComplexCreationWithFactoryMethodReview.new('attribute_assignment_count' => 5))
67
+ runner.review('app/controllers/invoices_controller.rb', content)
68
+ runner.should have(0).errors
64
69
  end
65
70
  end
66
- EOF
67
- runner = RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::ReplaceComplexCreationWithFactoryMethodReview.new('attribute_assignment_count' => 5))
68
- runner.review('app/controllers/invoices_controller.rb', content)
69
- runner.should have(0).errors
70
71
  end
71
72
  end
@@ -1,40 +1,44 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RailsBestPractices::Reviews::ReplaceInstanceVariableWithLocalVariableReview do
4
- let(:runner) { RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::ReplaceInstanceVariableWithLocalVariableReview.new) }
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe ReplaceInstanceVariableWithLocalVariableReview do
6
+ let(:runner) { Core::Runner.new(:reviews => ReplaceInstanceVariableWithLocalVariableReview.new) }
5
7
 
6
- it "should replace instance variable with local varialbe" do
7
- content = <<-EOF
8
- <%= @post.title %>
9
- EOF
10
- runner.review('app/views/posts/_post.html.erb', content)
11
- runner.should have(1).errors
12
- runner.errors[0].to_s.should == "app/views/posts/_post.html.erb:1 - replace instance variable with local variable"
13
- end
8
+ it "should replace instance variable with local varialbe" do
9
+ content = <<-EOF
10
+ <%= @post.title %>
11
+ EOF
12
+ runner.review('app/views/posts/_post.html.erb', content)
13
+ runner.should have(1).errors
14
+ runner.errors[0].to_s.should == "app/views/posts/_post.html.erb:1 - replace instance variable with local variable"
15
+ end
14
16
 
15
- it "should replace instance variable with local varialbe in haml file" do
16
- content = <<-EOF
17
+ it "should replace instance variable with local varialbe in haml file" do
18
+ content = <<-EOF
17
19
  = @post.title
18
- EOF
19
- runner.review('app/views/posts/_post.html.haml', content)
20
- runner.should have(1).errors
21
- runner.errors[0].to_s.should == "app/views/posts/_post.html.haml:1 - replace instance variable with local variable"
22
- end
20
+ EOF
21
+ runner.review('app/views/posts/_post.html.haml', content)
22
+ runner.should have(1).errors
23
+ runner.errors[0].to_s.should == "app/views/posts/_post.html.haml:1 - replace instance variable with local variable"
24
+ end
23
25
 
24
- it "should replace instance variable with local varialbe in slim file" do
25
- content = <<-EOF
26
+ it "should replace instance variable with local varialbe in slim file" do
27
+ content = <<-EOF
26
28
  = @post.title
27
- EOF
28
- runner.review('app/views/posts/_post.html.slim', content)
29
- runner.should have(1).errors
30
- runner.errors[0].to_s.should == "app/views/posts/_post.html.slim:1 - replace instance variable with local variable"
31
- end
29
+ EOF
30
+ runner.review('app/views/posts/_post.html.slim', content)
31
+ runner.should have(1).errors
32
+ runner.errors[0].to_s.should == "app/views/posts/_post.html.slim:1 - replace instance variable with local variable"
33
+ end
32
34
 
33
- it "should not replace instance variable with local varialbe" do
34
- content = <<-EOF
35
- <%= post.title %>
36
- EOF
37
- runner.review('app/views/posts/_post.html.erb', content)
38
- runner.should have(0).errors
35
+ it "should not replace instance variable with local varialbe" do
36
+ content = <<-EOF
37
+ <%= post.title %>
38
+ EOF
39
+ runner.review('app/views/posts/_post.html.erb', content)
40
+ runner.should have(0).errors
41
+ end
42
+ end
39
43
  end
40
44
  end
@@ -1,98 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RailsBestPractices::Reviews::RestrictAutoGeneratedRoutesReview do
4
- let(:runner) {
5
- RailsBestPractices::Core::Runner.new(
6
- :prepares => RailsBestPractices::Prepares::ControllerPrepare.new,
7
- :reviews => RailsBestPractices::Reviews::RestrictAutoGeneratedRoutesReview.new
8
- )
9
- }
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe RestrictAutoGeneratedRoutesReview do
6
+ let(:runner) { Core::Runner.new(:prepares => Prepares::ControllerPrepare.new, :reviews => RestrictAutoGeneratedRoutesReview.new) }
10
7
 
11
- describe "resources" do
12
- before :each do
13
- content =<<-EOF
14
- class PostsController < ApplicationController
15
- def show; end
16
- def new; end
17
- def create; end
18
- def edit; end
19
- def update; end
20
- def destroy; end
21
- end
22
- EOF
23
- runner.prepare('app/controllers/posts_controller.rb', content)
24
- end
25
-
26
- describe "rails2" do
27
- it "should restrict auto-generated routes" do
28
- content =<<-EOF
29
- ActionController::Routing::Routes.draw do |map|
30
- map.resources :posts
31
- end
32
- EOF
33
- runner.review('config/routes.rb', content)
34
- runner.should have(1).errors
35
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
36
- end
37
-
38
- it "should not restrict auto-generated routes with only" do
39
- content =<<-EOF
40
- ActionController::Routing::Routes.draw do |map|
41
- map.resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy]
42
- end
43
- EOF
44
- runner.review('config/routes.rb', content)
45
- runner.should have(0).errors
46
- end
47
-
48
- it "should not restrict auto-generated routes with except" do
49
- content =<<-EOF
50
- ActionController::Routing::Routes.draw do |map|
51
- map.resources :posts, :except => :index
52
- end
53
- EOF
54
- runner.review('config/routes.rb', content)
55
- runner.should have(0).errors
56
- end
57
-
58
- it "should not restrict auto-generated routes with :only => :none" do
59
- content =<<-EOF
60
- ActionController::Routing::Routes.draw do |map|
61
- map.resources :posts, :only => :none
62
- end
63
- EOF
64
- runner.review('config/routes.rb', content)
65
- runner.should have(0).errors
66
- end
67
-
68
- it "should not restrict auto-generated routes with :except => :all" do
69
- content =<<-EOF
70
- ActionController::Routing::Routes.draw do |map|
71
- map.resources :posts, :except => :all
72
- end
73
- EOF
74
- runner.review('config/routes.rb', content)
75
- runner.should have(0).errors
76
- end
77
-
78
- describe "specify a controller" do
79
- it "should restrict auto-generated routes" do
80
- content =<<-EOF
81
- ActionController::Routing::Routes.draw do |map|
82
- map.resources :articles, :controller => "posts"
83
- end
84
- EOF
85
- runner.review('config/routes.rb', content)
86
- runner.should have(1).errors
87
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
88
- end
89
- end
90
-
91
- describe "nested routes" do
8
+ describe "resources" do
92
9
  before :each do
93
10
  content =<<-EOF
94
- class CommentsController < ApplicationController
95
- def index; end
11
+ class PostsController < ApplicationController
96
12
  def show; end
97
13
  def new; end
98
14
  def create; end
@@ -101,253 +17,336 @@ describe RailsBestPractices::Reviews::RestrictAutoGeneratedRoutesReview do
101
17
  def destroy; end
102
18
  end
103
19
  EOF
104
- runner.prepare('app/controllers/comments_controller.rb', content)
20
+ runner.prepare('app/controllers/posts_controller.rb', content)
105
21
  end
106
22
 
107
- it "should restrict auto-generated routes" do
108
- content =<<-EOF
109
- ActionController::Routing::Routes.draw do |map|
110
- map.resources :posts do |post|
111
- post.resources :comments
23
+ describe "rails2" do
24
+ it "should restrict auto-generated routes" do
25
+ content =<<-EOF
26
+ ActionController::Routing::Routes.draw do |map|
27
+ map.resources :posts
112
28
  end
29
+ EOF
30
+ runner.review('config/routes.rb', content)
31
+ runner.should have(1).errors
32
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
113
33
  end
114
- EOF
115
- runner.review('config/routes.rb', content)
116
- runner.should have(1).errors
117
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
118
- end
119
34
 
120
- it "should not restrict auto-generated routes with only" do
121
- content =<<-EOF
122
- ActionController::Routing::Routes.draw do |map|
123
- map.resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy] do |post|
124
- post.resources :comments
35
+ it "should not restrict auto-generated routes with only" do
36
+ content =<<-EOF
37
+ ActionController::Routing::Routes.draw do |map|
38
+ map.resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy]
125
39
  end
40
+ EOF
41
+ runner.review('config/routes.rb', content)
42
+ runner.should have(0).errors
126
43
  end
127
- EOF
128
- runner.review('config/routes.rb', content)
129
- runner.should have(0).errors
130
- end
131
44
 
132
- it "should not restrict auto-generated routes with except" do
133
- content =<<-EOF
134
- ActionController::Routing::Routes.draw do |map|
135
- map.resources :posts, :except => :index do |post|
136
- post.resources :comments
45
+ it "should not restrict auto-generated routes with except" do
46
+ content =<<-EOF
47
+ ActionController::Routing::Routes.draw do |map|
48
+ map.resources :posts, :except => :index
137
49
  end
50
+ EOF
51
+ runner.review('config/routes.rb', content)
52
+ runner.should have(0).errors
138
53
  end
139
- EOF
140
- runner.review('config/routes.rb', content)
141
- runner.should have(0).errors
142
- end
143
- end
144
- end
145
54
 
146
- describe "rails3" do
147
- it "should restrict auto-generated routes" do
148
- content =<<-EOF
149
- RailsBestPracticesCom::Application.routes.draw do
150
- resources :posts
151
- end
152
- EOF
153
- runner.review('config/routes.rb', content)
154
- runner.should have(1).errors
155
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
156
- end
55
+ it "should not restrict auto-generated routes with :only => :none" do
56
+ content =<<-EOF
57
+ ActionController::Routing::Routes.draw do |map|
58
+ map.resources :posts, :only => :none
59
+ end
60
+ EOF
61
+ runner.review('config/routes.rb', content)
62
+ runner.should have(0).errors
63
+ end
157
64
 
158
- it "should not restrict auto-generated routes with only" do
159
- content =<<-EOF
160
- RailsBestPracticesCom::Application.routes.draw do
161
- resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy]
162
- end
163
- EOF
164
- runner.review('config/routes.rb', content)
165
- runner.should have(0).errors
166
- end
65
+ it "should not restrict auto-generated routes with :except => :all" do
66
+ content =<<-EOF
67
+ ActionController::Routing::Routes.draw do |map|
68
+ map.resources :posts, :except => :all
69
+ end
70
+ EOF
71
+ runner.review('config/routes.rb', content)
72
+ runner.should have(0).errors
73
+ end
167
74
 
168
- it "should not restrict auto-generated routes with except" do
169
- content =<<-EOF
170
- RailsBestPracticesCom::Application.routes.draw do
171
- resources :posts, :except => :index
172
- end
173
- EOF
174
- runner.review('config/routes.rb', content)
175
- runner.should have(0).errors
176
- end
75
+ describe "specify a controller" do
76
+ it "should restrict auto-generated routes" do
77
+ content =<<-EOF
78
+ ActionController::Routing::Routes.draw do |map|
79
+ map.resources :articles, :controller => "posts"
80
+ end
81
+ EOF
82
+ runner.review('config/routes.rb', content)
83
+ runner.should have(1).errors
84
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
85
+ end
86
+ end
177
87
 
178
- describe "specify a controller" do
179
- it "should restrict auto-generated routes" do
180
- content =<<-EOF
181
- RailsBestPracticesCom::Application.routes.draw do
182
- resources :articles, :controller => "posts"
88
+ describe "nested routes" do
89
+ before :each do
90
+ content =<<-EOF
91
+ class CommentsController < ApplicationController
92
+ def index; end
93
+ def show; end
94
+ def new; end
95
+ def create; end
96
+ def edit; end
97
+ def update; end
98
+ def destroy; end
99
+ end
100
+ EOF
101
+ runner.prepare('app/controllers/comments_controller.rb', content)
102
+ end
103
+
104
+ it "should restrict auto-generated routes" do
105
+ content =<<-EOF
106
+ ActionController::Routing::Routes.draw do |map|
107
+ map.resources :posts do |post|
108
+ post.resources :comments
109
+ end
110
+ end
111
+ EOF
112
+ runner.review('config/routes.rb', content)
113
+ runner.should have(1).errors
114
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
115
+ end
116
+
117
+ it "should not restrict auto-generated routes with only" do
118
+ content =<<-EOF
119
+ ActionController::Routing::Routes.draw do |map|
120
+ map.resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy] do |post|
121
+ post.resources :comments
122
+ end
123
+ end
124
+ EOF
125
+ runner.review('config/routes.rb', content)
126
+ runner.should have(0).errors
127
+ end
128
+
129
+ it "should not restrict auto-generated routes with except" do
130
+ content =<<-EOF
131
+ ActionController::Routing::Routes.draw do |map|
132
+ map.resources :posts, :except => :index do |post|
133
+ post.resources :comments
134
+ end
135
+ end
136
+ EOF
137
+ runner.review('config/routes.rb', content)
138
+ runner.should have(0).errors
139
+ end
183
140
  end
184
- EOF
185
- runner.review('config/routes.rb', content)
186
- runner.should have(1).errors
187
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
188
141
  end
189
- end
190
142
 
191
- describe "namespace" do
192
- it "should restrict auto-generated routes" do
193
- content =<<-EOF
194
- class Admin::CommentsController < ApplicationController
195
- def show; end
196
- def new; end
197
- def create; end
198
- def edit; end
199
- def update; end
200
- def destroy; end
143
+ describe "rails3" do
144
+ it "should restrict auto-generated routes" do
145
+ content =<<-EOF
146
+ RailsBestPracticesCom::Application.routes.draw do
147
+ resources :posts
148
+ end
149
+ EOF
150
+ runner.review('config/routes.rb', content)
151
+ runner.should have(1).errors
152
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
201
153
  end
202
- EOF
203
- runner.prepare('app/controllers/admin/comments_controller.rb', content)
204
154
 
205
- content =<<-EOF
206
- RailsBestPracticesCom::Application.routes.draw do
207
- namespace :admin do
208
- resources :comments
155
+ it "should not restrict auto-generated routes with only" do
156
+ content =<<-EOF
157
+ RailsBestPracticesCom::Application.routes.draw do
158
+ resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy]
159
+ end
160
+ EOF
161
+ runner.review('config/routes.rb', content)
162
+ runner.should have(0).errors
163
+ end
164
+
165
+ it "should not restrict auto-generated routes with except" do
166
+ content =<<-EOF
167
+ RailsBestPracticesCom::Application.routes.draw do
168
+ resources :posts, :except => :index
169
+ end
170
+ EOF
171
+ runner.review('config/routes.rb', content)
172
+ runner.should have(0).errors
173
+ end
174
+
175
+ describe "specify a controller" do
176
+ it "should restrict auto-generated routes" do
177
+ content =<<-EOF
178
+ RailsBestPracticesCom::Application.routes.draw do
179
+ resources :articles, :controller => "posts"
180
+ end
181
+ EOF
182
+ runner.review('config/routes.rb', content)
183
+ runner.should have(1).errors
184
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
185
+ end
186
+ end
187
+
188
+ describe "namespace" do
189
+ it "should restrict auto-generated routes" do
190
+ content =<<-EOF
191
+ class Admin::CommentsController < ApplicationController
192
+ def show; end
193
+ def new; end
194
+ def create; end
195
+ def edit; end
196
+ def update; end
197
+ def destroy; end
198
+ end
199
+ EOF
200
+ runner.prepare('app/controllers/admin/comments_controller.rb', content)
201
+
202
+ content =<<-EOF
203
+ RailsBestPracticesCom::Application.routes.draw do
204
+ namespace :admin do
205
+ resources :comments
206
+ end
207
+ end
208
+ EOF
209
+ runner.review('config/routes.rb', content)
210
+ runner.should have(1).errors
211
+ runner.errors[0].to_s.should == "config/routes.rb:3 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
212
+ end
213
+ end
214
+
215
+ describe "nested routes" do
216
+ before :each do
217
+ content =<<-EOF
218
+ class CommentsController < ApplicationController
219
+ def index; end
220
+ def show; end
221
+ def new; end
222
+ def create; end
223
+ def edit; end
224
+ def update; end
225
+ def destroy; end
226
+ end
227
+ EOF
228
+ runner.prepare('app/controllers/comments_controller.rb', content)
229
+ end
230
+
231
+ it "should restrict auto-generated routes" do
232
+ content =<<-EOF
233
+ RailsBestPracticesCom::Application.routes.draw do
234
+ resources :posts do
235
+ resources :comments
236
+ end
237
+ end
238
+ EOF
239
+ runner.review('config/routes.rb', content)
240
+ runner.should have(1).errors
241
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
242
+ end
243
+
244
+ it "should not restrict auto-generated routes with only" do
245
+ content =<<-EOF
246
+ RailsBestPracticesCom::Application.routes.draw do
247
+ resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy] do
248
+ resources :comments
249
+ end
250
+ end
251
+ EOF
252
+ runner.review('config/routes.rb', content)
253
+ runner.should have(0).errors
254
+ end
255
+
256
+ it "should not restrict auto-generated routes with except" do
257
+ content =<<-EOF
258
+ RailsBestPracticesCom::Application.routes.draw do
259
+ resources :posts, :except => :index do
260
+ resources :comments
261
+ end
262
+ end
263
+ EOF
264
+ runner.review('config/routes.rb', content)
265
+ runner.should have(0).errors
209
266
  end
210
267
  end
211
- EOF
212
- runner.review('config/routes.rb', content)
213
- runner.should have(1).errors
214
- runner.errors[0].to_s.should == "config/routes.rb:3 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
215
268
  end
216
269
  end
217
270
 
218
- describe "nested routes" do
271
+ describe "resource" do
219
272
  before :each do
220
273
  content =<<-EOF
221
- class CommentsController < ApplicationController
222
- def index; end
274
+ class AccountsController < ApplicationController
223
275
  def show; end
224
276
  def new; end
225
277
  def create; end
226
278
  def edit; end
227
279
  def update; end
228
- def destroy; end
229
280
  end
230
281
  EOF
231
- runner.prepare('app/controllers/comments_controller.rb', content)
282
+ runner.prepare('app/controllers/accounts_controller.rb', content)
232
283
  end
233
284
 
234
- it "should restrict auto-generated routes" do
235
- content =<<-EOF
236
- RailsBestPracticesCom::Application.routes.draw do
237
- resources :posts do
238
- resources :comments
285
+ describe "rails2" do
286
+ it "should restrict auto-generated routes" do
287
+ content =<<-EOF
288
+ ActionController::Routing::Routes.draw do |map|
289
+ map.resource :account
239
290
  end
291
+ EOF
292
+ runner.review('config/routes.rb', content)
293
+ runner.should have(1).errors
294
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update])"
240
295
  end
241
- EOF
242
- runner.review('config/routes.rb', content)
243
- runner.should have(1).errors
244
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update, :destroy])"
245
- end
246
296
 
247
- it "should not restrict auto-generated routes with only" do
248
- content =<<-EOF
249
- RailsBestPracticesCom::Application.routes.draw do
250
- resources :posts, :only => [:show, :new, :create, :edit, :update, :destroy] do
251
- resources :comments
297
+ it "should not restrict auto-generated routes with only" do
298
+ content =<<-EOF
299
+ ActionController::Routing::Routes.draw do |map|
300
+ map.resource :account, :only => [:show, :new, :create, :edit, :update]
252
301
  end
302
+ EOF
303
+ runner.review('config/routes.rb', content)
304
+ runner.should have(0).errors
253
305
  end
254
- EOF
255
- runner.review('config/routes.rb', content)
256
- runner.should have(0).errors
257
- end
258
306
 
259
- it "should not restrict auto-generated routes with except" do
260
- content =<<-EOF
261
- RailsBestPracticesCom::Application.routes.draw do
262
- resources :posts, :except => :index do
263
- resources :comments
307
+ it "should not restrict auto-generated routes with except" do
308
+ content =<<-EOF
309
+ ActionController::Routing::Routes.draw do |map|
310
+ map.resource :account, :except => :destroy
264
311
  end
312
+ EOF
313
+ runner.review('config/routes.rb', content)
314
+ runner.should have(0).errors
265
315
  end
266
- EOF
267
- runner.review('config/routes.rb', content)
268
- runner.should have(0).errors
269
- end
270
- end
271
- end
272
- end
273
-
274
- describe "resource" do
275
- before :each do
276
- content =<<-EOF
277
- class AccountsController < ApplicationController
278
- def show; end
279
- def new; end
280
- def create; end
281
- def edit; end
282
- def update; end
283
- end
284
- EOF
285
- runner.prepare('app/controllers/accounts_controller.rb', content)
286
- end
287
-
288
- describe "rails2" do
289
- it "should restrict auto-generated routes" do
290
- content =<<-EOF
291
- ActionController::Routing::Routes.draw do |map|
292
- map.resource :account
293
- end
294
- EOF
295
- runner.review('config/routes.rb', content)
296
- runner.should have(1).errors
297
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update])"
298
- end
299
-
300
- it "should not restrict auto-generated routes with only" do
301
- content =<<-EOF
302
- ActionController::Routing::Routes.draw do |map|
303
- map.resource :account, :only => [:show, :new, :create, :edit, :update]
304
316
  end
305
- EOF
306
- runner.review('config/routes.rb', content)
307
- runner.should have(0).errors
308
- end
309
-
310
- it "should not restrict auto-generated routes with except" do
311
- content =<<-EOF
312
- ActionController::Routing::Routes.draw do |map|
313
- map.resource :account, :except => :destroy
314
- end
315
- EOF
316
- runner.review('config/routes.rb', content)
317
- runner.should have(0).errors
318
- end
319
- end
320
317
 
321
- describe "rails3" do
322
- it "should restrict auto-generated routes" do
323
- content =<<-EOF
324
- ActionController::Routing::Routes.draw do |map|
325
- map.resource :account
326
- end
327
- EOF
328
- runner.review('config/routes.rb', content)
329
- runner.should have(1).errors
330
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update])"
331
- end
318
+ describe "rails3" do
319
+ it "should restrict auto-generated routes" do
320
+ content =<<-EOF
321
+ ActionController::Routing::Routes.draw do |map|
322
+ map.resource :account
323
+ end
324
+ EOF
325
+ runner.review('config/routes.rb', content)
326
+ runner.should have(1).errors
327
+ runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes (:only => [:show, :new, :create, :edit, :update])"
328
+ end
332
329
 
333
- it "should not restrict auto-generated routes with only" do
334
- content =<<-EOF
335
- ActionController::Routing::Routes.draw do |map|
336
- map.resource :account, :only => [:show, :new, :create, :edit, :update]
337
- end
338
- EOF
339
- runner.review('config/routes.rb', content)
340
- runner.should have(0).errors
341
- end
330
+ it "should not restrict auto-generated routes with only" do
331
+ content =<<-EOF
332
+ ActionController::Routing::Routes.draw do |map|
333
+ map.resource :account, :only => [:show, :new, :create, :edit, :update]
334
+ end
335
+ EOF
336
+ runner.review('config/routes.rb', content)
337
+ runner.should have(0).errors
338
+ end
342
339
 
343
- it "should not restrict auto-generated routes with except" do
344
- content =<<-EOF
345
- ActionController::Routing::Routes.draw do |map|
346
- map.resource :account, :except => :destroy
340
+ it "should not restrict auto-generated routes with except" do
341
+ content =<<-EOF
342
+ ActionController::Routing::Routes.draw do |map|
343
+ map.resource :account, :except => :destroy
344
+ end
345
+ EOF
346
+ runner.review('config/routes.rb', content)
347
+ runner.should have(0).errors
348
+ end
347
349
  end
348
- EOF
349
- runner.review('config/routes.rb', content)
350
- runner.should have(0).errors
351
350
  end
352
351
  end
353
352
  end