summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-30 12:17:57 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-30 12:17:57 +0300
commit4c52ff51844f4c55e8c4a0f46a0b6aeacc7d42d5 (patch)
treef838215f9f04264e0325988f67823188e0bd46b6 /spec
parentc20c2c83859bf7ba699c085a1baf0ee1f1a6da7a (diff)
parentf258a59ef6156f9da3b527efe9088fd0708f6fdf (diff)
downloadgitlab-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.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