From a060acffeb1a9bef4f3c1aceb8e5e2445520c1c7 Mon Sep 17 00:00:00 2001 From: Arzumy MD <hello@ar.zu.my> Date: Fri, 20 May 2011 09:37:18 +0800 Subject: [PATCH] add spec for admins_controller#add_invites --- app/controllers/admins_controller.rb | 13 ++++---- spec/controllers/admins_controller_spec.rb | 37 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/app/controllers/admins_controller.rb b/app/controllers/admins_controller.rb index 37231b0dd2..1b7e858f8a 100644 --- a/app/controllers/admins_controller.rb +++ b/app/controllers/admins_controller.rb @@ -9,16 +9,15 @@ class AdminsController < ApplicationController end def add_invites - u = User.find(params[:user_id]) + user = User.find(params[:user_id]) - if u - notice = "Great Job!" - u.update_attributes(:invites => (u.invites += 10)) + if user.increment(:invites, 10).save + flash[:notice] = "Great Job!" else - notice = "there was a problem adding invites" + flash[:alert] = "there was a problem adding invites" end - redirect_to :back, :notice => notice, :user => {:id => u.id} + redirect_to user_search_path(:user => { :id => user.id }) end def admin_inviter @@ -27,6 +26,6 @@ class AdminsController < ApplicationController opts.merge!(:existing_user => existing_user) if existing_user Invitation.create_invitee(opts) flash[:notice] = "invitation sent to #{params[:identifier]}" - redirect_to '/admins/user_search' + redirect_to user_search_path end end diff --git a/spec/controllers/admins_controller_spec.rb b/spec/controllers/admins_controller_spec.rb index 57721ace2e..48348e0da9 100644 --- a/spec/controllers/admins_controller_spec.rb +++ b/spec/controllers/admins_controller_spec.rb @@ -60,7 +60,41 @@ describe AdminsController do end end + describe '#add_invites' do + context 'admin not signed in' do + it 'is behind redirect_unless_admin' do + get :add_invites + response.should redirect_to root_url + end + end + + context 'admin signed in' do + before do + AppConfig[:admins] = [@user.username] + end + + it "redirects to :back with user id" do + get :add_invites, :user_id => @user.id + response.should redirect_to user_search_path(:user => { :id => @user.id }) + end + + it "increases user's invite by 10" do + expect { + get :add_invites, :user_id => @user.id + }.to change { @user.reload.invites }.by(10) + flash.notice.should include('Great Job') + end + end + end + describe '#admin_inviter' do + context 'admin not signed in' do + it 'is behind redirect_unless_admin' do + get :admin_inviter + response.should redirect_to root_url + end + end + context 'admin signed in' do before do AppConfig[:admins] = [@user.username] @@ -69,7 +103,8 @@ describe AdminsController do it 'invites a new user' do Invitation.should_receive(:create_invitee).with(:service => 'email', :identifier => 'bob@moms.com') get :admin_inviter, :identifier => 'bob@moms.com' - response.should be_redirect + response.should redirect_to user_search_path + flash.notice.should include("invitation sent") end it 'passes an existing user to create_invitee' do -- GitLab