From ac50f9dddfb4555a2c356454c1cbfc1cc0b37d6d Mon Sep 17 00:00:00 2001
From: Kamil Trzcinski <ayufan@ayufan.eu>
Date: Tue, 12 Apr 2016 10:23:31 +0200
Subject: [PATCH] Fix rest of rspec and spinach tests

---
 app/models/ci/commit.rb                  | 10 +++++-----
 app/models/concerns/ci_status.rb         |  6 ++++--
 app/services/ci/create_builds_service.rb |  2 +-
 features/steps/shared/builds.rb          |  6 +++---
 features/steps/shared/project.rb         |  2 +-
 spec/lib/ci/status_spec.rb               | 15 ++++++++++++---
 6 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/app/models/ci/commit.rb b/app/models/ci/commit.rb
index d09866a4bdf..2ab1fefe8e1 100644
--- a/app/models/ci/commit.rb
+++ b/app/models/ci/commit.rb
@@ -117,7 +117,7 @@ module Ci
 
       # get status for all prior builds
       prior_builds = latest_builds.reject { |other_build| next_stages.include?(other_build.stage) }
-      status = Ci::Status.get_status(prior_builds)
+      status = prior_builds.status
 
       # create builds for next stages based
       next_stages.any? do |stage|
@@ -185,7 +185,7 @@ module Ci
     private
 
     def update_status
-      status =
+      self.status =
         if yaml_errors.present?
           'failed'
         else
@@ -194,17 +194,17 @@ module Ci
     end
 
     def update_started_at
-      started_at =
+      self.started_at =
         statuses.minimum(:started_at)
     end
 
     def update_finished_at
-      finished_at =
+      self.finished_at =
         statuses.maximum(:finished_at)
     end
 
     def update_duration
-      duration = begin
+      self.duration = begin
         duration_array = latest.map(&:duration).compact
         duration_array.reduce(:+).to_i
       end
diff --git a/app/models/concerns/ci_status.rb b/app/models/concerns/ci_status.rb
index 25bee601f43..6450b6dd202 100644
--- a/app/models/concerns/ci_status.rb
+++ b/app/models/concerns/ci_status.rb
@@ -5,7 +5,7 @@ module CiStatus
     def status
       objs = all.to_a
       if objs.none?
-         nil
+        nil
       elsif objs.all? { |status| status.success? || status.try(:ignored?) }
         'success'
       elsif objs.all?(&:pending?)
@@ -14,6 +14,8 @@ module CiStatus
         'running'
       elsif objs.all?(&:canceled?)
         'canceled'
+      elsif objs.all?(&:skipped?)
+        'skipped'
       else
         'failed'
       end
@@ -56,4 +58,4 @@ module CiStatus
   def complete?
     canceled? || success? || failed?
   end
-end
\ No newline at end of file
+end
diff --git a/app/services/ci/create_builds_service.rb b/app/services/ci/create_builds_service.rb
index bbc8251a2da..18274ce24e2 100644
--- a/app/services/ci/create_builds_service.rb
+++ b/app/services/ci/create_builds_service.rb
@@ -22,7 +22,7 @@ module Ci
       builds_attrs.map do |build_attrs|
         # don't create the same build twice
         unless @commit.builds.find_by(ref: @commit.ref, tag: @commit.tag,
-                                     trigger_request: trigger_request, name: build_attrs[:name])
+                                      trigger_request: trigger_request, name: build_attrs[:name])
           build_attrs.slice!(:name,
                              :commands,
                              :tag_list,
diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb
index c4c7672a432..cf30e23b6bd 100644
--- a/features/steps/shared/builds.rb
+++ b/features/steps/shared/builds.rb
@@ -10,16 +10,16 @@ module SharedBuilds
   end
 
   step 'project has a recent build' do
-    @ci_commit = create(:ci_commit, project: @project, sha: @project.commit.sha)
+    @ci_commit = create(:ci_commit, project: @project, sha: @project.commit.sha, ref: 'master')
     @build = create(:ci_build_with_coverage, commit: @ci_commit)
   end
 
   step 'recent build is successful' do
-    @build.update_column(:status, 'success')
+    @build.update(status: 'success')
   end
 
   step 'recent build failed' do
-    @build.update_column(:status, 'failed')
+    @build.update(status: 'failed')
   end
 
   step 'project has another build that is running' do
diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb
index 3eb0cf00e67..084338f30d8 100644
--- a/features/steps/shared/project.rb
+++ b/features/steps/shared/project.rb
@@ -230,7 +230,7 @@ module SharedProject
 
   step 'project "Shop" has CI build' do
     project = Project.find_by(name: "Shop")
-    create :ci_commit, project: project, sha: project.commit.sha, ref: 'master'
+    commit = create :ci_commit, project: project, sha: project.commit.sha, ref: 'master', status: 'skipped'
   end
 
   step 'I should see last commit with CI status' do
diff --git a/spec/lib/ci/status_spec.rb b/spec/lib/ci/status_spec.rb
index 47f3df6e3ce..1c37921cd7e 100644
--- a/spec/lib/ci/status_spec.rb
+++ b/spec/lib/ci/status_spec.rb
@@ -1,8 +1,17 @@
 require 'spec_helper'
 
-describe Ci::Status do
-  describe '.get_status' do
-    subject { described_class.get_status(statuses) }
+describe CiStatus do
+  before do
+    @object = Object.new
+    @object.extend(CiStatus::ClassMethods)
+  end
+
+  describe '.status' do
+    before do
+      allow(@object).to receive(:all).and_return(statuses)
+    end
+
+    subject { @object.status }
     
     shared_examples 'build status summary' do
       context 'all successful' do
-- 
GitLab