Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Test Rails generators with RSpec

tree: aa07dc1f86

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec Initial commit March 01, 2011
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 MIT-LICENSE Add MIT-LICENSE March 08, 2011
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile Add rake spec task March 02, 2011
Octocat-spinner-32 generator_spec.gemspec
README.md

Generator Spec

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

Usage

Gemfile:

group :test do
  gem "generator_spec"
end

Spec:

# spec/lib/generators/test/test_generator_spec.rb

require "generator_spec/test_case"

describe TestGenerator do
  include GeneratorSpec::TestCase
  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" do
  include GeneratorSpec::TestCase
  destination File.expand_path("../../tmp", __FILE__)

  before do
    prepare_destination
    run_generator
  end

  specify do
    destination_root.should 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
Something went wrong with that request. Please try again.