@@ -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 |
|
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. |
|
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 |
|
|
45 | "project" => {"name"=>"eCookbook", "id"=>1}, | |
46 | {"id"=>2, |
|
46 | "roles" => [{"name"=>"Manager", "id"=>1}], | |
47 |
|
|
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