Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stevehodgkiss/generator_spec
Test Rails generators with RSpec
https://github.com/stevehodgkiss/generator_spec
Last synced: 3 months ago
JSON representation
Test Rails generators with RSpec
- Host: GitHub
- URL: https://github.com/stevehodgkiss/generator_spec
- Owner: stevehodgkiss
- License: mit
- Created: 2011-03-01T16:27:40.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-01-25T07:20:13.000Z (10 months ago)
- Last Synced: 2024-05-11T23:03:43.491Z (6 months ago)
- Language: Ruby
- Homepage:
- Size: 77.1 KB
- Stars: 107
- Watchers: 4
- Forks: 22
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
# Generator Spec [![Build Status](https://travis-ci.org/stevehodgkiss/generator_spec.svg?branch=master)](https://travis-ci.org/stevehodgkiss/generator_spec)
Test Rails generators with RSpec using the standard Rails::Generators::TestCase assertion methods.
# Usage
Gemfile:
```ruby
group :test do
gem "generator_spec"
end
```Spec (files in `spec/lib/generators` are recognized as generator type example group):
```ruby
# spec/lib/generators/test/test_generator_spec.rbrequire "generator_spec"
describe TestGenerator, type: :generator do
destination File.expand_path("../../tmp", __FILE__)
arguments %w(something)before(:all) do
prepare_destination
run_generator
endit "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](https://github.com/carlhuda/beard/blob/master/spec/support/matcher.rb) by [carlhuda](https://github.com/carlhuda).
```ruby
describe TestGenerator, "using custom matcher", type: :generator do
destination File.expand_path("../../tmp", __FILE__)before do
prepare_destination
run_generator
endspecify do
expect(destination_root).to have_structure {
no_file "test.rb"
directory "config" do
directory "initializers" do
file "test.rb" do
contains "# Initializer"
does_not_contain "Something else"
end
end
end
directory "db" do
directory "migrate" do
file "123_create_tests.rb"
migration "create_tests" do
contains "class TestMigration"
does_not_contain "Something else"
end
end
end
}
end
end
```