summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorjubianchi <contact@jubianchi.fr>2014-09-05 00:01:12 +0200
committerjubianchi <contact@jubianchi.fr>2014-09-26 22:03:37 +0200
commitf258a59ef6156f9da3b527efe9088fd0708f6fdf (patch)
treed7c298073fca133d4b168544740204d99a0cf039 /spec
parentfd338d67159e6dffaf54fd42fbeddb3b17e4d49f (diff)
downloadgitlab-ce-f258a59ef6156f9da3b527efe9088fd0708f6fdf.tar.gz
Filters issues by milestone via API
Diffstat (limited to 'spec')
-rw-r--r--spec/requests/api/issues_spec.rb64
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