[#800 #801] Refactor AutoCompletesController#users to not be coupled to Groups

This commit is contained in:
Eric Davis 2010-12-03 14:08:52 -08:00
parent a110f1041d
commit 5deae7ebe3
3 changed files with 44 additions and 18 deletions

View File

@ -34,10 +34,15 @@ class AutoCompletesController < ApplicationController
end end
def users def users
@group = Group.find(params[:id]) if params[:remove_group_members].present?
@users = User.active.like(params[:q]).find(:all, :limit => 100) - @group.users @group = Group.find(params[:remove_group_members])
@removed_users = @group.users
else
@removed_users = []
end
@users = User.active.like(params[:q]).find(:all, :limit => 100) - @removed_users
render :layout => false render :layout => false
end end
private private

View File

@ -33,7 +33,7 @@
<%= observe_field(:user_search, <%= observe_field(:user_search,
:frequency => 0.5, :frequency => 0.5,
:update => :users, :update => :users,
:url => auto_complete_users_path(:id => @group), :url => auto_complete_users_path(:remove_group_members => @group),
:with => 'q') :with => 'q')
%> %>

View File

@ -71,22 +71,43 @@ class AutoCompletesControllerTest < ActionController::TestCase
@lastname = User.generate!(:lastname => 'Complete') @lastname = User.generate!(:lastname => 'Complete')
@none = User.generate!(:login => 'hello', :firstname => 'ABC', :lastname => 'DEF') @none = User.generate!(:login => 'hello', :firstname => 'ABC', :lastname => 'DEF')
@inactive = User.generate!(:firstname => 'Complete', :status => User::STATUS_LOCKED) @inactive = User.generate!(:firstname => 'Complete', :status => User::STATUS_LOCKED)
end
context "with no restrictions" do
setup do
get :users, :q => 'complete'
end
get :users, :q => 'complete', :id => Group.first.id should_respond_with :success
should "render a list of matching users in checkboxes" do
assert_select "input[type=checkbox][value=?]", @login.id
assert_select "input[type=checkbox][value=?]", @firstname.id
assert_select "input[type=checkbox][value=?]", @lastname.id
assert_select "input[type=checkbox][value=?]", @none.id, :count => 0
end
should "only show active users" do
assert_select "input[type=checkbox][value=?]", @inactive.id, :count => 0
end
end end
should_respond_with :success context "restrict by removing group members" do
setup do
should "render a list of matching users in checkboxes" do @group = Group.first
assert_select "input[type=checkbox][value=?]", @login.id @group.users << @login
assert_select "input[type=checkbox][value=?]", @firstname.id @group.users << @firstname
assert_select "input[type=checkbox][value=?]", @lastname.id get :users, :q => 'complete', :remove_group_members => @group.id
assert_select "input[type=checkbox][value=?]", @none.id, :count => 0 end
end
should_respond_with :success
should "only show active users" do
assert_select "input[type=checkbox][value=?]", @inactive.id, :count => 0 should "not include existing members of the Group" do
assert_select "input[type=checkbox][value=?]", @lastname.id
assert_select "input[type=checkbox][value=?]", @login.id, :count => 0
assert_select "input[type=checkbox][value=?]", @firstname.id, :count => 0
end
end end
end end
end end