require 'spec_helper' # Generators are not automatically loaded by Rails require 'generators/rspec/controller/controller_generator' describe Rspec::Generators::ControllerGenerator do # Tell the generator where to put its output (what it thinks of as Rails.root) destination File.expand_path("../../../../../tmp", __FILE__) before { prepare_destination } describe 'controller specs' do subject { file('spec/controllers/posts_controller_spec.rb') } describe 'generated by default' do before do run_generator %w(posts) end describe 'the spec' do it { should exist } it { should contain(/require 'spec_helper'/) } it { should contain(/describe PostsController/) } end end describe 'skipped with a flag' do before do run_generator %w(posts --no-controller_specs) end it { should_not exist } end end describe 'view specs' do describe 'are not generated' do describe 'with no-view-spec flag' do before do run_generator %w(posts index show --no-view-specs) end describe 'index.html.erb' do subject { file('spec/views/posts/index.html.erb_spec.rb') } it { should_not exist } end end describe 'with no actions' do before do run_generator %w(posts) end describe 'index.html.erb' do subject { file('spec/views/posts/index.html.erb_spec.rb') } it { should_not exist } end end end describe 'are generated' do describe 'with default template engine' do before do run_generator %w(posts index show) end describe 'index.html.erb' do subject { file('spec/views/posts/index.html.erb_spec.rb') } it { should exist } it { should contain(/require 'spec_helper'/) } it { should contain(/describe "posts\/index.html.erb"/) } end describe 'show.html.erb' do subject { file('spec/views/posts/show.html.erb_spec.rb') } it { should exist } it { should contain(/require 'spec_helper'/) } it { should contain(/describe "posts\/show.html.erb"/) } end end describe 'with haml' do before do run_generator %w(posts index --template_engine haml) end describe 'index.html.haml' do subject { file('spec/views/posts/index.html.haml_spec.rb') } it { should exist } it { should contain(/require 'spec_helper'/) } it { should contain(/describe "posts\/index.html.haml"/) } end end end end end