rails_best_practices 1.19.3 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +0 -1
- data/.travis.yml +2 -3
- data/CHANGELOG.md +10 -11
- data/Gemfile +3 -5
- data/Gemfile.lock +125 -0
- data/Guardfile +2 -0
- data/README.md +5 -1
- data/Rakefile +2 -17
- data/assets/result.html.erb +2 -0
- data/lib/rails_best_practices.rb +4 -2
- data/lib/rails_best_practices/analyzer.rb +63 -51
- data/lib/rails_best_practices/cli.rb +22 -0
- data/lib/rails_best_practices/command.rb +1 -131
- data/lib/rails_best_practices/core/check.rb +63 -55
- data/lib/rails_best_practices/core/checks_loader.rb +24 -23
- data/lib/rails_best_practices/core/configs.rb +1 -2
- data/lib/rails_best_practices/core/controllers.rb +1 -2
- data/lib/rails_best_practices/core/error.rb +1 -1
- data/lib/rails_best_practices/core/helpers.rb +1 -2
- data/lib/rails_best_practices/core/mailers.rb +1 -2
- data/lib/rails_best_practices/core/methods.rb +27 -21
- data/lib/rails_best_practices/core/model_associations.rb +10 -5
- data/lib/rails_best_practices/core/models.rb +1 -2
- data/lib/rails_best_practices/core/modules.rb +1 -1
- data/lib/rails_best_practices/core/routes.rb +2 -2
- data/lib/rails_best_practices/core/runner.rb +87 -72
- data/lib/rails_best_practices/inline_disables.rb +3 -0
- data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
- data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
- data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
- data/lib/rails_best_practices/option_parser.rb +156 -0
- data/lib/rails_best_practices/prepares.rb +1 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +23 -17
- data/lib/rails_best_practices/prepares/gemfile_prepare.rb +2 -2
- data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
- data/lib/rails_best_practices/prepares/initializer_prepare.rb +3 -3
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +2 -1
- data/lib/rails_best_practices/prepares/model_prepare.rb +63 -23
- data/lib/rails_best_practices/prepares/route_prepare.rb +28 -21
- data/lib/rails_best_practices/prepares/schema_prepare.rb +1 -1
- data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +38 -34
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +94 -88
- data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +15 -5
- data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +20 -8
- data/lib/rails_best_practices/reviews/default_scope_is_evil_review.rb +1 -1
- data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +1 -1
- data/lib/rails_best_practices/reviews/hash_syntax_review.rb +16 -16
- data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +12 -12
- data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +10 -11
- data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +25 -24
- data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +4 -4
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +9 -10
- data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +10 -11
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +24 -22
- data/lib/rails_best_practices/reviews/not_rescue_exception_review.rb +1 -1
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
- data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +1 -1
- data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +8 -8
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +35 -32
- data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +4 -4
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +20 -17
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +12 -10
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +38 -18
- data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +11 -11
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +77 -74
- data/lib/rails_best_practices/reviews/review.rb +2 -1
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +2 -3
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +12 -12
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +14 -10
- data/lib/rails_best_practices/reviews/use_model_association_review.rb +15 -15
- data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +24 -22
- data/lib/rails_best_practices/reviews/use_observer_review.rb +28 -28
- data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +6 -6
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +63 -60
- data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +9 -8
- data/lib/rails_best_practices/reviews/use_scope_access_review.rb +16 -14
- data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +48 -49
- data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
- data/spec/rails_best_practices/analyzer_spec.rb +73 -42
- data/spec/rails_best_practices/core/check_spec.rb +5 -5
- data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
- data/spec/rails_best_practices/core/configs_spec.rb +1 -1
- data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
- data/spec/rails_best_practices/core/error_spec.rb +21 -18
- data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
- data/spec/rails_best_practices/core/gems_spec.rb +4 -4
- data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
- data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
- data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
- data/spec/rails_best_practices/core/methods_spec.rb +6 -6
- data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
- data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
- data/spec/rails_best_practices/core/models_spec.rb +1 -1
- data/spec/rails_best_practices/core/modules_spec.rb +5 -5
- data/spec/rails_best_practices/core/routes_spec.rb +5 -5
- data/spec/rails_best_practices/core/runner_spec.rb +9 -7
- data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
- data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
- data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +32 -31
- data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
- data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
- data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
- data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +17 -17
- data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +141 -76
- data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
- data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
- data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
- data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +13 -13
- data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +29 -22
- data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
- data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +32 -22
- data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -17
- data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +47 -32
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +21 -14
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +57 -53
- data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
- data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +20 -14
- data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
- data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
- data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +35 -31
- data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +10 -8
- data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
- data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
- data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
- data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +61 -59
- metadata +21 -14
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Prepares
|
7
7
|
describe RoutePrepare do
|
8
|
-
let(:runner) { Core::Runner.new(prepares:
|
8
|
+
let(:runner) { Core::Runner.new(prepares: described_class.new) }
|
9
9
|
|
10
10
|
context 'resources' do
|
11
|
-
it '
|
11
|
+
it 'adds resources route' do
|
12
12
|
content = <<-EOF
|
13
13
|
RailsBestPracticesCom::Application.routes.draw do
|
14
14
|
resources :posts
|
@@ -17,10 +17,20 @@ module RailsBestPractices
|
|
17
17
|
runner.prepare('config/routes.rb', content)
|
18
18
|
routes = Prepares.routes
|
19
19
|
expect(routes.size).to eq(7)
|
20
|
-
expect(routes.map(&:to_s)).to eq(
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
expect(routes.map(&:to_s)).to eq(
|
21
|
+
[
|
22
|
+
'PostsController#index',
|
23
|
+
'PostsController#show',
|
24
|
+
'PostsController#new',
|
25
|
+
'PostsController#create',
|
26
|
+
'PostsController#edit',
|
27
|
+
'PostsController#update',
|
28
|
+
'PostsController#destroy'
|
29
|
+
]
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'adds multiple resources route' do
|
24
34
|
content = <<-EOF
|
25
35
|
RailsBestPracticesCom::Application.routes.draw do
|
26
36
|
resources :posts, :users
|
@@ -31,7 +41,7 @@ module RailsBestPractices
|
|
31
41
|
expect(routes.size).to eq(14)
|
32
42
|
end
|
33
43
|
|
34
|
-
it '
|
44
|
+
it 'adds resources route with explict controller' do
|
35
45
|
content = <<-EOF
|
36
46
|
RailsBestPracticesCom::Application.routes.draw do
|
37
47
|
resources :posts, controller: :blog_posts
|
@@ -40,10 +50,20 @@ module RailsBestPractices
|
|
40
50
|
runner.prepare('config/routes.rb', content)
|
41
51
|
routes = Prepares.routes
|
42
52
|
expect(routes.size).to eq(7)
|
43
|
-
expect(routes.map(&:to_s)).to eq(
|
44
|
-
|
45
|
-
|
46
|
-
|
53
|
+
expect(routes.map(&:to_s)).to eq(
|
54
|
+
[
|
55
|
+
'BlogPostsController#index',
|
56
|
+
'BlogPostsController#show',
|
57
|
+
'BlogPostsController#new',
|
58
|
+
'BlogPostsController#create',
|
59
|
+
'BlogPostsController#edit',
|
60
|
+
'BlogPostsController#update',
|
61
|
+
'BlogPostsController#destroy'
|
62
|
+
]
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'adds resources route with only option' do
|
47
67
|
content = <<-EOF
|
48
68
|
RailsBestPracticesCom::Application.routes.draw do
|
49
69
|
resources :posts, only: [:index, :show, :new, :create]
|
@@ -52,10 +72,12 @@ module RailsBestPractices
|
|
52
72
|
runner.prepare('config/routes.rb', content)
|
53
73
|
routes = Prepares.routes
|
54
74
|
expect(routes.size).to eq(4)
|
55
|
-
expect(routes.map(&:to_s)).to eq(
|
75
|
+
expect(routes.map(&:to_s)).to eq(
|
76
|
+
['PostsController#index', 'PostsController#show', 'PostsController#new', 'PostsController#create']
|
77
|
+
)
|
56
78
|
end
|
57
79
|
|
58
|
-
it '
|
80
|
+
it 'adds resources route with except option' do
|
59
81
|
content = <<-EOF
|
60
82
|
RailsBestPracticesCom::Application.routes.draw do
|
61
83
|
resources :posts, except: [:edit, :update, :destroy]
|
@@ -64,10 +86,12 @@ module RailsBestPractices
|
|
64
86
|
runner.prepare('config/routes.rb', content)
|
65
87
|
routes = Prepares.routes
|
66
88
|
expect(routes.size).to eq(4)
|
67
|
-
expect(routes.map(&:to_s)).to eq(
|
89
|
+
expect(routes.map(&:to_s)).to eq(
|
90
|
+
['PostsController#index', 'PostsController#show', 'PostsController#new', 'PostsController#create']
|
91
|
+
)
|
68
92
|
end
|
69
93
|
|
70
|
-
it '
|
94
|
+
it 'does not add resources routes with only: :none' do
|
71
95
|
content = <<-EOF
|
72
96
|
RailsBestPracticesCom::Application.routes.draw do
|
73
97
|
resources :posts, only: :none
|
@@ -78,7 +102,7 @@ module RailsBestPractices
|
|
78
102
|
expect(routes.size).to eq(0)
|
79
103
|
end
|
80
104
|
|
81
|
-
it '
|
105
|
+
it 'does not add resources routes with except: :all' do
|
82
106
|
content = <<-EOF
|
83
107
|
RailsBestPracticesCom::Application.routes.draw do
|
84
108
|
resources :posts, except: :all
|
@@ -89,7 +113,7 @@ module RailsBestPractices
|
|
89
113
|
expect(routes.size).to eq(0)
|
90
114
|
end
|
91
115
|
|
92
|
-
it '
|
116
|
+
it 'adds resources routes with members' do
|
93
117
|
content = <<-EOF
|
94
118
|
RailsBestPracticesCom::Application.routes.draw do
|
95
119
|
namespace :admin do
|
@@ -104,14 +128,17 @@ module RailsBestPractices
|
|
104
128
|
EOF
|
105
129
|
runner.prepare('config/routes.rb', content)
|
106
130
|
routes = Prepares.routes
|
107
|
-
expect(routes.map(&:to_s)).to eq(
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
131
|
+
expect(routes.map(&:to_s)).to eq(
|
132
|
+
[
|
133
|
+
'Admin::PostsController#edit',
|
134
|
+
'Admin::PostsController#update',
|
135
|
+
'Admin::PostsController#link_to_post',
|
136
|
+
'Admin::PostsController#extra_update'
|
137
|
+
]
|
138
|
+
)
|
112
139
|
end
|
113
140
|
|
114
|
-
it '
|
141
|
+
it 'adds resources routes with members inline' do
|
115
142
|
content = <<-EOF
|
116
143
|
RailsBestPracticesCom::Application.routes.draw do
|
117
144
|
namespace :admin do
|
@@ -123,15 +150,18 @@ module RailsBestPractices
|
|
123
150
|
EOF
|
124
151
|
runner.prepare('config/routes.rb', content)
|
125
152
|
routes = Prepares.routes
|
126
|
-
expect(routes.map(&:to_s)).to eq(
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
153
|
+
expect(routes.map(&:to_s)).to eq(
|
154
|
+
[
|
155
|
+
'Admin::PostsController#edit',
|
156
|
+
'Admin::PostsController#update',
|
157
|
+
'Admin::PostsController#link_to_post',
|
158
|
+
'Admin::PostsController#extra_update',
|
159
|
+
'Admin::PostsController#retrieve'
|
160
|
+
]
|
161
|
+
)
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'adds connect route' do
|
135
165
|
content = <<-EOF
|
136
166
|
ActionController::Routing::Routes.draw do |map|
|
137
167
|
map.connect 'vote', controller: "votes", action: "create", method: :post
|
@@ -142,7 +172,7 @@ module RailsBestPractices
|
|
142
172
|
expect(routes.map(&:to_s)).to eq(['VotesController#create'])
|
143
173
|
end
|
144
174
|
|
145
|
-
it '
|
175
|
+
it 'adds named route' do
|
146
176
|
content = <<-EOF
|
147
177
|
ActionController::Routing::Routes.draw do |map|
|
148
178
|
map.login '/player/login', controller: 'sessions', action: 'new', conditions: { method: :get }
|
@@ -155,7 +185,7 @@ module RailsBestPractices
|
|
155
185
|
end
|
156
186
|
|
157
187
|
context 'resource' do
|
158
|
-
it '
|
188
|
+
it 'adds resource route' do
|
159
189
|
content = <<-EOF
|
160
190
|
RailsBestPracticesCom::Application.routes.draw do
|
161
191
|
resource :posts
|
@@ -164,10 +194,19 @@ module RailsBestPractices
|
|
164
194
|
runner.prepare('config/routes.rb', content)
|
165
195
|
routes = Prepares.routes
|
166
196
|
expect(routes.size).to eq(6)
|
167
|
-
expect(routes.map(&:to_s)).to eq(
|
168
|
-
|
169
|
-
|
170
|
-
|
197
|
+
expect(routes.map(&:to_s)).to eq(
|
198
|
+
[
|
199
|
+
'PostsController#show',
|
200
|
+
'PostsController#new',
|
201
|
+
'PostsController#create',
|
202
|
+
'PostsController#edit',
|
203
|
+
'PostsController#update',
|
204
|
+
'PostsController#destroy'
|
205
|
+
]
|
206
|
+
)
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'adds multiple resource route' do
|
171
210
|
content = <<-EOF
|
172
211
|
RailsBestPracticesCom::Application.routes.draw do
|
173
212
|
resource :posts, :users
|
@@ -178,7 +217,7 @@ module RailsBestPractices
|
|
178
217
|
expect(routes.size).to eq(12)
|
179
218
|
end
|
180
219
|
|
181
|
-
it '
|
220
|
+
it 'adds resource route with only option' do
|
182
221
|
content = <<-EOF
|
183
222
|
RailsBestPracticesCom::Application.routes.draw do
|
184
223
|
resource :posts, only: [:show, :new, :create]
|
@@ -190,7 +229,7 @@ module RailsBestPractices
|
|
190
229
|
expect(routes.map(&:to_s)).to eq(['PostsController#show', 'PostsController#new', 'PostsController#create'])
|
191
230
|
end
|
192
231
|
|
193
|
-
it '
|
232
|
+
it 'adds resource route with except option' do
|
194
233
|
content = <<-EOF
|
195
234
|
RailsBestPracticesCom::Application.routes.draw do
|
196
235
|
resource :posts, except: [:edit, :update, :destroy]
|
@@ -202,7 +241,7 @@ module RailsBestPractices
|
|
202
241
|
expect(routes.map(&:to_s)).to eq(['PostsController#show', 'PostsController#new', 'PostsController#create'])
|
203
242
|
end
|
204
243
|
|
205
|
-
it '
|
244
|
+
it 'does not add resource routes with only: :none' do
|
206
245
|
content = <<-EOF
|
207
246
|
RailsBestPracticesCom::Application.routes.draw do
|
208
247
|
resource :posts, only: :none
|
@@ -213,7 +252,7 @@ module RailsBestPractices
|
|
213
252
|
expect(routes.size).to eq(0)
|
214
253
|
end
|
215
254
|
|
216
|
-
it '
|
255
|
+
it 'does not add resource routes with except: :all' do
|
217
256
|
content = <<-EOF
|
218
257
|
RailsBestPracticesCom::Application.routes.draw do
|
219
258
|
resource :posts, except: :all
|
@@ -224,7 +263,7 @@ module RailsBestPractices
|
|
224
263
|
expect(routes.size).to eq(0)
|
225
264
|
end
|
226
265
|
|
227
|
-
it '
|
266
|
+
it 'adds resource routes with get/post/put/patch/delete routes' do
|
228
267
|
content = <<-EOF
|
229
268
|
RailsBestPracticesCom::Application.routes.draw do
|
230
269
|
resources :posts, only: [:show] do
|
@@ -244,13 +283,25 @@ module RailsBestPractices
|
|
244
283
|
runner.prepare('config/routes.rb', content)
|
245
284
|
routes = Prepares.routes
|
246
285
|
expect(routes.size).to eq(7)
|
247
|
-
expect(routes.map(&:to_s)).to eq(
|
248
|
-
|
249
|
-
|
250
|
-
|
286
|
+
expect(routes.map(&:to_s)).to eq(
|
287
|
+
[
|
288
|
+
'PostsController#show',
|
289
|
+
'PostsController#list',
|
290
|
+
'PostsController#search',
|
291
|
+
'PostsController#available',
|
292
|
+
'PostsController#create',
|
293
|
+
'PostsController#update',
|
294
|
+
'PostsController#update'
|
295
|
+
]
|
296
|
+
)
|
297
|
+
end
|
298
|
+
|
299
|
+
it 'adds custom resources routes with {}' do
|
251
300
|
content = <<-EOF
|
252
301
|
RailsBestPracticesCom::Application.routes.draw do
|
253
|
-
resources :posts, only: [:show]
|
302
|
+
resources :posts, only: [:show] do
|
303
|
+
get :inactive, on: :collection
|
304
|
+
end
|
254
305
|
end
|
255
306
|
EOF
|
256
307
|
runner.prepare('config/routes.rb', content)
|
@@ -259,7 +310,7 @@ module RailsBestPractices
|
|
259
310
|
expect(routes.map(&:to_s)).to eq(['PostsController#show', 'PostsController#inactive'])
|
260
311
|
end
|
261
312
|
|
262
|
-
it '
|
313
|
+
it 'adds resources routes with get %w() routes' do
|
263
314
|
content = <<-EOF
|
264
315
|
RailsBestPracticesCom::Application.routes.draw do
|
265
316
|
resources :posts, only: [:show] do
|
@@ -272,10 +323,12 @@ module RailsBestPractices
|
|
272
323
|
runner.prepare('config/routes.rb', content)
|
273
324
|
routes = Prepares.routes
|
274
325
|
expect(routes.size).to eq(3)
|
275
|
-
expect(routes.map(&:to_s)).to eq(
|
326
|
+
expect(routes.map(&:to_s)).to eq(
|
327
|
+
['PostsController#show', 'PostsController#latest', 'PostsController#popular']
|
328
|
+
)
|
276
329
|
end
|
277
330
|
|
278
|
-
it '
|
331
|
+
it 'adds route with nested routes' do
|
279
332
|
content = <<-EOF
|
280
333
|
RailsBestPracticesCom::Application.routes.draw do
|
281
334
|
resources :posts
|
@@ -288,7 +341,7 @@ module RailsBestPractices
|
|
288
341
|
expect(routes.size).to eq(14)
|
289
342
|
end
|
290
343
|
|
291
|
-
it '
|
344
|
+
it 'adds route with namespace' do
|
292
345
|
content = <<-EOF
|
293
346
|
RailsBestPracticesCom::Application.routes.draw do
|
294
347
|
namespace :admin do
|
@@ -303,7 +356,7 @@ module RailsBestPractices
|
|
303
356
|
expect(routes.map(&:to_s)).to eq(['Admin::Test::PostsController#index'])
|
304
357
|
end
|
305
358
|
|
306
|
-
it '
|
359
|
+
it 'adds route with namespace, but without resources' do
|
307
360
|
content = <<-EOF
|
308
361
|
RailsBestPracticesCom::Appllication.routes.draw do
|
309
362
|
namespace :something do
|
@@ -314,10 +367,12 @@ module RailsBestPractices
|
|
314
367
|
EOF
|
315
368
|
runner.prepare('config/routes.rb', content)
|
316
369
|
routes = Prepares.routes
|
317
|
-
expect(routes.map(&:to_s)).to eq(
|
370
|
+
expect(routes.map(&:to_s)).to eq(
|
371
|
+
['SomethingController#route_one', 'SomethingController#route_two', 'SomethingController#custom_action']
|
372
|
+
)
|
318
373
|
end
|
319
374
|
|
320
|
-
it '
|
375
|
+
it 'adds route with scope' do
|
321
376
|
content = <<-EOF
|
322
377
|
RailsBestPracticesCom::Application.routes.draw do
|
323
378
|
scope module: "admin" do
|
@@ -337,17 +392,19 @@ module RailsBestPractices
|
|
337
392
|
EOF
|
338
393
|
runner.prepare('config/routes.rb', content)
|
339
394
|
routes = Prepares.routes
|
340
|
-
expect(routes.map(&:to_s)).to eq(
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
395
|
+
expect(routes.map(&:to_s)).to eq(
|
396
|
+
[
|
397
|
+
'Admin::PostsController#index',
|
398
|
+
'Admin::DiscussionsController#index',
|
399
|
+
'CommentsController#index',
|
400
|
+
'UsersController#show',
|
401
|
+
'UsersController#preview'
|
402
|
+
]
|
403
|
+
)
|
347
404
|
end
|
348
405
|
end
|
349
406
|
|
350
|
-
it '
|
407
|
+
it 'adds route for direct get/post' do
|
351
408
|
content = <<-EOF
|
352
409
|
RailsBestPracticesCom::Application.routes.draw do
|
353
410
|
get 'posts/show'
|
@@ -360,10 +417,18 @@ module RailsBestPractices
|
|
360
417
|
runner.prepare('config/routes.rb', content)
|
361
418
|
routes = Prepares.routes
|
362
419
|
expect(routes.size).to eq(5)
|
363
|
-
expect(routes.map(&:to_s)).to eq(
|
420
|
+
expect(routes.map(&:to_s)).to eq(
|
421
|
+
[
|
422
|
+
'PostsController#show',
|
423
|
+
'PostsController#create',
|
424
|
+
'PostsController#update',
|
425
|
+
'PostsController#destroy',
|
426
|
+
'HighVoltage::PagesController#show'
|
427
|
+
]
|
428
|
+
)
|
364
429
|
end
|
365
430
|
|
366
|
-
it '
|
431
|
+
it 'adds routes for another get/post' do
|
367
432
|
content = <<-EOF
|
368
433
|
RailsBestPracticesCom::Application.routes.draw
|
369
434
|
get "/login", to: 'sessions#new', as: :login
|
@@ -375,7 +440,7 @@ module RailsBestPractices
|
|
375
440
|
expect(routes.first.to_s).to eq('SessionsController#new')
|
376
441
|
end
|
377
442
|
|
378
|
-
it '
|
443
|
+
it 'adds match route' do
|
379
444
|
content = <<-EOF
|
380
445
|
RailsBestPracticesCom::Application.routes.draw do
|
381
446
|
match '/auth/:provider/callback' => 'authentications#create'
|
@@ -386,7 +451,7 @@ module RailsBestPractices
|
|
386
451
|
expect(routes.map(&:to_s)).to eq(['AuthenticationsController#create'])
|
387
452
|
end
|
388
453
|
|
389
|
-
it '
|
454
|
+
it 'adds match route with all actions' do
|
390
455
|
content = <<-EOF
|
391
456
|
RailsBestPracticesCom::Application.routes.draw do
|
392
457
|
match 'internal/:action/*whatever', controller: "internal"
|
@@ -397,7 +462,7 @@ module RailsBestPractices
|
|
397
462
|
expect(routes.map(&:to_s)).to eq(['InternalController#*'])
|
398
463
|
end
|
399
464
|
|
400
|
-
it '
|
465
|
+
it 'adds root route' do
|
401
466
|
content = <<-EOF
|
402
467
|
RailsBestPracticesCom::Application.routes.draw do
|
403
468
|
root to: 'home#index'
|
@@ -408,7 +473,7 @@ module RailsBestPractices
|
|
408
473
|
expect(routes.map(&:to_s)).to eq(['HomeController#index'])
|
409
474
|
end
|
410
475
|
|
411
|
-
it '
|
476
|
+
it 'adds root shortcut route' do
|
412
477
|
content = <<-EOF
|
413
478
|
RailsBestPracticesCom::Application.routes.draw do
|
414
479
|
root 'home#index'
|
@@ -419,7 +484,7 @@ module RailsBestPractices
|
|
419
484
|
expect(routes.map(&:to_s)).to eq(['HomeController#index'])
|
420
485
|
end
|
421
486
|
|
422
|
-
it '
|
487
|
+
it 'does nothing for default route' do
|
423
488
|
content = <<-EOF
|
424
489
|
RailsBestPracticesCom::Application.routes.draw do
|
425
490
|
match ':controller(/:action(/:id(.:format)))'
|
@@ -430,7 +495,7 @@ module RailsBestPractices
|
|
430
495
|
expect(routes.size).to eq(0)
|
431
496
|
end
|
432
497
|
|
433
|
-
it '
|
498
|
+
it 'does nothing for redirect' do
|
434
499
|
content = <<-EOF
|
435
500
|
RailsBestPracticesCom::Application.routes.draw do
|
436
501
|
match "/stories/:name" => redirect("/posts/%{name}")
|
@@ -442,7 +507,7 @@ module RailsBestPractices
|
|
442
507
|
expect(routes.size).to eq(0)
|
443
508
|
end
|
444
509
|
|
445
|
-
it '
|
510
|
+
it 'parses customize route in nested resources' do
|
446
511
|
content = <<-EOF
|
447
512
|
RailsBestPracticesCom::Application.routes.draw do
|
448
513
|
resources :posts do
|
@@ -456,7 +521,7 @@ module RailsBestPractices
|
|
456
521
|
expect(routes.last.to_s).to eq('PostsController#stop')
|
457
522
|
end
|
458
523
|
|
459
|
-
it '
|
524
|
+
it 'parses custom route for resource with explicit to and different action name' do
|
460
525
|
content = <<-EOF
|
461
526
|
RailsBestPracticesCom::Application.routes.draw do
|
462
527
|
resources :posts do
|
@@ -469,7 +534,7 @@ module RailsBestPractices
|
|
469
534
|
expect(routes.last.to_s).to eq('PostsController#stop')
|
470
535
|
end
|
471
536
|
|
472
|
-
it '
|
537
|
+
it 'parses custom route for resource with symbol action name' do
|
473
538
|
content = <<-EOF
|
474
539
|
RailsBestPracticesCom::Application.routes.draw do
|
475
540
|
resources :posts do
|
@@ -482,7 +547,7 @@ module RailsBestPractices
|
|
482
547
|
expect(routes.last.to_s).to eq('PostsController#stop')
|
483
548
|
end
|
484
549
|
|
485
|
-
it '
|
550
|
+
it 'does not take former resources for direct get/post' do
|
486
551
|
content = <<-EOF
|
487
552
|
RailsBestPracticesCom::Application.routes.draw do
|
488
553
|
resources :posts
|
@@ -494,7 +559,7 @@ module RailsBestPractices
|
|
494
559
|
expect(routes.last.to_s).to eq('SprintsController#stop')
|
495
560
|
end
|
496
561
|
|
497
|
-
it '
|
562
|
+
it 'does not parse wrong route' do
|
498
563
|
content = <<-EOF
|
499
564
|
RailsBestPracticesCom::Application.routes.draw do
|
500
565
|
match ':controller/:action' => '#index', as: :auto_complete
|