Test Rails generators with RSpec
Ruby
Latest commit f1fb8b4 May 18, 2017 @stevehodgkiss Test on newer Rubies
Permalink
Failed to load latest commit information.
lib
spec Specify expected error class May 18, 2017
.gitignore
.rspec
.travis.yml Test on newer Rubies May 18, 2017
Gemfile Fix Rubinius builds on Travis Dec 20, 2013
MIT-LICENSE Add MIT-LICENSE Mar 8, 2011
README.md Use new RSpec syntax in README Dec 20, 2014
Rakefile Add rake spec task Mar 2, 2011
generator_spec.gemspec

README.md

Generator Spec Build Status

Test Rails generators with RSpec using the standard Rails::Generators::TestCase assertion methods.

Usage

Gemfile:

group :test do
  gem "generator_spec"
end

Spec (files in spec/lib/generators are recognized as generator type example group):

# spec/lib/generators/test/test_generator_spec.rb
    
require "generator_spec"

describe TestGenerator, type: :generator do
  destination File.expand_path("../../tmp", __FILE__)
  arguments %w(something)

  before(:all) do
    prepare_destination
    run_generator
  end

  it "creates a test initializer" do
    assert_file "config/initializers/test.rb", "# Initializer"
  end
end

An RSpec file matching DSL is also provided, taken with permission from beard by carlhuda.

describe TestGenerator, "using custom matcher", type: :generator do
  destination File.expand_path("../../tmp", __FILE__)
  
  before do
    prepare_destination
    run_generator
  end

  specify do
    expect(destination_root).to have_structure {
      no_file "test.rb"
      directory "config" do
        directory "initializers" do
          file "test.rb" do
            contains "# Initializer"
          end
        end
      end
      directory "db" do
        directory "migrate" do
          file "123_create_tests.rb"
          migration "create_tests" do
            contains "class TestMigration"
          end
        end
      end
    }
  end
end