1 # Redmine - project management software
2 # Copyright (C) 2006-2009 Jean-Philippe Lang
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 require File.dirname(__FILE__) + '/../test_helper'
19 require 'members_controller'
21 # Re-raise errors caught by the controller.
22 class MembersController; def rescue_action(e) raise e end; end
25 class MembersControllerTest < ActionController::TestCase
26 fixtures :projects, :members, :member_roles, :roles, :users
29 @controller = MembersController.new
30 @request = ActionController::TestRequest.new
31 @response = ActionController::TestResponse.new
33 @request.session[:user_id] = 2
36 def test_members_routing
38 {:method => :post, :path => 'projects/5234/members/new'},
39 :controller => 'members', :action => 'new', :id => '5234'
44 assert_difference 'Member.count' do
45 post :new, :id => 1, :member => {:role_ids => [1], :user_id => 7}
47 assert_redirected_to '/projects/ecookbook/settings/members'
48 assert User.find(7).member_of?(Project.find(1))
51 def test_create_multiple
52 assert_difference 'Member.count', 3 do
53 post :new, :id => 1, :member => {:role_ids => [1], :user_ids => [7, 8, 9]}
55 assert_redirected_to '/projects/ecookbook/settings/members'
56 assert User.find(7).member_of?(Project.find(1))
60 assert_no_difference 'Member.count' do
61 post :edit, :id => 2, :member => {:role_ids => [1], :user_id => 3}
63 assert_redirected_to '/projects/ecookbook/settings/members'
67 assert_difference 'Member.count', -1 do
68 post :destroy, :id => 2
70 assert_redirected_to '/projects/ecookbook/settings/members'
71 assert !User.find(3).member_of?(Project.find(1))
74 def test_autocomplete_for_member
75 get :autocomplete_for_member, :id => 1, :q => 'mis'
76 assert_response :success
77 assert_template 'autocomplete_for_member'
79 assert_tag :label, :content => /User Misc/,
80 :child => { :tag => 'input', :attributes => { :name => 'member[user_ids][]', :value => '8' } }