Improve test coverage of UsersController

footer-fixes
Marcin Kulik 11 years ago
parent 4cd145cac7
commit 82c6c034c5

@ -30,7 +30,7 @@ class UsersController < ApplicationController
end end
def update def update
@user = User.find(current_user.id) @user = current_user.clone
if @user.update_attributes(update_params) if @user.update_attributes(update_params)
redirect_to profile_path(@user), notice: 'Account settings saved.' redirect_to profile_path(@user), notice: 'Account settings saved.'

@ -97,7 +97,7 @@ describe UsersController do
context "when real user username given" do context "when real user username given" do
let(:user) { create(:user) } let(:user) { create(:user) }
it 'renders "show" template with HomePagePresenter as page' do it 'renders "show" template' do
should render_template('show') should render_template('show')
end end
end end
@ -120,11 +120,76 @@ describe UsersController do
end end
describe '#edit' do describe '#edit' do
it 'should have specs' subject { get :edit }
let(:user) { create(:user) }
before do
login_as(user)
end
it "is successful" do
subject
expect(response.status).to eq(200)
end
it 'renders "edit" template' do
subject
expect(response).to render_template(:edit)
end
context "for guest user" do
before do
logout
end
it "redirects to login page" do
subject
expect(response).to redirect_to(login_path)
end
end
end end
describe '#update' do describe '#update' do
it 'should have specs' subject { put :update, user: { username: 'batman' } }
let(:user) { create(:user) }
before do
login_as(user)
end
it "redirects to profile" do
subject
expect(response).to redirect_to(profile_path('batman'))
end
context "when update fails" do
before do
allow(user).to receive(:update_attributes) { false }
end
it "responds with 422 status code" do
subject
expect(response.status).to eq(422)
end
it 'renders "edit" template' do
subject
expect(response).to render_template(:edit)
end
end
context "for guest user" do
before do
logout
end
it "redirects to login page" do
subject
expect(response).to redirect_to(login_path)
end
end
end end
end end

@ -29,6 +29,10 @@ module Asciinema
def login_as(user) def login_as(user)
controller.current_user = user controller.current_user = user
end end
def logout
controller.current_user = nil
end
end end
module FeatureHelpers module FeatureHelpers

Loading…
Cancel
Save