diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-04-26 11:20:47 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-04-26 11:20:47 +0000 |
commit | f00bb1c29ea438be66b3766545a57b468ade37d4 (patch) | |
tree | 0b196290ecbb61bc2cab4ad4726e977fb2667aa5 /spec | |
parent | 52bd4b88dc557f0b3c63e82d0f2093f22b28ae9d (diff) | |
parent | 51207344f8f26358998bfe4d1e1dd057f11d09f4 (diff) | |
download | gitlab-ce-f00bb1c29ea438be66b3766545a57b468ade37d4.tar.gz |
Merge branch 'more-mr-filters' into 'master'
More merge request filters
Closes #26301
See merge request !10924
Diffstat (limited to 'spec')
-rw-r--r-- | spec/requests/api/merge_requests_spec.rb | 72 |
1 files changed, 68 insertions, 4 deletions
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb index 91b1e1aee4d..904e049d767 100644 --- a/spec/requests/api/merge_requests_spec.rb +++ b/spec/requests/api/merge_requests_spec.rb @@ -6,10 +6,17 @@ describe API::MergeRequests do let(:admin) { create(:user, :admin) } let(:non_member) { create(:user) } let!(:project) { create(:project, :public, :repository, creator: user, namespace: user.namespace, only_allow_merge_if_pipeline_succeeds: false) } - let!(:merge_request) { create(:merge_request, :simple, author: user, assignee: user, source_project: project, title: "Test", created_at: base_time) } - let!(:merge_request_closed) { create(:merge_request, state: "closed", author: user, assignee: user, source_project: project, title: "Closed test", created_at: base_time + 1.second) } - let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignee: user, source_project: project, title: "Merged test", created_at: base_time + 2.seconds, merge_commit_sha: '9999999999999999999999999999999999999999') } let(:milestone) { create(:milestone, title: '1.0.0', project: project) } + let(:milestone1) { create(:milestone, title: '0.9', project: project) } + let!(:merge_request) { create(:merge_request, :simple, milestone: milestone1, author: user, assignee: user, source_project: project, target_project: project, title: "Test", created_at: base_time) } + let!(:merge_request_closed) { create(:merge_request, state: "closed", milestone: milestone1, author: user, assignee: user, source_project: project, target_project: project, title: "Closed test", created_at: base_time + 1.second) } + let!(:merge_request_merged) { create(:merge_request, state: "merged", author: user, assignee: user, source_project: project, target_project: project, title: "Merged test", created_at: base_time + 2.seconds, merge_commit_sha: '9999999999999999999999999999999999999999') } + let!(:note) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "a comment on a MR") } + let!(:note2) { create(:note_on_merge_request, author: user, project: project, noteable: merge_request, note: "another comment on a MR") } + let!(:label) do + create(:label, title: 'label', color: '#FFAABB', project: project) + end + let!(:label_link) { create(:label_link, label: label, target: merge_request) } before do project.team << [user, :reporter] @@ -99,6 +106,63 @@ describe API::MergeRequests do expect(response).to match_response_schema('public_api/v4/merge_requests') end + it 'returns an empty array if no issue matches milestone' do + get api("/projects/#{project.id}/merge_requests", user), milestone: '1.0.0' + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + + it 'returns an empty array if milestone does not exist' do + get api("/projects/#{project.id}/merge_requests", user), milestone: 'foo' + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + + it 'returns an array of merge requests in given milestone' do + get api("/projects/#{project.id}/merge_requests", user), milestone: '0.9' + + expect(json_response.first['title']).to eq merge_request_closed.title + expect(json_response.first['id']).to eq merge_request_closed.id + end + + it 'returns an array of merge requests matching state in milestone' do + get api("/projects/#{project.id}/merge_requests", user), milestone: '0.9', state: 'closed' + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(1) + expect(json_response.first['id']).to eq(merge_request_closed.id) + end + + it 'returns an array of labeled merge requests' do + get api("/projects/#{project.id}/merge_requests?labels=#{label.title}", user) + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(1) + expect(json_response.first['labels']).to eq([label.title]) + end + + it 'returns an array of labeled merge requests where all labels match' do + get api("/projects/#{project.id}/merge_requests?labels=#{label.title},foo,bar", user) + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + + it 'returns an empty array if no merge request matches labels' do + get api("/projects/#{project.id}/merge_requests?labels=foo,bar", user) + + expect(response).to have_http_status(200) + expect(json_response).to be_an Array + expect(json_response.length).to eq(0) + end + context "with ordering" do before do @mr_later = mr_with_later_created_and_updated_at_time @@ -166,7 +230,7 @@ describe API::MergeRequests do expect(json_response['created_at']).to be_present expect(json_response['updated_at']).to be_present expect(json_response['labels']).to eq(merge_request.label_names) - expect(json_response['milestone']).to be_nil + expect(json_response['milestone']).to be_a Hash expect(json_response['assignee']).to be_a Hash expect(json_response['author']).to be_a Hash expect(json_response['target_branch']).to eq(merge_request.target_branch) |