summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-12 17:04:18 +0100
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-12 17:04:18 +0100
commitba34045f3120fc52ce714d49778a24c647248500 (patch)
tree4b5c67306ef29316ef8deeaf03336b20176c277f
parentc119a737935f1e1e8ae7dec814be8accb8980e1d (diff)
downloadgitlab-ce-ba34045f3120fc52ce714d49778a24c647248500.tar.gz
Expose release notes to tags api
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--lib/api/entities.rb6
-rw-r--r--spec/requests/api/tags_spec.rb30
2 files changed, 31 insertions, 5 deletions
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 400900bc407..7528e718c6f 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -112,6 +112,12 @@ module API
options[:project].repository.commit(repo_obj.target)
end
end
+
+ expose :release do |repo_obj, options|
+ if options[:project]
+ options[:project].releases.find_by(tag: repo_obj.name)
+ end
+ end
end
class RepoObject < Grape::Entity
diff --git a/spec/requests/api/tags_spec.rb b/spec/requests/api/tags_spec.rb
index 72df9007ee8..4362e0ec28d 100644
--- a/spec/requests/api/tags_spec.rb
+++ b/spec/requests/api/tags_spec.rb
@@ -12,11 +12,31 @@ describe API::API, api: true do
let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
describe "GET /projects/:id/repository/tags" do
- it "should return an array of project tags" do
- get api("/projects/#{project.id}/repository/tags", user)
- expect(response.status).to eq(200)
- expect(json_response).to be_an Array
- expect(json_response.first['name']).to eq(project.repo.tags.sort_by(&:name).reverse.first.name)
+ let(:tag_name) { project.repository.tag_names.sort.reverse.first }
+ let(:description) { 'Awesome release!' }
+
+ context 'without releases' do
+ it "should return an array of project tags" do
+ get api("/projects/#{project.id}/repository/tags", user)
+ expect(response.status).to eq(200)
+ expect(json_response).to be_an Array
+ expect(json_response.first['name']).to eq(tag_name)
+ end
+ end
+
+ context 'with releases' do
+ before do
+ release = project.releases.find_or_initialize_by(tag: tag_name)
+ release.update_attributes(description: description)
+ get api("/projects/#{project.id}/repository/tags", user)
+ end
+
+ it "should return an array of project tags with release info" do
+ expect(response.status).to eq(200)
+ expect(json_response).to be_an Array
+ expect(json_response.first['name']).to eq(tag_name)
+ expect(json_response.first['release']['description']).to eq(description)
+ end
end
end