##// END OF EJS Templates
Fixed that project settings should show locked members (#22034)....
Jean-Philippe Lang -
r15734:514d9bad9efd
parent child
Show More
@@ -26,7 +26,7 class MembersController < ApplicationController
26 require_sudo_mode :create, :update, :destroy
26 require_sudo_mode :create, :update, :destroy
27
27
28 def index
28 def index
29 scope = @project.memberships.active
29 scope = @project.memberships
30 @offset, @limit = api_offset_and_limit
30 @offset, @limit = api_offset_and_limit
31 @member_count = scope.count
31 @member_count = scope.count
32 @member_pages = Paginator.new @member_count, @limit, params['page']
32 @member_pages = Paginator.new @member_count, @limit, params['page']
@@ -1,5 +1,5
1 <% roles = Role.find_all_givable
1 <% roles = Role.find_all_givable
2 members = @project.memberships.active.sorted.to_a %>
2 members = @project.memberships.sorted.to_a %>
3
3
4 <p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p>
4 <p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p>
5
5
@@ -117,6 +117,16 class MembersControllerTest < Redmine::ControllerTest
117 assert_redirected_to '/projects/ecookbook/settings/members'
117 assert_redirected_to '/projects/ecookbook/settings/members'
118 end
118 end
119
119
120 def test_update_locked_member_should_be_allowed
121 User.find(3).lock!
122
123 put :update, :id => 2, :membership => {:role_ids => [1]}
124 assert_response 302
125 member = Member.find(2)
126 assert member.user.locked?
127 assert_equal [1], member.role_ids
128 end
129
120 def test_update_should_not_add_unmanaged_roles
130 def test_update_should_not_add_unmanaged_roles
121 role = Role.find(1)
131 role = Role.find(1)
122 role.update! :all_roles_managed => false
132 role.update! :all_roles_managed => false
@@ -157,6 +167,14 class MembersControllerTest < Redmine::ControllerTest
157 assert !User.find(3).member_of?(Project.find(1))
167 assert !User.find(3).member_of?(Project.find(1))
158 end
168 end
159
169
170 def test_destroy_locked_member_should_be_allowed
171 assert User.find(3).lock!
172
173 assert_difference 'Member.count', -1 do
174 delete :destroy, :id => 2
175 end
176 end
177
160 def test_destroy_should_fail_with_unmanaged_roles
178 def test_destroy_should_fail_with_unmanaged_roles
161 role = Role.find(1)
179 role = Role.find(1)
162 role.update! :all_roles_managed => false
180 role.update! :all_roles_managed => false
@@ -527,6 +527,18 class ProjectsControllerTest < Redmine::ControllerTest
527 assert_select 'a#tab-versions[href=?]', '/projects/ecookbook/settings/versions?version_name=.1&version_status='
527 assert_select 'a#tab-versions[href=?]', '/projects/ecookbook/settings/versions?version_name=.1&version_status='
528 end
528 end
529
529
530 def test_settings_should_show_locked_members
531 user = User.generate!
532 member = User.add_to_project(user, Project.find(1))
533 user.lock!
534 assert user.reload.locked?
535 @request.session[:user_id] = 2
536
537 get :settings, :id => 'ecookbook', :tab => 'members'
538 assert_response :success
539 assert_select "tr#member-#{member.id}"
540 end
541
530 def test_update
542 def test_update
531 @request.session[:user_id] = 2 # manager
543 @request.session[:user_id] = 2 # manager
532 post :update, :id => 1, :project => {:name => 'Test changed name',
544 post :update, :id => 1, :project => {:name => 'Test changed name',
@@ -37,20 +37,17 class Redmine::ApiTest::MembershipsTest < Redmine::ApiTest::Base
37 assert_response :success
37 assert_response :success
38 assert_equal 'application/json', @response.content_type
38 assert_equal 'application/json', @response.content_type
39 json = ActiveSupport::JSON.decode(response.body)
39 json = ActiveSupport::JSON.decode(response.body)
40 assert_equal({
40 assert_equal 3, json["total_count"]
41 "memberships" =>
41 assert_equal 25, json["limit"]
42 [{"id"=>1,
42 assert_equal 0, json["offset"]
43 "project" => {"name"=>"eCookbook", "id"=>1},
43 assert_include({
44 "roles" => [{"name"=>"Manager", "id"=>1}],
44 "id"=>1,
45 "user" => {"name"=>"John Smith", "id"=>2}},
45 "project" => {"name"=>"eCookbook", "id"=>1},
46 {"id"=>2,
46 "roles" => [{"name"=>"Manager", "id"=>1}],
47 "project" => {"name"=>"eCookbook", "id"=>1},
47 "user" => {"name"=>"John Smith", "id"=>2}
48 "roles" => [{"name"=>"Developer", "id"=>2}],
48 },
49 "user" => {"name"=>"Dave Lopper", "id"=>3}}],
49 json["memberships"]
50 "limit" => 25,
50 )
51 "total_count" => 2,
52 "offset" => 0},
53 json)
54 end
51 end
55
52
56 test "GET /projects/:project_id/memberships.xml should succeed for closed project" do
53 test "GET /projects/:project_id/memberships.xml should succeed for closed project" do
@@ -61,6 +58,15 class Redmine::ApiTest::MembershipsTest < Redmine::ApiTest::Base
61 assert_response :success
58 assert_response :success
62 end
59 end
63
60
61 test "GET /projects/:project_id/memberships.xml should include locked users" do
62 assert User.find(3).lock!
63 get '/projects/ecookbook/memberships.xml', {}, credentials('jsmith')
64 assert_response :success
65 assert_select 'memberships[type=array] membership id', :text => '2' do
66 assert_select '~ user[id="3"][name="Dave Lopper"]'
67 end
68 end
69
64 test "POST /projects/:project_id/memberships.xml should create the membership" do
70 test "POST /projects/:project_id/memberships.xml should create the membership" do
65 assert_difference 'Member.count' do
71 assert_difference 'Member.count' do
66 post '/projects/1/memberships.xml', {:membership => {:user_id => 7, :role_ids => [2,3]}}, credentials('jsmith')
72 post '/projects/1/memberships.xml', {:membership => {:user_id => 7, :role_ids => [2,3]}}, credentials('jsmith')
General Comments 0
You need to be logged in to leave comments. Login now