diff options
author | Patrick Derichs <pderichs@gitlab.com> | 2019-06-07 11:15:55 +0200 |
---|---|---|
committer | Patrick Derichs <pderichs@gitlab.com> | 2019-06-07 11:15:55 +0200 |
commit | b70d23c25a4bc54fda22135b0a76bae102cfd88b (patch) | |
tree | 3c3e7a33a22bdc0b73659446375c855d74f44414 /spec/requests | |
parent | d842d80e30000b9efa57e8e69117431b38c6784a (diff) | |
download | gitlab-ce-b70d23c25a4bc54fda22135b0a76bae102cfd88b.tar.gz |
Add task count and completed count to responses of Issue and MR
Add spec for task_completion_status
Add test cases for task_completion_status result
Extracted shared samples
Add new spec file for task completion status response
Fix style errors
Add changelog entry
Changed samples to Hashes
Remove test for successful request
Remove not nil expectation
Add task_completion_status to api documentation for issues
Add task_completion_status to api documentation for merge_requests
Refactor spec so it just requests one specific item
Add task_completion_status to Taskable
Simplified task completion status in entities
Refactor spec so it separates status code check and content check
Fix spec description text and field name
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/task_completion_status_spec.rb | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/spec/requests/api/task_completion_status_spec.rb b/spec/requests/api/task_completion_status_spec.rb new file mode 100644 index 00000000000..ee2531197b1 --- /dev/null +++ b/spec/requests/api/task_completion_status_spec.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'task completion status response' do + set(:user) { create(:user) } + set(:project) do + create(:project, :public, creator_id: user.id, namespace: user.namespace) + end + + shared_examples 'taskable completion status provider' do |path| + samples = [ + { + description: '', + expected_count: 0, + expected_completed_count: 0 + }, + { + description: 'Lorem ipsum', + expected_count: 0, + expected_completed_count: 0 + }, + { + description: %{- [ ] task 1 + - [x] task 2 }, + expected_count: 2, + expected_completed_count: 1 + }, + { + description: %{- [ ] task 1 + - [ ] task 2 }, + expected_count: 2, + expected_completed_count: 0 + }, + { + description: %{- [x] task 1 + - [x] task 2 }, + expected_count: 2, + expected_completed_count: 2 + }, + { + description: %{- [ ] task 1}, + expected_count: 1, + expected_completed_count: 0 + }, + { + description: %{- [x] task 1}, + expected_count: 1, + expected_completed_count: 1 + } + ] + samples.each do |sample_data| + context "with a description of #{sample_data[:description].inspect}" do + before do + taskable.update!(description: sample_data[:description]) + + get api("#{path}?iids[]=#{taskable.iid}", user) + end + + it { expect(response).to have_gitlab_http_status(200) } + + it 'returns the expected results' do + expect(json_response).to be_an Array + expect(json_response).not_to be_empty + + task_completion_status = json_response.first['task_completion_status'] + expect(task_completion_status['count']).to eq(sample_data[:expected_count]) + expect(task_completion_status['completed_count']).to eq(sample_data[:expected_completed_count]) + end + end + end + end + + context 'task list completion status for issues' do + it_behaves_like 'taskable completion status provider', '/issues' do + let(:taskable) { create(:issue, project: project, author: user) } + end + end + + context 'task list completion status for merge_requests' do + it_behaves_like 'taskable completion status provider', '/merge_requests' do + let(:taskable) { create(:merge_request, source_project: project, target_project: project, author: user) } + end + end +end |