diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 46af70f57..70f3c3101 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -13,7 +13,7 @@ module Admin @user.level = params[:user][:level] @user.inviter_id = CurrentUser.id unless @user.inviter_id.present? @user.save - redirect_to edit_admin_user_path(@user, :notice => "User updated"), :notice => "User updated" + redirect_to edit_admin_user_path(@user), :notice => "User updated" end protected diff --git a/test/functional/admin/users_controller_test.rb b/test/functional/admin/users_controller_test.rb index 7ddb2a091..8e4a0f126 100644 --- a/test/functional/admin/users_controller_test.rb +++ b/test/functional/admin/users_controller_test.rb @@ -1,8 +1,50 @@ require 'test_helper' class Admin::UsersControllerTest < ActionController::TestCase - # Replace this with your real tests. - test "the truth" do - assert true + context "Admin::UsersController" do + setup do + @mod = FactoryGirl.create(:moderator_user) + CurrentUser.user = @mod + CurrentUser.ip_addr = "127.0.0.1" + @user = FactoryGirl.create(:user) + @admin = FactoryGirl.create(:admin_user) + end + + context "#edit" do + should "render" do + get :edit, {:id => @user.id} + assert_response :success + end + end + + context "#update" do + context "on a basic user" do + should "succeed" do + put :update, {:id => @user.id, :user => {:level => "30"}} + assert_redirected_to(edit_admin_user_path(@user)) + @user.reload + assert_equal(30, @user.level) + assert_equal(@mod.id, @user.inviter_id) + end + + context "promoted to an admin" do + should "fail" do + put :update, {:id => @user.id, :user => {:level => "50"}} + assert_redirected_to(new_session_path) + @user.reload + assert_equal(20, @user.level) + end + end + end + + context "on an admin user" do + should "fail" do + put :update, {:id => @admin.id, :user => {:level => "30"}} + assert_redirected_to new_session_path + @admin.reload + assert_equal(50, @admin.level) + end + end + end end end