diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-09-30 12:17:57 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-09-30 12:17:57 +0300 |
commit | 4c52ff51844f4c55e8c4a0f46a0b6aeacc7d42d5 (patch) | |
tree | f838215f9f04264e0325988f67823188e0bd46b6 /spec | |
parent | c20c2c83859bf7ba699c085a1baf0ee1f1a6da7a (diff) | |
parent | f258a59ef6156f9da3b527efe9088fd0708f6fdf (diff) | |
download | gitlab-ce-4c52ff51844f4c55e8c4a0f46a0b6aeacc7d42d5.tar.gz |
Merge branch 'api/issues-filter-milestone' of https://github.com/jubianchi/gitlabhq into jubianchi-api/issues-filter-milestone
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Conflicts:
CHANGELOG
Diffstat (limited to 'spec')
-rw-r--r-- | spec/requests/api/issues_spec.rb | 64 |
1 files changed, 58 insertions, 6 deletions
diff --git a/spec/requests/api/issues_spec.rb b/spec/requests/api/issues_spec.rb index 9876452f81d..775d7b4e18d 100644 --- a/spec/requests/api/issues_spec.rb +++ b/spec/requests/api/issues_spec.rb @@ -4,12 +4,29 @@ describe API::API, api: true do include ApiHelpers let(:user) { create(:user) } let!(:project) { create(:project, namespace: user.namespace ) } - let!(:closed_issue) { create(:closed_issue, author: user, assignee: user, project: project, state: :closed) } - let!(:issue) { create(:issue, author: user, assignee: user, project: project) } + let!(:closed_issue) do + create :closed_issue, + author: user, + assignee: user, + project: project, + state: :closed, + milestone: milestone + end + let!(:issue) do + create :issue, + author: user, + assignee: user, + project: project, + milestone: milestone + end let!(:label) do create(:label, title: 'label', color: '#FFAABB', project: project) end let!(:label_link) { create(:label_link, label: label, target: issue) } + let!(:milestone) { create(:milestone, title: '1.0.0', project: project) } + let!(:empty_milestone) do + create(:milestone, title: '2.0.0', project: project) + end before { project.team << [user, :reporter] } @@ -102,15 +119,18 @@ describe API::API, api: true do end describe "GET /projects/:id/issues" do + let(:base_url) { "/projects/#{project.id}" } + let(:title) { milestone.title } + it "should return project issues" do - get api("/projects/#{project.id}/issues", user) + get api("#{base_url}/issues", user) response.status.should == 200 json_response.should be_an Array json_response.first['title'].should == issue.title end it 'should return an array of labeled project issues' do - get api("/projects/#{project.id}/issues?labels=#{label.title}", user) + get api("#{base_url}/issues?labels=#{label.title}", user) response.status.should == 200 json_response.should be_an Array json_response.length.should == 1 @@ -118,7 +138,7 @@ describe API::API, api: true do end it 'should return an array of labeled project issues when at least one label matches' do - get api("/projects/#{project.id}/issues?labels=#{label.title},foo,bar", user) + get api("#{base_url}/issues?labels=#{label.title},foo,bar", user) response.status.should == 200 json_response.should be_an Array json_response.length.should == 1 @@ -126,11 +146,43 @@ describe API::API, api: true do end it 'should return an empty array if no project issue matches labels' do - get api("/projects/#{project.id}/issues?labels=foo,bar", user) + get api("#{base_url}/issues?labels=foo,bar", user) + response.status.should == 200 + json_response.should be_an Array + json_response.length.should == 0 + end + + it 'should return an empty array if no issue matches milestone' do + get api("#{base_url}/issues?milestone=#{empty_milestone.title}", user) response.status.should == 200 json_response.should be_an Array json_response.length.should == 0 end + + it 'should return an empty array if milestone does not exist' do + get api("#{base_url}/issues?milestone=foo", user) + response.status.should == 200 + json_response.should be_an Array + json_response.length.should == 0 + end + + it 'should return an array of issues in given milestone' do + get api("#{base_url}/issues?milestone=#{title}", user) + response.status.should == 200 + json_response.should be_an Array + json_response.length.should == 2 + json_response.first['id'].should == issue.id + json_response.second['id'].should == closed_issue.id + end + + it 'should return an array of issues matching state in milestone' do + get api("#{base_url}/issues?milestone=#{milestone.title}"\ + '&state=closed', user) + response.status.should == 200 + json_response.should be_an Array + json_response.length.should == 1 + json_response.first['id'].should == closed_issue.id + end end describe "GET /projects/:id/issues/:issue_id" do |