Commit 2748114e authored by Stan Hu's avatar Stan Hu

Add specs for updating issuable labels in API

This is in preparation for upgrading to Grape v1.3.x. Parameters of
Array types will no longer automatically coerced to empty arrays if a
key is provided with a nil value.
parent 68330fb8
......@@ -834,6 +834,12 @@ describe API::Issues do
end
end
describe 'PUT /projects/:id/issues/:issue_id' do
it_behaves_like 'issuable update endpoint' do
let(:entity) { issue }
end
end
describe 'DELETE /projects/:id/issues/:issue_iid' do
it 'rejects a non member from deleting an issue' do
delete api("/projects/#{project.id}/issues/#{issue.iid}", non_member)
......
......@@ -1654,6 +1654,12 @@ describe API::MergeRequests do
end
end
describe 'PUT /projects/:id/merge_reuests/:merge_request_iid' do
it_behaves_like 'issuable update endpoint' do
let(:entity) { merge_request }
end
end
describe "POST /projects/:id/merge_requests/:merge_request_iid/context_commits" do
let(:merge_request_iid) { merge_request.iid }
let(:authenticated_user) { user }
......
# frozen_string_literal: true
RSpec.shared_examples 'issuable update endpoint' do
let(:area) { entity.class.name.underscore.pluralize }
describe 'PUT /projects/:id/issues/:issue_id' do
let(:url) { "/projects/#{project.id}/#{area}/#{entity.iid}" }
it 'clears labels when labels param is nil' do
put api(url, user), params: { labels: 'label1' }
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['labels']).to contain_exactly('label1')
put api(url, user), params: { labels: nil }
expect(response).to have_gitlab_http_status(:ok)
json_response = Gitlab::Json.parse(response.body)
expect(json_response['labels']).to be_empty
end
it 'updates the issuable with labels param as array' do
stub_const("Gitlab::QueryLimiting::Transaction::THRESHOLD", 110)
params = { labels: ['label1', 'label2', 'foo, bar', '&,?'] }
put api(url, user), params: params
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['labels']).to include 'label1'
expect(json_response['labels']).to include 'label2'
expect(json_response['labels']).to include 'foo'
expect(json_response['labels']).to include 'bar'
expect(json_response['labels']).to include '&'
expect(json_response['labels']).to include '?'
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment