summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/issue_links_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/issue_links_controller_spec.rb')
-rw-r--r--spec/controllers/projects/issue_links_controller_spec.rb71
1 files changed, 71 insertions, 0 deletions
diff --git a/spec/controllers/projects/issue_links_controller_spec.rb b/spec/controllers/projects/issue_links_controller_spec.rb
new file mode 100644
index 00000000000..bce109b7c79
--- /dev/null
+++ b/spec/controllers/projects/issue_links_controller_spec.rb
@@ -0,0 +1,71 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Projects::IssueLinksController do
+ let_it_be(:namespace) { create(:group, :public) }
+ let_it_be(:project) { create(:project, :public, namespace: namespace) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:issue1) { create(:issue, project: project) }
+ let_it_be(:issue2) { create(:issue, project: project) }
+
+ describe 'GET #index' do
+ let_it_be(:issue_link) { create(:issue_link, source: issue1, target: issue2, link_type: 'relates_to') }
+
+ def get_link(user, issue)
+ sign_in(user)
+
+ params = {
+ namespace_id: issue.project.namespace.to_param,
+ project_id: issue.project,
+ issue_id: issue.iid
+ }
+
+ get :index, params: params, as: :json
+ end
+
+ before do
+ project.add_developer(user)
+ end
+
+ it 'returns success response' do
+ get_link(user, issue1)
+
+ expect(response).to have_gitlab_http_status(:ok)
+
+ link = json_response.first
+ expect(link['id']).to eq(issue2.id)
+ expect(link['link_type']).to eq('relates_to')
+ end
+ end
+
+ describe 'POST #create' do
+ def create_link(user, issue, target)
+ sign_in(user)
+
+ post_params = {
+ namespace_id: issue.project.namespace.to_param,
+ project_id: issue.project,
+ issue_id: issue.iid,
+ issuable_references: [target.to_reference],
+ link_type: 'relates_to'
+ }
+
+ post :create, params: post_params, as: :json
+ end
+
+ before do
+ project.add_developer(user)
+ end
+
+ it 'returns success response' do
+ create_link(user, issue1, issue2)
+
+ expect(response).to have_gitlab_http_status(:ok)
+
+ link = json_response['issuables'].first
+ expect(link['id']).to eq(issue2.id)
+ expect(link['link_type']).to eq('relates_to')
+ end
+ end
+end