diff options
Diffstat (limited to 'spec/requests/api/graphql/work_item_spec.rb')
-rw-r--r-- | spec/requests/api/graphql/work_item_spec.rb | 98 |
1 files changed, 77 insertions, 21 deletions
diff --git a/spec/requests/api/graphql/work_item_spec.rb b/spec/requests/api/graphql/work_item_spec.rb index 09bda8ee0d5..f17d2ebbb7e 100644 --- a/spec/requests/api/graphql/work_item_spec.rb +++ b/spec/requests/api/graphql/work_item_spec.rb @@ -8,7 +8,7 @@ RSpec.describe 'Query.work_item(id)' do let_it_be(:developer) { create(:user) } let_it_be(:guest) { create(:user) } let_it_be(:project) { create(:project, :private) } - let_it_be(:work_item) { create(:work_item, project: project, description: '- List item') } + let_it_be(:work_item) { create(:work_item, project: project, description: '- List item', weight: 1) } let_it_be(:child_item1) { create(:work_item, :task, project: project) } let_it_be(:child_item2) { create(:work_item, :task, confidential: true, project: project) } let_it_be(:child_link1) { create(:parent_link, work_item_parent: work_item, work_item: child_item1) } @@ -64,16 +64,13 @@ RSpec.describe 'Query.work_item(id)' do it 'returns widget information' do expect(work_item_data).to include( 'id' => work_item.to_gid.to_s, - 'widgets' => match_array([ + 'widgets' => include( hash_including( 'type' => 'DESCRIPTION', 'description' => work_item.description, 'descriptionHtml' => ::MarkupHelper.markdown_field(work_item, :description, {}) - ), - hash_including( - 'type' => 'HIERARCHY' ) - ]) + ) ) end end @@ -101,10 +98,7 @@ RSpec.describe 'Query.work_item(id)' do it 'returns widget information' do expect(work_item_data).to include( 'id' => work_item.to_gid.to_s, - 'widgets' => match_array([ - hash_including( - 'type' => 'DESCRIPTION' - ), + 'widgets' => include( hash_including( 'type' => 'HIERARCHY', 'parent' => nil, @@ -113,7 +107,7 @@ RSpec.describe 'Query.work_item(id)' do hash_including('id' => child_link2.work_item.to_gid.to_s) ]) } ) - ]) + ) ) end @@ -137,10 +131,7 @@ RSpec.describe 'Query.work_item(id)' do it 'filters out not accessible children or parent' do expect(work_item_data).to include( 'id' => work_item.to_gid.to_s, - 'widgets' => match_array([ - hash_including( - 'type' => 'DESCRIPTION' - ), + 'widgets' => include( hash_including( 'type' => 'HIERARCHY', 'parent' => nil, @@ -148,7 +139,7 @@ RSpec.describe 'Query.work_item(id)' do hash_including('id' => child_link1.work_item.to_gid.to_s) ]) } ) - ]) + ) ) end end @@ -160,20 +151,85 @@ RSpec.describe 'Query.work_item(id)' do it 'returns parent information' do expect(work_item_data).to include( 'id' => work_item.to_gid.to_s, - 'widgets' => match_array([ - hash_including( - 'type' => 'DESCRIPTION' - ), + 'widgets' => include( hash_including( 'type' => 'HIERARCHY', 'parent' => hash_including('id' => parent_link.work_item_parent.to_gid.to_s), 'children' => { 'nodes' => match_array([]) } ) - ]) + ) ) end end end + + describe 'weight widget' do + let(:work_item_fields) do + <<~GRAPHQL + id + widgets { + type + ... on WorkItemWidgetWeight { + weight + } + } + GRAPHQL + end + + it 'returns widget information' do + expect(work_item_data).to include( + 'id' => work_item.to_gid.to_s, + 'widgets' => include( + hash_including( + 'type' => 'WEIGHT', + 'weight' => work_item.weight + ) + ) + ) + end + end + + describe 'assignees widget' do + let(:assignees) { create_list(:user, 2) } + let(:work_item) { create(:work_item, project: project, assignees: assignees) } + + let(:work_item_fields) do + <<~GRAPHQL + id + widgets { + type + ... on WorkItemWidgetAssignees { + allowsMultipleAssignees + canInviteMembers + assignees { + nodes { + id + username + } + } + } + } + GRAPHQL + end + + it 'returns widget information' do + expect(work_item_data).to include( + 'id' => work_item.to_gid.to_s, + 'widgets' => include( + hash_including( + 'type' => 'ASSIGNEES', + 'allowsMultipleAssignees' => boolean, + 'canInviteMembers' => boolean, + 'assignees' => { + 'nodes' => match_array( + assignees.map { |a| { 'id' => a.to_gid.to_s, 'username' => a.username } } + ) + } + ) + ) + ) + end + end end context 'when an Issue Global ID is provided' do |