#691: added specs for Users API

This commit is contained in:
Vokhmin Alexey V 2012-10-15 18:43:09 +04:00
parent 0879a7e46f
commit 84b49052b1
2 changed files with 99 additions and 0 deletions

View File

@ -8,6 +8,11 @@ class Api::V1::UsersController < Api::V1::BaseController
def show
@user = current_user if params[:id].nil?
if @user
render :show
else
render_json_response User.new, 'User does not exist', 422
end
end
def update

View File

@ -0,0 +1,94 @@
# -*- encoding : utf-8 -*-
require 'spec_helper'
describe Api::V1::UsersController do
before(:all) { User.destroy_all }
before do
stub_symlink_methods
@user = FactoryGirl.create(:user)
end
context 'for guest' do
[:show, :notifiers].each do |action|
it "should not be able to perform #{ action } action for a current user" do
get action, :format => :json
response.should_not be_success
end
end
it 'should be able to perform show action for a single user', :anonymous_access => true do
get :show, :id => @user.id, :format => :json
response.should render_template(:show)
end
it 'should not be able to perform show action for a single user', :anonymous_access => false do
get :show, :id => @user.id, :format => :json
response.should_not be_success
end
context 'should not be able to perform update action for a current user' do
before do
put :update, {:user => {:company => 'test_company'}}, :format => :json
end
it { response.should_not be_success }
it 'ensures that user has not been updated' do
@user.reload
@user.company.should_not == 'test_company'
end
end
context 'should not be able to perform notifiers action for a current user' do
before do
put :notifiers, {:notifiers => {:can_notify => false}}, :format => :json
end
it { response.should_not be_success }
it 'ensures that user notification settings have not been updated' do
@user.reload
@user.notifier.can_notify.should be_true
end
end
end
context 'for simple user' do
before do
http_login(@user)
end
[:show, :notifiers].each do |action|
it "should be able to perform #{ action } action for a current user" do
get action, :format => :json
response.should render_template(action)
end
end
it 'should be able to perform show action for a single user' do
get :show, :id => @user.id, :format => :json
response.should render_template(:show)
end
context 'should be able to perform update action for a current user' do
before do
put :update, {:user => {:company => 'test_company'}}, :format => :json
end
it { response.should be_success }
it 'ensures that user has been updated' do
@user.reload
@user.company.should == 'test_company'
end
end
context 'should be able to perform notifiers action for a current user' do
before do
put :notifiers, {:notifiers => {:can_notify => false}}, :format => :json
end
it { response.should be_success }
it 'ensures that user notification settings have been updated' do
@user.reload
@user.notifier.can_notify.should be_false
end
end
end
end