Last active
December 17, 2015 08:18
-
-
Save ppdeassis/5578582 to your computer and use it in GitHub Desktop.
Template for a Controller spec
This file contains 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
# 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