From 4555e1b21c365ed8303ffb7a3325d773c9b8bf31 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 19 May 2021 15:44:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-12-stable-ee --- .../requests/api/issues/get_project_issues_spec.rb | 5 +++- spec/requests/api/issues/issues_spec.rb | 29 +++++++++++++++++++++- .../api/issues/put_projects_issues_spec.rb | 11 ++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) (limited to 'spec/requests/api/issues') diff --git a/spec/requests/api/issues/get_project_issues_spec.rb b/spec/requests/api/issues/get_project_issues_spec.rb index da0bae8d5e7..07fa1d40f7b 100644 --- a/spec/requests/api/issues/get_project_issues_spec.rb +++ b/spec/requests/api/issues/get_project_issues_spec.rb @@ -186,7 +186,7 @@ RSpec.describe API::Issues do it 'avoids N+1 queries' do get api("/projects/#{project.id}/issues", user) - create_list(:issue, 3, project: project, closed_by: user) + issues = create_list(:issue, 3, project: project, closed_by: user) control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) do get api("/projects/#{project.id}/issues", user) @@ -195,6 +195,9 @@ RSpec.describe API::Issues do milestone = create(:milestone, project: project) create(:issue, project: project, milestone: milestone, closed_by: create(:user)) + create(:note_on_issue, project: project, noteable: issues[0]) + create(:note_on_issue, project: project, noteable: issues[1]) + expect do get api("/projects/#{project.id}/issues", user) end.not_to exceed_all_query_limit(control_count) diff --git a/spec/requests/api/issues/issues_spec.rb b/spec/requests/api/issues/issues_spec.rb index 8f10de59526..125db58ed69 100644 --- a/spec/requests/api/issues/issues_spec.rb +++ b/spec/requests/api/issues/issues_spec.rb @@ -115,6 +115,7 @@ RSpec.describe API::Issues do expect(response).to have_gitlab_http_status(:ok) expect(json_response.dig('author', 'id')).to eq(issue.author.id) expect(json_response['description']).to eq(issue.description) + expect(json_response['issue_type']).to eq('issue') end end @@ -378,6 +379,14 @@ RSpec.describe API::Issues do expect_paginated_array_response([issue.id, closed_issue.id]) end + it 'returns issues with a given issue_type' do + issue2 = create(:incident, project: project) + + get api('/issues', user), params: { issue_type: 'incident' } + + expect_paginated_array_response(issue2.id) + end + it 'returns issues matching given search string for title' do get api('/issues', user), params: { search: issue.title } @@ -939,7 +948,17 @@ RSpec.describe API::Issues do end end - describe 'PUT /projects/:id/issues/:issue_id' do + describe "POST /projects/:id/issues" do + it 'creates a new project issue' do + post api("/projects/#{project.id}/issues", user), params: { title: 'new issue' } + + expect(response).to have_gitlab_http_status(:created) + expect(json_response['title']).to eq('new issue') + expect(json_response['issue_type']).to eq('issue') + end + end + + describe 'PUT /projects/:id/issues/:issue_iid' do it_behaves_like 'issuable update endpoint' do let(:entity) { issue } end @@ -971,6 +990,14 @@ RSpec.describe API::Issues do expect(ResourceLabelEvent.last.created_at).to be_like_time(fixed_time) end end + + describe 'issue_type param' do + it 'allows issue type to be converted' do + put api("/projects/#{project.id}/issues/#{issue.iid}", user), params: { issue_type: 'incident' } + + expect(issue.reload.incident?).to be(true) + end + end end describe 'DELETE /projects/:id/issues/:issue_iid' do diff --git a/spec/requests/api/issues/put_projects_issues_spec.rb b/spec/requests/api/issues/put_projects_issues_spec.rb index dac721cbea0..38c080059c4 100644 --- a/spec/requests/api/issues/put_projects_issues_spec.rb +++ b/spec/requests/api/issues/put_projects_issues_spec.rb @@ -402,6 +402,17 @@ RSpec.describe API::Issues do expect(response).to have_gitlab_http_status(:ok) expect(json_response['state']).to eq 'opened' end + + it 'removes labels marked to be removed on issue closed' do + removable_label = create(:label, project: project, remove_on_close: true) + create(:label_link, target: issue, label: removable_label) + + put api_for_user, params: { state_event: 'close' } + + expect(issue.reload.label_ids).not_to include(removable_label.id) + expect(response).to have_gitlab_http_status(:ok) + expect(json_response['state']).to eq 'closed' + end end describe 'PUT /projects/:id/issues/:issue_iid to update updated_at param' do -- cgit v1.2.3