Skip to content

Commit

Permalink
Add generator spec generator and specs (#2085)
Browse files Browse the repository at this point in the history
Added generator spec generator
  • Loading branch information
ConSou authored and JonRowe committed Mar 1, 2019
1 parent 7720e7b commit 7d4ed77
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
24 changes: 24 additions & 0 deletions lib/generators/rspec/generators/generator_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
require 'generators/rspec'

module Rspec
module Generators
# @private
class GeneratorsGenerator < Base
class_option :generator_specs, :type => :boolean, :default => false, :desc => "Generate generator specs"

def generate_generator_spec
return unless options[:generator_specs]

template template_name, File.join('spec/generator', class_path, filename)
end

def template_name
'generator_spec.rb'
end

def filename
"#{table_name}_generator_spec.rb"
end
end
end
end
6 changes: 6 additions & 0 deletions lib/generators/rspec/generators/templates/generator_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
require 'rails_helper'

RSpec.describe "<%= class_name.pluralize %>", <%= type_metatag(:generator) %> do

pending "add some scenarios (or delete) #{__FILE__}"
end
35 changes: 35 additions & 0 deletions spec/generators/rspec/generators/generator_generator_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
require 'generators/rspec/generators/generator_generator'
require 'support/generators'

RSpec.describe Rspec::Generators::GeneratorsGenerator, :type => :generator do
setup_default_destination

describe "generator specs" do
subject(:generator_spec) { file("spec/generator/posts_generator_spec.rb") }
describe "are generated independently/can be generated" do
before do
run_generator %w(posts --generator-specs)
end
it "creates the spec file" do
expect(generator_spec).to exist
end
it "contains 'rails_helper in the spec file'" do
expect(generator_spec).to contain(/require 'rails_helper'/)
end
it "includes the generator type in the metadata" do
expect(generator_spec).to contain(/^RSpec.describe \"Posts\", #{type_metatag(:generator)}/)
end
end

describe "are not generated/are skipped by default" do
before do
run_generator %w(posts)
end
describe "the spec" do
it "does not exist" do
expect(generator_spec).to_not exist
end
end
end
end
end

0 comments on commit 7d4ed77

Please sign in to comment.