Test Rails generators with RSpec
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib version 0.9.3 Nov 28, 2014
spec
.gitignore Remove and ignore Gemfile.lock Dec 2, 2012
.rspec Initial commit Mar 1, 2011
.travis.yml
Gemfile Fix Rubinius builds on Travis Dec 20, 2013
MIT-LICENSE
README.md Use new RSpec syntax in README Dec 20, 2014
Rakefile
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