Do not allow to move issue if it has not been persisted
This commit is contained in:
parent
d967b122a9
commit
915bfedfa7
6 changed files with 17 additions and 3 deletions
|
@ -4,7 +4,7 @@ v 8.7.0 (unreleased)
|
||||||
- Make HTTP(s) label consistent on clone bar (Stan Hu)
|
- Make HTTP(s) label consistent on clone bar (Stan Hu)
|
||||||
|
|
||||||
v 8.6.1 (unreleased)
|
v 8.6.1 (unreleased)
|
||||||
|
- Do not allow to move issue if it has not been persisted
|
||||||
|
|
||||||
v 8.6.0
|
v 8.6.0
|
||||||
- Add ability to move issue to another project
|
- Add ability to move issue to another project
|
||||||
|
|
|
@ -146,7 +146,8 @@ class Issue < ActiveRecord::Base
|
||||||
return false unless user.can?(:admin_issue, to_project)
|
return false unless user.can?(:admin_issue, to_project)
|
||||||
end
|
end
|
||||||
|
|
||||||
!moved? && user.can?(:admin_issue, self.project)
|
!moved? && persisted? &&
|
||||||
|
user.can?(:admin_issue, self.project)
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_branch_name
|
def to_branch_name
|
||||||
|
|
|
@ -78,6 +78,8 @@ module Issues
|
||||||
end
|
end
|
||||||
|
|
||||||
def unfold_references(content)
|
def unfold_references(content)
|
||||||
|
return unless content
|
||||||
|
|
||||||
rewriter = Gitlab::Gfm::ReferenceRewriter.new(content, @old_project,
|
rewriter = Gitlab::Gfm::ReferenceRewriter.new(content, @old_project,
|
||||||
@current_user)
|
@current_user)
|
||||||
rewriter.rewrite(@new_project)
|
rewriter.rewrite(@new_project)
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
- if can? current_user, :admin_label, issuable.project
|
- if can? current_user, :admin_label, issuable.project
|
||||||
= link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank
|
= link_to 'Create new label', new_namespace_project_label_path(issuable.project.namespace, issuable.project), target: :blank
|
||||||
|
|
||||||
- if issuable.can_move?(current_user) && issuable.persisted?
|
- if issuable.can_move?(current_user)
|
||||||
%hr
|
%hr
|
||||||
.form-group
|
.form-group
|
||||||
= label_tag :move_to_project_id, 'Move', class: 'control-label'
|
= label_tag :move_to_project_id, 'Move', class: 'control-label'
|
||||||
|
|
|
@ -152,6 +152,11 @@ describe Issue, models: true do
|
||||||
|
|
||||||
it { is_expected.to eq true }
|
it { is_expected.to eq true }
|
||||||
|
|
||||||
|
context 'issue not persisted' do
|
||||||
|
let(:issue) { build(:issue, project: project) }
|
||||||
|
it { is_expected.to eq false }
|
||||||
|
end
|
||||||
|
|
||||||
context 'checking destination project also' do
|
context 'checking destination project also' do
|
||||||
subject { issue.can_move?(user, to_project) }
|
subject { issue.can_move?(user, to_project) }
|
||||||
let(:to_project) { create(:project) }
|
let(:to_project) { create(:project) }
|
||||||
|
|
|
@ -208,6 +208,12 @@ describe Issues::MoveService, services: true do
|
||||||
|
|
||||||
it { expect { move }.to raise_error(StandardError, /permissions/) }
|
it { expect { move }.to raise_error(StandardError, /permissions/) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'issue is not persisted' do
|
||||||
|
include_context 'user can move issue'
|
||||||
|
let(:old_issue) { build(:issue, project: old_project, author: author) }
|
||||||
|
it { expect { move }.to raise_error(StandardError, /permissions/) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue