Skip to content

Instantly share code, notes, and snippets.

@ppdeassis
Last active December 17, 2015 08:18
Show Gist options
  • Save ppdeassis/5578582 to your computer and use it in GitHub Desktop.
Save ppdeassis/5578582 to your computer and use it in GitHub Desktop.
Template for a Controller spec
# spec/controllers/contacts_controller_spec.rb
require 'spec_helper'
describe MyController do
describe "#action" do
context "access restriction" do
it "requires authentication" do
# expect(repsonse).to redirect_to(login_path)
end
it 'requires authorization' do
# expect(controller).to have_received(:deny_access)
end
end
context "with access granted" do
before(:each) do
# ensure access is granted
# sign_in create(:user)
# can! :action, resource
end
context "assigns" do
it 'resource' do
# resource = create(:resource)
# get :show, id: resource.id
# expect(assigns(:resource)).to eq(resource)
# [decent_exposure]
# expect(controller.resource).to eq(resource)
end
end
context 'parameters' do
# strong_parameters
# NOT TESTED: http://robots.thoughtbot.com/shoulda-matchers-2-6-0
it { is_expected.to permit(:email).for(:create) }
end
context 'renders' do
# this helper makes all views get really rendered, checking for view errors
render_views
it ':edit' do
resource = create(:resource)
get :edit, id: resource.id
expect(response).to render_template(:edit)
end
end
# processing: actions: [:create, :update, :destroy]
context 'on a successful scenario' do
it "creates the resource" do
# expect do
# put :create, valid_attrs
# end.to change(Model, :count).by(1)
end
it 'responds with JSON data' do
put :create, valid_attrs
data = JSON.parse(response.body)
expect(data['status']).to eq('success')
end
end
context 'failures scenario' do
it "does not create the resource" do
# expect do
# put :create, invalid_attrs
# end.not_to change(Model, :count)
end
it 'responds with JSON data' do
put :create, valid_attrs
data = JSON.parse(response.body)
expect(data['status']).to eq('failure')
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment