Skip to content

Instantly share code, notes, and snippets.

@hchoroomi
Created March 13, 2009 16:13
Show Gist options
  • Save hchoroomi/78635 to your computer and use it in GitHub Desktop.
Save hchoroomi/78635 to your computer and use it in GitHub Desktop.
require File.dirname(__FILE__) + '/../spec_helper'
describe CategoriesController, "GET #index" do
subject { controller }
before(:each) { get :index }
it { should assign_to(:categories) }
it { should respond_with(:success) }
end
describe CategoriesController, "GET #show" do
subject { controller }
before(:each) do
Category.should_receive(:find).with('1').and_return(mock_model(Category))
get :show, :id => '1'
end
it { should assign_to(:category) }
it { should respond_with(:success) }
end
describe CategoriesController, "GET #new" do
subject { controller }
before(:each) do
Category.should_receive(:new).and_return(mock_model(Category))
get :new
end
it { should assign_to(:category) }
it { should respond_with(:success) }
end
describe CategoriesController, "GET #edit" do
subject { controller }
before(:each) do
Category.should_receive(:find).with('1').and_return(mock_model(Category))
get :edit, :id => '1'
end
it { should assign_to(:category) }
it { should respond_with(:success) }
end
describe CategoriesController, "POST #create" do
before(:each) do
@category = mock_model(Category, :save => true)
Category.should_receive(:new).with({}).and_return(@category)
end
def do_post
post :create, :category => {}
end
describe CategoriesController, "(successful creation)" do
subject { controller }
before(:each) do
@category.should_receive(:save).and_return(true)
do_post
end
it { should assign_to(:category) }
it { should set_the_flash }
it { response.should redirect_to category_path(@category) }
end
describe CategoriesController, "(unsuccessful creation)" do
subject { controller }
before(:each) do
@category.should_receive(:save).and_return(false)
do_post
end
it { should_not set_the_flash }
it { response.should render_template('new') }
end
end
describe CategoriesController, "PUT #update" do
before(:each) do
@category = mock_model(Category, :update_attributes => true)
Category.should_receive(:find).with('1').and_return(@category)
end
def do_put
put :update, :id => '1', :category => {}
end
describe CategoriesController, "(successful creation)" do
subject { controller }
before(:each) do
@category.should_receive(:update_attributes).and_return(true)
do_put
end
it { should assign_to(:category) }
it { should set_the_flash }
it { response.should redirect_to category_path(@category) }
end
describe CategoriesController, "(unsuccessful creation)" do
subject { controller }
before(:each) do
@category.should_receive(:update_attributes).and_return(false)
do_put
end
it { should_not set_the_flash }
it { response.should render_template('edit') }
end
end
describe CategoriesController, "DELETE #destroy" do
subject { controller }
before(:each) do
@category = mock_model(Category)
Category.should_receive(:find).with('1').and_return(@category)
@category.should_receive(:destroy)
delete :destroy, :id => '1'
end
it { should assign_to(:category) }
it { should respond_with(:redirect) }
it { response.should redirect_to(categories_path)}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment