Skip to content

Commit b9cc606

Browse files
committed
Add option for request specs to ScaffoldGenerator
With shallow empty file. Will be filled in later commits with content
1 parent 0362190 commit b9cc606

File tree

3 files changed

+38
-5
lines changed

3 files changed

+38
-5
lines changed

lib/generators/rspec/scaffold/scaffold_generator.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class ScaffoldGenerator < Base
1414
class_option :singleton, type: :boolean, desc: "Supply to create a singleton controller"
1515
class_option :api, type: :boolean, desc: "Skip specs unnecessary for API-only apps"
1616

17+
class_option :request_specs, type: :boolean, default: false, desc: "Generate request specs"
1718
class_option :controller_specs, type: :boolean, default: true, desc: "Generate controller specs"
1819
class_option :view_specs, type: :boolean, default: true, desc: "Generate view specs"
1920
class_option :helper_specs, type: :boolean, default: true, desc: "Generate helper specs"
@@ -24,6 +25,17 @@ def initialize(*args, &blk)
2425
super(*args, &blk)
2526
end
2627

28+
def generate_request_spec
29+
return unless options[:request_specs]
30+
31+
template_file = File.join(
32+
'spec/requests',
33+
controller_class_path,
34+
"#{controller_file_name}_request_spec.rb"
35+
)
36+
template 'controller_spec.rb', template_file
37+
end
38+
2739
def generate_controller_spec
2840
return unless options[:controller_specs]
2941

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

spec/generators/rspec/scaffold/scaffold_generator_spec.rb

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,25 @@
55
RSpec.describe Rspec::Generators::ScaffoldGenerator, type: :generator do
66
setup_default_destination
77

8+
describe 'standard request specs' do
9+
subject { file('spec/requests/posts_request_spec.rb') }
10+
11+
describe 'with --request_specs' do
12+
before { run_generator %w[posts --request_specs] }
13+
it { is_expected.to exist }
14+
end
15+
16+
describe 'with no options' do
17+
before { run_generator %w[posts] }
18+
it { is_expected.not_to exist }
19+
end
20+
end
21+
822
describe 'standard controller spec' do
923
subject { file('spec/controllers/posts_controller_spec.rb') }
1024

1125
describe 'with no options' do
12-
before { run_generator %w(posts) }
26+
before { run_generator %w[posts] }
1327
it { is_expected.to contain(/require 'rails_helper'/) }
1428
it { is_expected.to contain(/^RSpec.describe PostsController, #{type_metatag(:controller)}/) }
1529
it { is_expected.to contain(/GET #new/) }
@@ -28,12 +42,12 @@
2842
end
2943

3044
describe 'with --no-controller_specs' do
31-
before { run_generator %w(posts --no-controller_specs) }
45+
before { run_generator %w[posts --no-controller_specs] }
3246
it { is_expected.not_to exist }
3347
end
3448

3549
describe 'with --api' do
36-
before { run_generator %w(posts --api) }
50+
before { run_generator %w[posts --api] }
3751
it { is_expected.to contain(/require 'rails_helper'/) }
3852
it { is_expected.to contain(/^RSpec.describe PostsController, #{type_metatag(:controller)}/) }
3953
it { is_expected.not_to contain(/GET #new/) }
@@ -51,10 +65,16 @@
5165
end
5266
end
5367

68+
describe 'namespaced request spec' do
69+
subject { file('spec/requests/admin/posts_request_spec.rb') }
70+
before { run_generator %w[admin/posts --request_specs] }
71+
it { is_expected.to exist }
72+
end
73+
5474
describe 'namespaced controller spec' do
5575
subject { file('spec/controllers/admin/posts_controller_spec.rb') }
56-
before { run_generator %w(admin/posts) }
57-
it { is_expected.to contain(/^RSpec.describe Admin::PostsController, #{type_metatag(:controller)}/)}
76+
before { run_generator %w[admin/posts] }
77+
it { is_expected.to contain(/^RSpec.describe Admin::PostsController, #{type_metatag(:controller)}/) }
5878
end
5979

6080
describe 'view specs' do

0 commit comments

Comments
 (0)