Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb')
-rw-r--r--spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb34
1 files changed, 31 insertions, 3 deletions
diff --git a/spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb b/spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb
index f30b7d0ea73..ea584d1b683 100644
--- a/spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb
+++ b/spec/requests/api/graphql/mutations/work_items/linked_items/add_spec.rb
@@ -5,15 +5,17 @@ require 'spec_helper'
RSpec.describe "Add linked items to a work item", feature_category: :portfolio_management do
include GraphqlHelpers
- let_it_be(:project) { create(:project, :private) }
- let_it_be(:reporter) { create(:user).tap { |user| project.add_reporter(user) } }
- let_it_be(:work_item) { create(:work_item, project: project) }
+ let_it_be(:group) { create(:group) }
+ let_it_be(:project) { create(:project, :private, group: group) }
+ let_it_be(:reporter) { create(:user).tap { |user| group.add_reporter(user) } }
+ let_it_be(:project_work_item) { create(:work_item, :issue, project: project) }
let_it_be(:related1) { create(:work_item, project: project) }
let_it_be(:related2) { create(:work_item, project: project) }
let(:mutation_response) { graphql_mutation_response(:work_item_add_linked_items) }
let(:mutation) { graphql_mutation(:workItemAddLinkedItems, input, fields) }
+ let(:work_item) { project_work_item }
let(:ids_to_link) { [related1.to_global_id.to_s, related2.to_global_id.to_s] }
let(:input) { { 'id' => work_item.to_global_id.to_s, 'workItemsIds' => ids_to_link } }
@@ -70,6 +72,18 @@ RSpec.describe "Add linked items to a work item", feature_category: :portfolio_m
)
end
+ context 'when work item is created at the group level' do
+ let(:work_item) { create(:work_item, :group_level, namespace: group) }
+
+ it 'links the work item' do
+ expect do
+ post_graphql_mutation(mutation, current_user: current_user)
+ end.to change { WorkItems::RelatedWorkItemLink.count }.by(2)
+
+ expect(mutation_response['message']).to eq("Successfully linked ID(s): #{related1.id} and #{related2.id}.")
+ end
+ end
+
context 'when linking a work item fails' do
let_it_be(:private_project) { create(:project, :private) }
let_it_be(:related2) { create(:work_item, project: private_project) }
@@ -102,6 +116,20 @@ RSpec.describe "Add linked items to a work item", feature_category: :portfolio_m
end
end
+ context 'when type cannot be linked' do
+ let_it_be(:req) { create(:work_item, :requirement, project: project) }
+
+ let(:input) { { 'id' => work_item.to_global_id.to_s, 'workItemsIds' => [req.to_global_id.to_s] } }
+
+ it 'returns an error message' do
+ post_graphql_mutation(mutation, current_user: current_user)
+
+ expect(mutation_response["errors"]).to eq([
+ "#{req.to_reference} cannot be added: issues cannot be related to requirements"
+ ])
+ end
+ end
+
context 'when there are more than the max allowed items to link' do
let(:max_work_items) { Mutations::WorkItems::LinkedItems::Base::MAX_WORK_ITEMS }
let(:ids_to_link) { (0..max_work_items).map { |i| "gid://gitlab/WorkItem/#{i}" } }