Commit dd08202a authored by Grzegorz Bizon's avatar Grzegorz Bizon

Fix builds API response not including commit data

parent 0d287b06
...@@ -90,4 +90,12 @@ class CommitStatus < ActiveRecord::Base ...@@ -90,4 +90,12 @@ class CommitStatus < ActiveRecord::Base
def stuck? def stuck?
false false
end end
##
# Deprecated, this should be removed in 9.0 in favor of exposing
# entire pipeline in API.
#
def commit
pipeline.try(:commit_data)
end
end end
...@@ -445,11 +445,7 @@ module API ...@@ -445,11 +445,7 @@ module API
expose :created_at, :started_at, :finished_at expose :created_at, :started_at, :finished_at
expose :user, with: User expose :user, with: User
expose :artifacts_file, using: BuildArtifactFile, if: -> (build, opts) { build.artifacts? } expose :artifacts_file, using: BuildArtifactFile, if: -> (build, opts) { build.artifacts? }
expose :commit, with: RepoCommit do |repo_obj, _options| expose :commit, with: RepoCommit
if repo_obj.respond_to?(:commit)
repo_obj.commit.commit_data
end
end
expose :runner, with: Runner expose :runner, with: Runner
end end
......
...@@ -2,7 +2,12 @@ require 'spec_helper' ...@@ -2,7 +2,12 @@ require 'spec_helper'
describe Ci::Build, models: true do describe Ci::Build, models: true do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:pipeline) do
create(:ci_pipeline, project: project,
sha: project.commit.id)
end
let(:build) { create(:ci_build, pipeline: pipeline) } let(:build) { create(:ci_build, pipeline: pipeline) }
it { is_expected.to validate_presence_of :ref } it { is_expected.to validate_presence_of :ref }
...@@ -658,4 +663,10 @@ describe Ci::Build, models: true do ...@@ -658,4 +663,10 @@ describe Ci::Build, models: true do
end end
end end
end end
describe '#commit' do
it 'returns commit pipeline has been created for' do
expect(build.commit).to eq project.commit
end
end
end end
require 'spec_helper' require 'spec_helper'
describe CommitStatus, models: true do describe CommitStatus, models: true do
let(:pipeline) { FactoryGirl.create :ci_pipeline } let(:project) { create(:project) }
let(:commit_status) { FactoryGirl.create :commit_status, pipeline: pipeline }
let(:pipeline) do
create(:ci_pipeline, project: project, sha: project.commit.id)
end
let(:commit_status) { create(:commit_status, pipeline: pipeline) }
it { is_expected.to belong_to(:pipeline) } it { is_expected.to belong_to(:pipeline) }
it { is_expected.to belong_to(:user) } it { is_expected.to belong_to(:user) }
...@@ -13,7 +18,7 @@ describe CommitStatus, models: true do ...@@ -13,7 +18,7 @@ describe CommitStatus, models: true do
it { is_expected.to delegate_method(:sha).to(:pipeline) } it { is_expected.to delegate_method(:sha).to(:pipeline) }
it { is_expected.to delegate_method(:short_sha).to(:pipeline) } it { is_expected.to delegate_method(:short_sha).to(:pipeline) }
it { is_expected.to respond_to :success? } it { is_expected.to respond_to :success? }
it { is_expected.to respond_to :failed? } it { is_expected.to respond_to :failed? }
it { is_expected.to respond_to :running? } it { is_expected.to respond_to :running? }
...@@ -116,7 +121,7 @@ describe CommitStatus, models: true do ...@@ -116,7 +121,7 @@ describe CommitStatus, models: true do
it { is_expected.to be > 0.0 } it { is_expected.to be > 0.0 }
end end
end end
describe :latest do describe :latest do
subject { CommitStatus.latest.order(:id) } subject { CommitStatus.latest.order(:id) }
...@@ -198,4 +203,10 @@ describe CommitStatus, models: true do ...@@ -198,4 +203,10 @@ describe CommitStatus, models: true do
end end
end end
end end
describe '#commit' do
it 'returns commit pipeline has been created for' do
expect(commit_status.commit).to eq project.commit
end
end
end end
...@@ -9,8 +9,8 @@ describe API::API, api: true do ...@@ -9,8 +9,8 @@ describe API::API, api: true do
let!(:project) { create(:project, creator_id: user.id) } let!(:project) { create(:project, creator_id: user.id) }
let!(:developer) { create(:project_member, :developer, user: user, project: project) } let!(:developer) { create(:project_member, :developer, user: user, project: project) }
let!(:reporter) { create(:project_member, :reporter, user: user2, project: project) } let!(:reporter) { create(:project_member, :reporter, user: user2, project: project) }
let(:pipeline) { create(:ci_pipeline, project: project)} let!(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.id) }
let(:build) { create(:ci_build, pipeline: pipeline) } let!(:build) { create(:ci_build, pipeline: pipeline) }
describe 'GET /projects/:id/builds ' do describe 'GET /projects/:id/builds ' do
let(:query) { '' } let(:query) { '' }
...@@ -23,6 +23,11 @@ describe API::API, api: true do ...@@ -23,6 +23,11 @@ describe API::API, api: true do
expect(json_response).to be_an Array expect(json_response).to be_an Array
end end
it 'returns correct values' do
expect(json_response).not_to be_empty
expect(json_response.first['commit']['id']).to eq project.commit.id
end
context 'filter project with one scope element' do context 'filter project with one scope element' do
let(:query) { 'scope=pending' } let(:query) { 'scope=pending' }
...@@ -132,7 +137,7 @@ describe API::API, api: true do ...@@ -132,7 +137,7 @@ describe API::API, api: true do
describe 'GET /projects/:id/builds/:build_id/trace' do describe 'GET /projects/:id/builds/:build_id/trace' do
let(:build) { create(:ci_build, :trace, pipeline: pipeline) } let(:build) { create(:ci_build, :trace, pipeline: pipeline) }
before { get api("/projects/#{project.id}/builds/#{build.id}/trace", api_user) } before { get api("/projects/#{project.id}/builds/#{build.id}/trace", api_user) }
context 'authorized user' do context 'authorized user' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment