Skip to content

Instantly share code, notes, and snippets.

@ClayShentrup
Created December 16, 2012 08:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ClayShentrup/4305690 to your computer and use it in GitHub Desktop.
Save ClayShentrup/4305690 to your computer and use it in GitHub Desktop.
Pristine RSpec controller spec using latest syntax and general minimalism
require 'spec_helper'
describe BucketsController do
render_views
login_admin
def valid_attributes
FactoryGirl.attributes_for(:bucket)
end
let(:bucket) { Bucket.create! valid_attributes }
def create_bucket
bucket
end
describe 'GET index' do
it 'assigns all buckets as @buckets' do
create_bucket
get :index
expect(assigns(:buckets)).to eq [bucket]
end
end
describe 'GET show' do
it 'assigns the requested bucket as @bucket' do
get :show, id: bucket
expect(assigns(:bucket)).to eq bucket
end
end
describe 'GET new' do
it 'assigns a new bucket as @bucket' do
get :new
expect(assigns(:bucket)).to be_a_new Bucket
end
end
describe 'GET edit' do
it 'assigns the requested bucket as @bucket' do
get :edit, id: bucket
expect(assigns(:bucket)).to eq bucket
end
end
describe 'POST create' do
describe 'with valid params' do
it 'creates a new bucket' do
expect {
post :create, bucket: valid_attributes
}.to change(Bucket, :count).by(1)
end
it 'assigns a newly created bucket as @bucket' do
post :create, bucket: valid_attributes
expect(assigns(:bucket)).to be_a Bucket
expect(assigns(:bucket)).to be_persisted
end
it 'redirects to the created bucket' do
post :create, bucket: valid_attributes
expect(response).to redirect_to Bucket.last
end
end
describe 'with invalid params' do
it 'assigns a newly created but unsaved bucket as @bucket' do
Bucket.any_instance.stub(:save) { false }
post :create
expect(assigns(:bucket)).to be_a_new Bucket
end
it 're-renders the "new" template' do
Bucket.any_instance.stub(:save) { false }
post :create, bucket: {}
expect(response).to render_template :new
end
end
end
describe 'PUT update' do
describe 'with valid params' do
it 'updates the requested bucket' do
Bucket.any_instance.should_receive(:update_attributes).with('these' => 'params')
put :update, id: bucket, bucket: {'these' => 'params'}
end
it 'assigns the requested bucket as @bucket' do
put :update, id: bucket, bucket: valid_attributes
expect(assigns(:bucket)).to eq bucket
end
it 'redirects to the bucket' do
put :update, id: bucket, bucket: valid_attributes
expect(response).to redirect_to bucket
end
end
describe 'with invalid params' do
it 'assigns the bucket as @bucket' do
Bucket.any_instance.stub(:save) { false }
put :update, id: bucket
expect(assigns(:bucket)).to eq bucket
end
it 're-renders the "edit" template' do
Bucket.any_instance.stub(:save) { false }
put :update, id: bucket
expect(response).to render_template :edit
end
end
end
describe 'DELETE destroy' do
before do
create_bucket
end
it 'destroys the requested bucket' do
expect {
delete :destroy, id: bucket
}.to change(Bucket, :count).by(-1)
end
it 'redirects to the buckets list' do
delete :destroy, id: bucket
expect(response).to redirect_to buckets_url
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment