diff options
Diffstat (limited to 'spec/serializers/issue_entity_spec.rb')
-rw-r--r-- | spec/serializers/issue_entity_spec.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/serializers/issue_entity_spec.rb b/spec/serializers/issue_entity_spec.rb index 0e05b3c84f4..53278062de9 100644 --- a/spec/serializers/issue_entity_spec.rb +++ b/spec/serializers/issue_entity_spec.rb @@ -50,4 +50,44 @@ describe IssueEntity do end end end + + context 'when issue got duplicated' do + let(:private_project) { create(:project, :private) } + let(:member) { create(:user) } + let(:issue) { create(:issue, project: project) } + let(:new_issue) { create(:issue, project: private_project) } + + before do + Issues::DuplicateService + .new(project, member) + .execute(issue, new_issue) + end + + context 'when user cannot read new issue' do + let(:non_member) { create(:user) } + + it 'does not return duplicated_to_id' do + request = double('request', current_user: non_member) + + response = described_class.new(issue, request: request).as_json + + expect(response[:duplicated_to_id]).to be_nil + end + end + + context 'when user can read target project' do + before do + project.add_developer(member) + private_project.add_developer(member) + end + + it 'returns duplicated duplicated_to_id' do + request = double('request', current_user: member) + + response = described_class.new(issue, request: request).as_json + + expect(response[:duplicated_to_id]).to eq(issue.duplicated_to_id) + end + end + end end |