Last active
December 12, 2015 01:58
-
-
Save anithri/4694506 to your computer and use it in GitHub Desktop.
rspec scaffold/controller_spec template based o
n Everyday Rails Testing with Rspec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'spec_helper' | |
describe <%= controller_class_name %>Controller do | |
# This should return the minimal set of attributes required to create a valid | |
# <%= class_name %>. As you add validations to <%= class_name %>, be sure to | |
# update the return value of this method accordingly. | |
def valid_attributes | |
attributes_for(:<%= file_name %>) | |
end | |
# This should return the minimal set of values that should be in the session | |
# in order to pass any filters (e.g. authentication) defined in | |
# <%= controller_class_name %>Controller. Be sure to keep this updated too. | |
def valid_session | |
{} | |
end | |
<% unless options[:singleton] -%> | |
describe "GET index" do | |
it "assigns all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do | |
<%= file_name %> = create(:<%= file_name %>) | |
get :index, {}, valid_session | |
assigns(:<%= table_name %>).should eq([<%= file_name %>]) | |
end | |
it "renders the :index template" do | |
get :index | |
response.should render_template :index | |
end | |
end | |
<% end -%> | |
describe "GET show" do | |
before :each do | |
@<%= file_name %> = create(:<%= file_name %>) | |
end | |
it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do | |
get :show, {id: @<%= file_name %>}, valid_session | |
assigns(:<%= ns_file_name %>).should eq(@<%= file_name %>) | |
end | |
it "renders the :show template" do | |
get :show, {id: @<%= file_name %>}, valid_session | |
response.should render_template :show | |
end | |
end | |
describe "GET new" do | |
it "assigns a new <%= ns_file_name %> as @<%= ns_file_name %>" do | |
get :new, {}, valid_session | |
assigns(:<%= ns_file_name %>).should be_a_new(<%= class_name %>) | |
end | |
it "renders the :new template" do | |
get :new, {}, valid_session | |
response.should render_template :new | |
end | |
end | |
describe "GET edit" do | |
before :each do | |
@<%= file_name %> = create(:<%= file_name %>) | |
end | |
it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do | |
get :edit, {id: @<%= file_name %>}, valid_session | |
assigns(:<%= ns_file_name %>).should eq(@<%= file_name %>) | |
end | |
it "renders the :edit template" do | |
get :edit, {id: @<%= file_name %>}, valid_session | |
response.should render_template :edit | |
end | |
end | |
describe "POST create" do | |
describe "with valid params" do | |
it "creates a new <%= class_name %>" do | |
expect { | |
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session | |
}.to change(<%= class_name %>, :count).by(1) | |
end | |
it "assigns a newly created <%= ns_file_name %> as @<%= ns_file_name %>" do | |
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session | |
assigns(:<%= ns_file_name %>).should be_a(<%= class_name %>) | |
assigns(:<%= ns_file_name %>).should be_persisted | |
end | |
it "redirects to the created <%= ns_file_name %>" do | |
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session | |
response.should redirect_to(<%= class_name %>.last) | |
end | |
end | |
describe "with invalid params" do | |
it "assigns a newly created but unsaved <%= ns_file_name %> as @<%= ns_file_name %>" do | |
# Trigger the behavior that occurs when invalid params are submitted | |
<%= class_name %>.any_instance.stub(:save).and_return(false) | |
post :create, {<%= ns_file_name %>: {}}, valid_session | |
assigns(:<%= ns_file_name %>).should be_a_new(<%= class_name %>) | |
end | |
it "re-renders the 'new' template" do | |
# Trigger the behavior that occurs when invalid params are submitted | |
<%= class_name %>.any_instance.stub(:save).and_return(false) | |
post :create, {<%= ns_file_name %>: {}}, valid_session | |
response.should render_template :new | |
end | |
end | |
end | |
describe "PUT update" do | |
before :each do | |
@<%= file_name %> = create(:<%= file_name %>) | |
end | |
it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do | |
put :update, {id: @<%= file_name %>, <%= file_name %>: valid_attributes}, valid_session | |
assigns(:<%= file_name %>).should eq(@<%= file_name %>) | |
end | |
describe "with valid params" do | |
it "updates the requested <%= ns_file_name %>" do | |
pending "insert valid attribute name and valid value" | |
#put :update, {id: @<%= file_name %>, <%= file_name %>: attributes_for(:<%= file_name %>, ATTRIBUTE: GOOD VALUE }, valid_session | |
@<%= file_name %>.reload | |
#@<%= file_name %>.ATTRIBUTE.should eq GOOD_VALUE | |
end | |
it "redirects to the <%= ns_file_name %>" do | |
put :update, {id: @<%= file_name %>, <%= ns_file_name %>: valid_attributes}, valid_session | |
response.should redirect_to(@<%= file_name %>) | |
end | |
end | |
describe "with invalid params" do | |
it "assigns the <%= ns_file_name %> as @<%= ns_file_name %>" do | |
# Trigger the behavior that occurs when invalid params are submitted | |
pending "insert valid ATTRIBUTE and invalid BAD_VALUE" | |
#put :update, {id: @<%= file_name %>, attributes_for(:<%= ns_file_name %>, ATTRIBUTE: BAD_VALUE}, valid_session | |
#@<%= file_name %>.ATTRIBUTE.should_not eq BAD_VALUE | |
end | |
it "re-renders the 'edit' template" do | |
pending "insert valid ATTRIBUTE and invalid BAD_VALUE" | |
#put :update, {id: @<%= file_name %>, attributes_for(:<%= ns_file_name %>, ATTRIBUTE: BAD_VALUE}, valid_session | |
#response.should render_template("edit") | |
end | |
end | |
end | |
describe "DELETE destroy" do | |
before :each do | |
@<%= file_name %> = create(:<%= file_name %>) | |
end | |
it "destroys the requested <%= ns_file_name %>" do | |
expect { | |
delete :destroy, {id: @<%= file_name %>}, valid_session | |
}.to change(<%= class_name %>, :count).by(-1) | |
end | |
it "redirects to the <%= table_name %> list" do | |
delete :destroy, {id: @<%= file_name %>}, valid_session | |
response.should redirect_to(<%= index_helper %>_url) | |
end | |
end | |
end |
I think I'm a little inconsistant with file_name vs. ns_file_name, but as I haven't yet needed to use a namespace It's not important to me at the moment. I'll revise when I get to that situation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
put in lib/templates/rspec/scaffold