Skip to content

Commit e72a5d3

Browse files
committed
Added Rspec::Generators::GeneratorGenerator
1 parent ac759a3 commit e72a5d3

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
require 'generators/rspec'
2+
3+
module Rspec
4+
module Generators
5+
# @private
6+
class GeneratorGenerator < Base
7+
class_option :namespace, :type => :boolean, :default => true,
8+
:desc => "Namespace generator under lib/generators/name"
9+
10+
def generate_generator_spec
11+
template 'generator_spec.rb', File.join('spec/lib/generators', class_path, "#{file_name}_generator_spec.rb")
12+
end
13+
14+
private
15+
16+
def generator_path
17+
if options[:namespace]
18+
File.join("generators", class_path, file_name, "#{file_name}_generator")
19+
else
20+
File.join("generators", class_path, "#{file_name}_generator")
21+
end
22+
end
23+
end
24+
end
25+
end
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require 'rails_helper'
2+
require '<%= generator_path %>'
3+
4+
<% module_namespacing do -%>
5+
RSpec.describe <%= class_name %>Generator, <%= type_metatag(:generator) %> do
6+
pending "add some examples to (or delete) #{__FILE__}"
7+
end
8+
<% end -%>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Generators are not automatically loaded by Rails
2+
require 'generators/rspec/generator/generator_generator'
3+
require 'support/generators'
4+
5+
RSpec.describe Rspec::Generators::GeneratorGenerator, :type => :generator do
6+
setup_default_destination
7+
8+
describe 'generator specs' do
9+
describe 'not namespaced' do
10+
before do
11+
run_generator %w(awesome)
12+
end
13+
14+
subject { file('spec/lib/generators/awesome_generator_spec.rb') }
15+
16+
describe 'the spec' do
17+
it { is_expected.to exist }
18+
it { is_expected.to contain(/require 'rails_helper'/) }
19+
it { is_expected.to contain(/require 'generators\/awesome\/awesome_generator'/) }
20+
it { is_expected.to contain(/^RSpec.describe AwesomeGenerator, #{type_metatag(:generator)}/) }
21+
end
22+
end
23+
24+
describe 'namespaced' do
25+
before do
26+
run_generator %w(wonderful/awesome)
27+
end
28+
29+
subject { file('spec/lib/generators/wonderful/awesome_generator_spec.rb') }
30+
31+
describe 'the spec' do
32+
it { is_expected.to exist }
33+
it { is_expected.to contain(/require 'rails_helper'/) }
34+
it { is_expected.to contain(/require 'generators\/wonderful\/awesome\/awesome_generator'/) }
35+
it { is_expected.to contain(/^RSpec.describe Wonderful::AwesomeGenerator, #{type_metatag(:generator)}/) }
36+
end
37+
end
38+
end
39+
end

0 commit comments

Comments
 (0)