summaryrefslogtreecommitdiff
path: root/spec/requests
diff options
context:
space:
mode:
authorPatrick Derichs <pderichs@gitlab.com>2019-06-15 06:56:28 +0200
committerPatrick Derichs <pderichs@gitlab.com>2019-06-15 06:56:28 +0200
commit453a9b298cd801d560addba722b1e6b4028f8618 (patch)
tree7d25d281f7717eaa51ce910282f22799d3a70971 /spec/requests
parentb05de5a583e35931967dcc70d2f26f568c9cf0db (diff)
downloadgitlab-ce-453a9b298cd801d560addba722b1e6b4028f8618.tar.gz
Add task count and completed count to graphql types62910-task-completion-status-gql-pderichs
Add specs for task completion status (graphql) Fix style issues Changed format of constants in spec Refactor specs to reduce creation of records Reduce parameters to merge request creation Use set's for project and user Move let's out of it_behaves_like block Fix description parameter Fix format of lets Use dig to get task completion status out of graphql response Modified rspec output Add changelog entry
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/api/graphql/tasks/task_completion_status_spec.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/requests/api/graphql/tasks/task_completion_status_spec.rb b/spec/requests/api/graphql/tasks/task_completion_status_spec.rb
new file mode 100644
index 00000000000..c457a6d7c25
--- /dev/null
+++ b/spec/requests/api/graphql/tasks/task_completion_status_spec.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe 'getting task completion status information' do
+ include GraphqlHelpers
+
+ DESCRIPTION_0_DONE = '- [ ] task 1\n- [ ] task 2'
+ DESCRIPTION_1_DONE = '- [x] task 1\n- [ ] task 2'
+ DESCRIPTION_2_DONE = '- [x] task 1\n- [x] task 2'
+
+ set(:user1) { create(:user) }
+ set(:project) { create(:project, :repository, :public) }
+
+ let(:fields) do
+ <<~QUERY
+ taskCompletionStatus {
+ count,
+ completedCount
+ }
+ QUERY
+ end
+
+ def create_task_completion_status_query_for(type, iid)
+ graphql_query_for(
+ 'project',
+ { 'fullPath' => project.full_path },
+ query_graphql_field(type, { iid: iid }, fields)
+ )
+ end
+
+ shared_examples_for 'graphql task completion status provider' do |type|
+ it 'returns the expected task completion status' do
+ post_graphql(create_task_completion_status_query_for(type, item.iid), current_user: user1)
+
+ expect(response).to have_gitlab_http_status(200)
+
+ task_completion_status = graphql_data.dig('project', type, 'taskCompletionStatus')
+ expect(task_completion_status).not_to be_nil
+ expect(task_completion_status['count']).to eq(item.task_completion_status[:count])
+ expect(task_completion_status['completedCount']).to eq(item.task_completion_status[:completed_count])
+ end
+ end
+
+ [DESCRIPTION_0_DONE, DESCRIPTION_1_DONE, DESCRIPTION_2_DONE].each do |desc|
+ context "with description #{desc}" do
+ context 'when type is issue' do
+ it_behaves_like 'graphql task completion status provider', 'issue' do
+ let(:item) { create(:issue, project: project, description: desc) }
+ end
+ end
+
+ context 'when type is merge request' do
+ it_behaves_like 'graphql task completion status provider', 'mergeRequest' do
+ let(:item) { create(:merge_request, author: user1, source_project: project, description: desc) }
+ end
+ end
+ end
+ end
+end