summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-11-06 11:37:39 +0000
committerRémy Coutable <remy@rymai.me>2017-11-06 11:37:39 +0000
commit0713188bbae3b875de88858dbda5df7d525a6abe (patch)
treed6e9390e6cb6354c88c517a8552cc4f01c8eb783
parenta2cd9ad2516e8119de4cb8c499dc07c8fc25c65c (diff)
parent08bc2f946bc788b8a51e7a4136cc83e57d9f707a (diff)
downloadgitlab-ce-0713188bbae3b875de88858dbda5df7d525a6abe.tar.gz
Merge branch 'expose-job-duration' into 'master'
Expose `duration` in Job API entity Closes #35794 See merge request gitlab-org/gitlab-ce!13644
-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