summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMehdi Lahmam <mehdi@lahmam.com>2017-08-13 23:11:48 +0200
committerMehdi Lahmam <mehdi@lahmam.com>2017-11-05 21:59:58 +0100
commit08bc2f946bc788b8a51e7a4136cc83e57d9f707a (patch)
tree848cb042f2b74c57820fa5dbd776e73cee295457
parent1d5f2f9c333534b7004501bcfa52ca873d6a3403 (diff)
downloadgitlab-ce-08bc2f946bc788b8a51e7a4136cc83e57d9f707a.tar.gz
Expose `duration` in Job API entity
Closes #35794.
-rw-r--r--changelogs/unreleased/expose-job-duration.yml5
-rw-r--r--lib/api/entities.rb1
-rw-r--r--spec/requests/api/jobs_spec.rb12
3 files changed, 17 insertions, 1 deletions
diff --git a/changelogs/unreleased/expose-job-duration.yml b/changelogs/unreleased/expose-job-duration.yml
new file mode 100644
index 00000000000..1fe5d897d47
--- /dev/null
+++ b/changelogs/unreleased/expose-job-duration.yml
@@ -0,0 +1,5 @@
+---
+title: Expose duration in Job entity
+merge_request: 13644
+author: Mehdi Lahmam (@mehlah)
+type: added
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 67cecb6a7ad..398a7906dcb 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -822,6 +822,7 @@ module API
class Job < Grape::Entity
expose :id, :status, :stage, :name, :ref, :tag, :coverage
expose :created_at, :started_at, :finished_at
+ expose :duration
expose :user, with: User
expose :artifacts_file, using: JobArtifactFile, if: -> (job, opts) { job.artifacts? }
expose :commit, with: Commit
diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb
index 3b7b9c889e7..1765907c1b4 100644
--- a/spec/requests/api/jobs_spec.rb
+++ b/spec/requests/api/jobs_spec.rb
@@ -165,7 +165,17 @@ describe API::Jobs do
context 'authorized user' do
it 'returns specific job data' do
expect(response).to have_gitlab_http_status(200)
- expect(json_response['name']).to eq('test')
+ expect(json_response['id']).to eq(job.id)
+ expect(json_response['status']).to eq(job.status)
+ expect(json_response['stage']).to eq(job.stage)
+ expect(json_response['name']).to eq(job.name)
+ expect(json_response['ref']).to eq(job.ref)
+ expect(json_response['tag']).to eq(job.tag)
+ expect(json_response['coverage']).to eq(job.coverage)
+ expect(Time.parse(json_response['created_at'])).to be_like_time(job.created_at)
+ expect(Time.parse(json_response['started_at'])).to be_like_time(job.started_at)
+ expect(Time.parse(json_response['finished_at'])).to be_like_time(job.finished_at)
+ expect(json_response['duration']).to eq(job.duration)
end
it 'returns pipeline data' do