Remove ordering from :ci_commits relation
This commit is contained in:
parent
a957eca6f3
commit
09255eecd0
|
@ -24,6 +24,8 @@ module Ci
|
|||
has_many :builds, class_name: 'Ci::Build'
|
||||
has_many :trigger_requests, dependent: :destroy, class_name: 'Ci::TriggerRequest'
|
||||
|
||||
scope :ordered, -> { order('CASE WHEN ci_commits.committed_at IS NULL THEN 0 ELSE 1 END', :committed_at, :id) }
|
||||
|
||||
validates_presence_of :sha
|
||||
validate :valid_commit_sha
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ module Ci
|
|||
end
|
||||
|
||||
def commits
|
||||
gl_project.ci_commits
|
||||
gl_project.ci_commits.ordered
|
||||
end
|
||||
|
||||
def builds
|
||||
|
|
|
@ -119,7 +119,7 @@ class Project < ActiveRecord::Base
|
|||
has_many :deploy_keys, through: :deploy_keys_projects
|
||||
has_many :users_star_projects, dependent: :destroy
|
||||
has_many :starrers, through: :users_star_projects, source: :user
|
||||
has_many :ci_commits, ->() { order('CASE WHEN ci_commits.committed_at IS NULL THEN 0 ELSE 1 END', :committed_at, :id) }, dependent: :destroy, class_name: 'Ci::Commit', foreign_key: :gl_project_id
|
||||
has_many :ci_commits, dependent: :destroy, class_name: 'Ci::Commit', foreign_key: :gl_project_id
|
||||
has_many :ci_builds, through: :ci_commits, source: :builds, dependent: :destroy, class_name: 'Ci::Build'
|
||||
|
||||
has_one :import_data, dependent: :destroy, class_name: "ProjectImportData"
|
||||
|
|
|
@ -32,6 +32,24 @@ describe Ci::Commit do
|
|||
it { is_expected.to respond_to :git_author_email }
|
||||
it { is_expected.to respond_to :short_sha }
|
||||
|
||||
describe :ordered do
|
||||
let(:project) { FactoryGirl.create :empty_project }
|
||||
|
||||
it 'returns ordered list of commits' do
|
||||
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
|
||||
commit2 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
|
||||
expect(project.ci_commits.ordered).to eq([commit2, commit1])
|
||||
end
|
||||
|
||||
it 'returns commits ordered by committed_at and id, with nulls last' do
|
||||
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
|
||||
commit2 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
|
||||
commit3 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
|
||||
commit4 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
|
||||
expect(project.ci_commits.ordered).to eq([commit2, commit4, commit3, commit1])
|
||||
end
|
||||
end
|
||||
|
||||
describe :last_build do
|
||||
subject { commit.last_build }
|
||||
before do
|
||||
|
|
|
@ -131,24 +131,6 @@ describe Ci::Project do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'ordered commits' do
|
||||
let(:project) { FactoryGirl.create :empty_project }
|
||||
|
||||
it 'returns ordered list of commits' do
|
||||
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
|
||||
commit2 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
|
||||
expect(project.ci_commits).to eq([commit2, commit1])
|
||||
end
|
||||
|
||||
it 'returns commits ordered by committed_at and id, with nulls last' do
|
||||
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
|
||||
commit2 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
|
||||
commit3 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
|
||||
commit4 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
|
||||
expect(project.ci_commits).to eq([commit2, commit4, commit3, commit1])
|
||||
end
|
||||
end
|
||||
|
||||
context :valid_project do
|
||||
let(:commit) { FactoryGirl.create(:ci_commit) }
|
||||
|
||||
|
|
Loading…
Reference in New Issue