Merge branch 'add-missing-api-entities' into 'master'
Add missing api entities Closes #23895 See merge request !7138
This commit is contained in:
commit
f3de1c579e
6 changed files with 74 additions and 26 deletions
4
changelogs/unreleased/api-entities.yml
Normal file
4
changelogs/unreleased/api-entities.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: "Use an entity for RepoBranch commits and enhance RepoCommit"
|
||||
merge_request: 7138
|
||||
author: Ben Boeckel
|
|
@ -34,6 +34,8 @@ Example response:
|
|||
"committer_email": "john@example.com",
|
||||
"committer_name": "John Smith",
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"short_id": "7b5c3cc",
|
||||
"title": "add projects API",
|
||||
"message": "add projects API",
|
||||
"parent_ids": [
|
||||
"4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
|
@ -78,6 +80,8 @@ Example response:
|
|||
"committer_email": "john@example.com",
|
||||
"committer_name": "John Smith",
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"short_id": "7b5c3cc",
|
||||
"title": "add projects API",
|
||||
"message": "add projects API",
|
||||
"parent_ids": [
|
||||
"4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
|
@ -119,6 +123,8 @@ Example response:
|
|||
"committer_email": "john@example.com",
|
||||
"committer_name": "John Smith",
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"short_id": "7b5c3cc",
|
||||
"title": "add projects API",
|
||||
"message": "add projects API",
|
||||
"parent_ids": [
|
||||
"4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
|
@ -163,6 +169,8 @@ Example response:
|
|||
"committer_email": "john@example.com",
|
||||
"committer_name": "John Smith",
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"short_id": "7b5c3cc",
|
||||
"title": "add projects API",
|
||||
"message": "add projects API",
|
||||
"parent_ids": [
|
||||
"4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
|
@ -204,6 +212,8 @@ Example response:
|
|||
"committer_email": "john@example.com",
|
||||
"committer_name": "John Smith",
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"short_id": "7b5c3cc",
|
||||
"title": "add projects API",
|
||||
"message": "add projects API",
|
||||
"parent_ids": [
|
||||
"4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
|
|
|
@ -29,11 +29,15 @@ Example response:
|
|||
"title": "Replace sanitize with escape once",
|
||||
"author_name": "Dmitriy Zaporozhets",
|
||||
"author_email": "dzaporozhets@sphereconsultinginc.com",
|
||||
"authored_date": "2012-09-20T11:50:22+03:00",
|
||||
"committer_name": "Administrator",
|
||||
"committer_email": "admin@example.com",
|
||||
"committed_date": "2012-09-20T11:50:22+03:00",
|
||||
"created_at": "2012-09-20T11:50:22+03:00",
|
||||
"message": "Replace sanitize with escape once",
|
||||
"allow_failure": false
|
||||
"parent_ids": [
|
||||
"6104942438c14ec7bd21c6cd5bd995272b3faff6"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "6104942438c14ec7bd21c6cd5bd995272b3faff6",
|
||||
|
@ -45,7 +49,9 @@ Example response:
|
|||
"committer_email": "dmitriy.zaporozhets@gmail.com",
|
||||
"created_at": "2012-09-20T09:06:12+03:00",
|
||||
"message": "Sanitize for network graph",
|
||||
"allow_failure": false
|
||||
"parent_ids": [
|
||||
"ae1d9fb46aa2b07ee9836d49862ec4e2c46fbbba"
|
||||
]
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -214,10 +220,16 @@ Example response:
|
|||
"title": "Feature added",
|
||||
"author_name": "Dmitriy Zaporozhets",
|
||||
"author_email": "dmitriy.zaporozhets@gmail.com",
|
||||
"authored_date": "2016-12-12T20:10:39.000+01:00",
|
||||
"created_at": "2016-12-12T20:10:39.000+01:00",
|
||||
"committer_name": "Administrator",
|
||||
"committer_email": "admin@example.com",
|
||||
"message": "Feature added\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n"
|
||||
"committed_date": "2016-12-12T20:10:39.000+01:00",
|
||||
"title": "Feature added",
|
||||
"message": "Feature added\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n",
|
||||
"parent_ids": [
|
||||
"a738f717824ff53aebad8b090c1b79a14f2bd9e8"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -155,10 +155,27 @@ module API
|
|||
expose :shared_projects, using: Entities::Project
|
||||
end
|
||||
|
||||
class RepoCommit < Grape::Entity
|
||||
expose :id, :short_id, :title, :created_at
|
||||
expose :parent_ids
|
||||
expose :safe_message, as: :message
|
||||
expose :author_name, :author_email, :authored_date
|
||||
expose :committer_name, :committer_email, :committed_date
|
||||
end
|
||||
|
||||
class RepoCommitStats < Grape::Entity
|
||||
expose :additions, :deletions, :total
|
||||
end
|
||||
|
||||
class RepoCommitDetail < RepoCommit
|
||||
expose :stats, using: Entities::RepoCommitStats
|
||||
expose :status
|
||||
end
|
||||
|
||||
class RepoBranch < Grape::Entity
|
||||
expose :name
|
||||
|
||||
expose :commit do |repo_branch, options|
|
||||
expose :commit, using: Entities::RepoCommit do |repo_branch, options|
|
||||
options[:project].repository.commit(repo_branch.dereferenced_target)
|
||||
end
|
||||
|
||||
|
@ -193,22 +210,6 @@ module API
|
|||
end
|
||||
end
|
||||
|
||||
class RepoCommit < Grape::Entity
|
||||
expose :id, :short_id, :title, :author_name, :author_email, :created_at
|
||||
expose :committer_name, :committer_email
|
||||
expose :safe_message, as: :message
|
||||
end
|
||||
|
||||
class RepoCommitStats < Grape::Entity
|
||||
expose :additions, :deletions, :total
|
||||
end
|
||||
|
||||
class RepoCommitDetail < RepoCommit
|
||||
expose :parent_ids, :committed_date, :authored_date
|
||||
expose :stats, using: Entities::RepoCommitStats
|
||||
expose :status
|
||||
end
|
||||
|
||||
class ProjectSnippet < Grape::Entity
|
||||
expose :id, :title, :file_name
|
||||
expose :author, using: Entities::UserBasic
|
||||
|
|
|
@ -31,7 +31,18 @@ describe API::Branches, api: true do
|
|||
expect(response).to have_http_status(200)
|
||||
|
||||
expect(json_response['name']).to eq(branch_name)
|
||||
expect(json_response['commit']['id']).to eq(branch_sha)
|
||||
json_commit = json_response['commit']
|
||||
expect(json_commit['id']).to eq(branch_sha)
|
||||
expect(json_commit).to have_key('short_id')
|
||||
expect(json_commit).to have_key('title')
|
||||
expect(json_commit).to have_key('message')
|
||||
expect(json_commit).to have_key('author_name')
|
||||
expect(json_commit).to have_key('author_email')
|
||||
expect(json_commit).to have_key('authored_date')
|
||||
expect(json_commit).to have_key('committer_name')
|
||||
expect(json_commit).to have_key('committer_email')
|
||||
expect(json_commit).to have_key('committed_date')
|
||||
expect(json_commit).to have_key('parent_ids')
|
||||
expect(json_response['merged']).to eq(false)
|
||||
expect(json_response['protected']).to eq(false)
|
||||
expect(json_response['developers_can_push']).to eq(false)
|
||||
|
|
|
@ -367,11 +367,21 @@ describe API::Commits, api: true do
|
|||
get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
expect(json_response['id']).to eq(project.repository.commit.id)
|
||||
expect(json_response['title']).to eq(project.repository.commit.title)
|
||||
expect(json_response['stats']['additions']).to eq(project.repository.commit.stats.additions)
|
||||
expect(json_response['stats']['deletions']).to eq(project.repository.commit.stats.deletions)
|
||||
expect(json_response['stats']['total']).to eq(project.repository.commit.stats.total)
|
||||
commit = project.repository.commit
|
||||
expect(json_response['id']).to eq(commit.id)
|
||||
expect(json_response['short_id']).to eq(commit.short_id)
|
||||
expect(json_response['title']).to eq(commit.title)
|
||||
expect(json_response['message']).to eq(commit.safe_message)
|
||||
expect(json_response['author_name']).to eq(commit.author_name)
|
||||
expect(json_response['author_email']).to eq(commit.author_email)
|
||||
expect(json_response['authored_date']).to eq(commit.authored_date.iso8601(3))
|
||||
expect(json_response['committer_name']).to eq(commit.committer_name)
|
||||
expect(json_response['committer_email']).to eq(commit.committer_email)
|
||||
expect(json_response['committed_date']).to eq(commit.committed_date.iso8601(3))
|
||||
expect(json_response['parent_ids']).to eq(commit.parent_ids)
|
||||
expect(json_response['stats']['additions']).to eq(commit.stats.additions)
|
||||
expect(json_response['stats']['deletions']).to eq(commit.stats.deletions)
|
||||
expect(json_response['stats']['total']).to eq(commit.stats.total)
|
||||
end
|
||||
|
||||
it "returns a 404 error if not found" do
|
||||
|
|
Loading…
Reference in a new issue