##// END OF EJS Templates
Adds tracker name to Redmine issue link titles (#13946)....
Adds tracker name to Redmine issue link titles (#13946). git-svn-id: http://svn.redmine.org/redmine/trunk@14620 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r13510:d85f73a30d48
r14238:a7b6ad9bb5ba
Show More
memberships_test.rb
158 lines | 5.8 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 # Redmine - project management software
Jean-Philippe Lang
Copyright update....
r13490 # Copyright (C) 2006-2015 Jean-Philippe Lang
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../../test_helper', __FILE__)
Jean-Philippe Lang
Adds a subclass of ActionDispatch::IntegrationTest for API tests....
r11023 class Redmine::ApiTest::MembershipsTest < Redmine::ApiTest::Base
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 fixtures :projects, :users, :roles, :members, :member_roles
Jean-Philippe Lang
Removed some shoulda context....
r11632 test "GET /projects/:project_id/memberships.xml should return memberships" do
get '/projects/1/memberships.xml', {}, credentials('jsmith')
assert_response :success
assert_equal 'application/xml', @response.content_type
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 assert_select 'memberships[type=array] membership id', :text => '2' do
assert_select '~ user[id="3"][name="Dave Lopper"]'
assert_select '~ roles role[id="2"][name=Developer]'
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 end
Jean-Philippe Lang
Removed some shoulda context....
r11632 end
test "GET /projects/:project_id/memberships.json should return memberships" do
get '/projects/1/memberships.json', {}, credentials('jsmith')
assert_response :success
assert_equal 'application/json', @response.content_type
json = ActiveSupport::JSON.decode(response.body)
assert_equal({
"memberships" =>
[{"id"=>1,
"project" => {"name"=>"eCookbook", "id"=>1},
"roles" => [{"name"=>"Manager", "id"=>1}],
"user" => {"name"=>"John Smith", "id"=>2}},
{"id"=>2,
"project" => {"name"=>"eCookbook", "id"=>1},
"roles" => [{"name"=>"Developer", "id"=>2}],
"user" => {"name"=>"Dave Lopper", "id"=>3}}],
"limit" => 25,
"total_count" => 2,
"offset" => 0},
json)
end
Jean-Philippe Lang
Fixed: cannot retrieve members for closed projects through the REST API (#15848)....
r12375 test "GET /projects/:project_id/memberships.xml should succeed for closed project" do
project = Project.find(1)
project.close
assert !project.reload.active?
get '/projects/1/memberships.json', {}, credentials('jsmith')
assert_response :success
end
Jean-Philippe Lang
Removed some shoulda context....
r11632 test "POST /projects/:project_id/memberships.xml should create the membership" do
assert_difference 'Member.count' do
post '/projects/1/memberships.xml', {:membership => {:user_id => 7, :role_ids => [2,3]}}, credentials('jsmith')
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678
Jean-Philippe Lang
Removed some shoulda context....
r11632 assert_response :created
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 end
end
Jean-Philippe Lang
Adds a test for adding a group membership with the REST API (#17904)....
r13062 test "POST /projects/:project_id/memberships.xml should create the group membership" do
group = Group.find(11)
assert_difference 'Member.count', 1 + group.users.count do
post '/projects/1/memberships.xml', {:membership => {:user_id => 11, :role_ids => [2,3]}}, credentials('jsmith')
assert_response :created
end
end
Jean-Philippe Lang
Removed some shoulda context....
r11632 test "POST /projects/:project_id/memberships.xml with invalid parameters should return errors" do
assert_no_difference 'Member.count' do
post '/projects/1/memberships.xml', {:membership => {:role_ids => [2,3]}}, credentials('jsmith')
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678
Jean-Philippe Lang
Removed some shoulda context....
r11632 assert_response :unprocessable_entity
assert_equal 'application/xml', @response.content_type
Jean-Philippe Lang
Replaced "can't" with "cannot" in error messages....
r13399 assert_select 'errors error', :text => "Principal cannot be blank"
Jean-Philippe Lang
Removed some shoulda context....
r11632 end
end
test "GET /memberships/:id.xml should return the membership" do
get '/memberships/2.xml', {}, credentials('jsmith')
assert_response :success
assert_equal 'application/xml', @response.content_type
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 assert_select 'membership id', :text => '2' do
assert_select '~ user[id="3"][name="Dave Lopper"]'
assert_select '~ roles role[id="2"][name=Developer]'
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 end
Jean-Philippe Lang
Removed some shoulda context....
r11632 end
test "GET /memberships/:id.json should return the membership" do
get '/memberships/2.json', {}, credentials('jsmith')
assert_response :success
assert_equal 'application/json', @response.content_type
json = ActiveSupport::JSON.decode(response.body)
assert_equal(
{"membership" => {
"id" => 2,
"project" => {"name"=>"eCookbook", "id"=>1},
"roles" => [{"name"=>"Developer", "id"=>2}],
"user" => {"name"=>"Dave Lopper", "id"=>3}}
},
json)
end
test "PUT /memberships/:id.xml should update the membership" do
assert_not_equal [1,2], Member.find(2).role_ids.sort
assert_no_difference 'Member.count' do
put '/memberships/2.xml', {:membership => {:user_id => 3, :role_ids => [1,2]}}, credentials('jsmith')
assert_response :ok
assert_equal '', @response.body
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 end
Jean-Philippe Lang
Removed some shoulda context....
r11632 member = Member.find(2)
assert_equal [1,2], member.role_ids.sort
end
test "PUT /memberships/:id.xml with invalid parameters should return errors" do
put '/memberships/2.xml', {:membership => {:user_id => 3, :role_ids => [99]}}, credentials('jsmith')
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678
Jean-Philippe Lang
Removed some shoulda context....
r11632 assert_response :unprocessable_entity
assert_equal 'application/xml', @response.content_type
Jean-Philippe Lang
Replaced "can't" with "cannot" in error messages....
r13399 assert_select 'errors error', :text => "Role cannot be empty"
Jean-Philippe Lang
Removed some shoulda context....
r11632 end
test "DELETE /memberships/:id.xml should destroy the membership" do
assert_difference 'Member.count', -1 do
delete '/memberships/2.xml', {}, credentials('jsmith')
assert_response :ok
assert_equal '', @response.body
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 end
Jean-Philippe Lang
Removed some shoulda context....
r11632 assert_nil Member.find_by_id(2)
end
test "DELETE /memberships/:id.xml should respond with 422 on failure" do
assert_no_difference 'Member.count' do
Jean-Philippe Lang
Replaced "can't" with "cannot" in error messages....
r13399 # A membership with an inherited role cannot be deleted
Jean-Philippe Lang
Removed some shoulda context....
r11632 Member.find(2).member_roles.first.update_attribute :inherited_from, 99
delete '/memberships/2.xml', {}, credentials('jsmith')
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678
Jean-Philippe Lang
Removed some shoulda context....
r11632 assert_response :unprocessable_entity
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 end
end
end