From: Go MAEDA Date: Fri, 26 Mar 2021 04:52:39 +0000 (+0000) Subject: Test for r20852 (#22008). X-Git-Tag: 4.2.0~10 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=184eece3e546aaed7ac0090397f12609b33c3dc8;p=redmine.git Test for r20852 (#22008). Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@20853 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/test/integration/api_test/repositories_test.rb b/test/integration/api_test/repositories_test.rb new file mode 100644 index 000000000..7a52e8113 --- /dev/null +++ b/test/integration/api_test/repositories_test.rb @@ -0,0 +1,107 @@ +# frozen_string_literal: true + +# Redmine - project management software +# Copyright (C) 2006-2021 Jean-Philippe Lang +# +# 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__) + +class Redmine::ApiTest::RepositoriesTest < Redmine::ApiTest::Base + fixtures :users, + :projects, :enabled_modules, + :members, :roles, :member_roles, + :issues, + :repositories, :changesets, :changes + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.xml should add related issue' do + changeset = Changeset.find(103) + assert_equal [], changeset.issue_ids + assert_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.xml', :headers => credentials('jsmith'), :params => {:issue_id => '2'} + end + assert_response :no_content + assert_equal [2], changeset.reload.issue_ids + end + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.json should add related issue' do + changeset = Changeset.find(103) + assert_equal [], changeset.issue_ids + assert_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.json', :headers => credentials('jsmith'), :params => {:issue_id => '2'} + end + assert_response :no_content + assert_equal [2], changeset.reload.issue_ids + end + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.xml should accept issue_id with sharp' do + changeset = Changeset.find(103) + assert_equal [], changeset.issue_ids + assert_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.xml', :headers => credentials('jsmith'), :params => {:issue_id => '#2'} + end + assert_response :no_content + assert_equal [2], changeset.reload.issue_ids + end + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.json should accept issue_id with sharp' do + changeset = Changeset.find(103) + assert_equal [], changeset.issue_ids + assert_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.json', :headers => credentials('jsmith'), :params => {:issue_id => '#2'} + end + assert_response :no_content + assert_equal [2], changeset.reload.issue_ids + end + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.xml with invalid issue_id' do + assert_no_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.xml', :headers => credentials('jsmith'), :params => {:issue_id => '9999'} + end + assert_response :unprocessable_entity + assert_select 'errors error', :text => 'Issue is invalid' + end + + test 'POST /projects/:id/repository/:repository_id/revisions/:rev/issues.json with invalid issue_id' do + assert_no_difference 'Changeset.find(103).issues.size' do + post '/projects/1/repository/10/revisions/4/issues.json', :headers => credentials('jsmith'), :params => {:issue_id => '9999'} + end + assert_response :unprocessable_entity + json = ActiveSupport::JSON.decode(response.body) + assert json['errors'].include?('Issue is invalid') + end + + test 'DELETE /projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id.xml should remove related issue' do + changeset = Changeset.find(103) + changeset.issues << Issue.find(1) + changeset.issues << Issue.find(2) + assert_difference 'Changeset.find(103).issues.size', -1 do + delete '/projects/1/repository/10/revisions/4/issues/2.xml', :headers => credentials('jsmith') + end + assert_response :no_content + assert_equal [1], changeset.reload.issue_ids + end + + test 'DELETE /projects/:id/repository/:repository_id/revisions/:rev/issues/:issue_id.json should remove related issue' do + changeset = Changeset.find(103) + changeset.issues << Issue.find(1) + changeset.issues << Issue.find(2) + assert_difference 'Changeset.find(103).issues.size', -1 do + delete '/projects/1/repository/10/revisions/4/issues/2.json', :headers => credentials('jsmith') + end + assert_response :no_content + assert_equal [1], changeset.reload.issue_ids + end +end