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.
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