From 4b559c9afb34b80b910efec514653c6ea65adba8 Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <godfat@godfat.org>
Date: Thu, 11 Aug 2016 17:26:04 +0800
Subject: [PATCH] Reverse ref and sha in args and rename pipeline to
 pipeline_for

---
 app/models/merge_request.rb                           | 3 ++-
 app/models/project.rb                                 | 7 ++++---
 app/views/projects/issues/_related_branches.html.haml | 2 +-
 db/fixtures/development/14_builds.rb                  | 2 +-
 lib/api/commit_statuses.rb                            | 2 +-
 spec/models/project_spec.rb                           | 2 +-
 spec/requests/api/commits_spec.rb                     | 2 +-
 spec/services/ci/image_for_build_service_spec.rb      | 2 +-
 8 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index b1fb3ce5d69..7c8e938df75 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -666,7 +666,8 @@ class MergeRequest < ActiveRecord::Base
   end
 
   def pipeline
-    @pipeline ||= source_project.pipeline(diff_head_sha, source_branch) if diff_head_sha && source_project
+    return unless diff_head_sha && source_project
+    @pipeline ||= source_project.pipeline_for(source_branch, diff_head_sha)
   end
 
   def merge_commit
diff --git a/app/models/project.rb b/app/models/project.rb
index d306f86f783..dc9b4b38a10 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -1086,12 +1086,13 @@ class Project < ActiveRecord::Base
     !namespace.share_with_group_lock
   end
 
-  def pipeline(sha, ref)
+  def pipeline_for(ref, sha)
     pipelines.order(id: :desc).find_by(sha: sha, ref: ref)
   end
 
-  def ensure_pipeline(sha, ref, current_user = nil)
-    pipeline(sha, ref) || pipelines.create(sha: sha, ref: ref, user: current_user)
+  def ensure_pipeline(ref, sha, current_user = nil)
+    pipeline_for(ref, sha) ||
+      pipelines.create(sha: sha, ref: ref, user: current_user)
   end
 
   def enable_ci
diff --git a/app/views/projects/issues/_related_branches.html.haml b/app/views/projects/issues/_related_branches.html.haml
index 6ea9f612d13..a8eeab3e55e 100644
--- a/app/views/projects/issues/_related_branches.html.haml
+++ b/app/views/projects/issues/_related_branches.html.haml
@@ -5,7 +5,7 @@
     - @related_branches.each do |branch|
       %li
         - target = @project.repository.find_branch(branch).target
-        - pipeline = @project.pipeline(target.sha, branch) if target
+        - pipeline = @project.pipeline_for(branch, target.sha) if target
         - if pipeline
           %span.related-branch-ci-status
             = render_pipeline_status(pipeline)
diff --git a/db/fixtures/development/14_builds.rb b/db/fixtures/development/14_builds.rb
index e65abe4ef77..6cc18bf51ed 100644
--- a/db/fixtures/development/14_builds.rb
+++ b/db/fixtures/development/14_builds.rb
@@ -40,7 +40,7 @@ class Gitlab::Seeder::Builds
     commits = @project.repository.commits('master', limit: 5)
     commits_sha = commits.map { |commit| commit.raw.id }
     commits_sha.map do |sha|
-      @project.ensure_pipeline(sha, 'master')
+      @project.ensure_pipeline('master', sha)
     end
   rescue
     []
diff --git a/lib/api/commit_statuses.rb b/lib/api/commit_statuses.rb
index 4df6ca8333e..5e3c9563703 100644
--- a/lib/api/commit_statuses.rb
+++ b/lib/api/commit_statuses.rb
@@ -64,7 +64,7 @@ module API
           ref = branches.first
         end
 
-        pipeline = @project.ensure_pipeline(commit.sha, ref, current_user)
+        pipeline = @project.ensure_pipeline(ref, commit.sha, current_user)
 
         name = params[:name] || params[:context]
         status = GenericCommitStatus.running_or_pending.find_by(pipeline: pipeline, name: name, ref: params[:ref])
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 9c3b4712cab..60819fe02be 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -688,7 +688,7 @@ describe Project, models: true do
     let(:project) { create :project }
     let(:pipeline) { create :ci_pipeline, project: project, ref: 'master' }
 
-    subject { project.pipeline(pipeline.sha, 'master') }
+    subject { project.pipeline_for('master', pipeline.sha) }
 
     it { is_expected.to eq(pipeline) }
 
diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb
index 4379fcb3c1e..60c2f14bd3c 100644
--- a/spec/requests/api/commits_spec.rb
+++ b/spec/requests/api/commits_spec.rb
@@ -94,7 +94,7 @@ describe API::API, api: true  do
       end
 
       it "returns status for CI" do
-        pipeline = project.ensure_pipeline(project.repository.commit.sha, 'master')
+        pipeline = project.ensure_pipeline('master', project.repository.commit.sha)
         get api("/projects/#{project.id}/repository/commits/#{project.repository.commit.id}", user)
         expect(response).to have_http_status(200)
         expect(json_response['status']).to eq(pipeline.status)
diff --git a/spec/services/ci/image_for_build_service_spec.rb b/spec/services/ci/image_for_build_service_spec.rb
index 3a3e3efe709..21e00b11a12 100644
--- a/spec/services/ci/image_for_build_service_spec.rb
+++ b/spec/services/ci/image_for_build_service_spec.rb
@@ -5,7 +5,7 @@ module Ci
     let(:service) { ImageForBuildService.new }
     let(:project) { FactoryGirl.create(:empty_project) }
     let(:commit_sha) { '01234567890123456789' }
-    let(:commit) { project.ensure_pipeline(commit_sha, 'master') }
+    let(:commit) { project.ensure_pipeline('master', commit_sha) }
     let(:build) { FactoryGirl.create(:ci_build, pipeline: commit) }
 
     describe '#execute' do
-- 
GitLab