require 'spec_helper' describe Api::V1::UsersController, type: :controller do before(:all) { User.destroy_all } before do stub_symlink_methods @user = FactoryGirl.create(:user) end context 'for guest' do [:show_current_user, :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_truthy end end end context 'for simple user' do before do http_login(@user) end [:show_current_user, :notifiers].each do |action| it "should be able to perform #{ action } action for a current user" do get action, format: :json response.should be_success 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_falsy end end end end