Commit 0e338147 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Fix tests

parent 30c78e70
...@@ -186,7 +186,7 @@ module Ci ...@@ -186,7 +186,7 @@ module Ci
end end
def project_id def project_id
commit.gl_project.gitlab_id commit.project.id
end end
def project_name def project_name
......
...@@ -37,8 +37,15 @@ module Ci ...@@ -37,8 +37,15 @@ module Ci
end end
def project def project
@project ||= gl_project.gitlab_ci_project unless @project
@project ||= gl_project.create_gitlab_ci_project gl_project.ensure_ci_project
@project = gl_project.gitlab_ci_project
end
@project
end
def project_id
project.id
end end
def last_build def last_build
...@@ -116,14 +123,14 @@ module Ci ...@@ -116,14 +123,14 @@ module Ci
builds_attrs = config_processor.builds_for_stage_and_ref(stage, ref, tag) builds_attrs = config_processor.builds_for_stage_and_ref(stage, ref, tag)
builds_attrs.map do |build_attrs| builds_attrs.map do |build_attrs|
builds.create!({ builds.create!({
name: build_attrs[:name], name: build_attrs[:name],
commands: build_attrs[:script], commands: build_attrs[:script],
tag_list: build_attrs[:tags], tag_list: build_attrs[:tags],
options: build_attrs[:options], options: build_attrs[:options],
allow_failure: build_attrs[:allow_failure], allow_failure: build_attrs[:allow_failure],
stage: build_attrs[:stage], stage: build_attrs[:stage],
trigger_request: trigger_request, trigger_request: trigger_request,
}) })
end end
end end
......
...@@ -748,6 +748,12 @@ class Project < ActiveRecord::Base ...@@ -748,6 +748,12 @@ class Project < ActiveRecord::Base
gitlab_ci_project.commits.find_by(sha: sha) if gitlab_ci? gitlab_ci_project.commits.find_by(sha: sha) if gitlab_ci?
end end
def ensure_ci_project
unless gitlab_ci_project
create_gitlab_ci_project
end
end
def enable_ci(user) def enable_ci(user)
# Enable service # Enable service
service = gitlab_ci_service || create_gitlab_ci_service service = gitlab_ci_service || create_gitlab_ci_service
......
...@@ -18,11 +18,13 @@ ...@@ -18,11 +18,13 @@
require 'spec_helper' require 'spec_helper'
describe Ci::Commit do describe Ci::Commit do
let(:commit) { FactoryGirl.create :ci_commit } let(:project) { FactoryGirl.create :ci_project }
let(:commit_with_project) { FactoryGirl.create :ci_commit } let(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project }
let(:commit) { FactoryGirl.create :ci_commit, gl_project: gl_project }
let(:commit_with_project) { FactoryGirl.create :ci_commit, gl_project: gl_project }
let(:config_processor) { Ci::GitlabCiYamlProcessor.new(gitlab_ci_yaml) } let(:config_processor) { Ci::GitlabCiYamlProcessor.new(gitlab_ci_yaml) }
it { is_expected.to belong_to(:project) } it { is_expected.to belong_to(:gl_project) }
it { is_expected.to have_many(:builds) } it { is_expected.to have_many(:builds) }
it { is_expected.to validate_presence_of :before_sha } it { is_expected.to validate_presence_of :before_sha }
it { is_expected.to validate_presence_of :sha } it { is_expected.to validate_presence_of :sha }
...@@ -87,7 +89,7 @@ describe Ci::Commit do ...@@ -87,7 +89,7 @@ describe Ci::Commit do
email_add_pusher: false, email_add_pusher: false,
email_recipients: 'rec1 rec2' email_recipients: 'rec1 rec2'
gl_project = FactoryGirl.create :empty_project, gitlab_ci_project: project gl_project = FactoryGirl.create :empty_project, gitlab_ci_project: project
commit = FactoryGirl.create :ci_commit, project: gl_project commit = FactoryGirl.create :ci_commit, gl_project: gl_project
expect(commit.project_recipients).to eq(['rec1', 'rec2']) expect(commit.project_recipients).to eq(['rec1', 'rec2'])
end end
...@@ -96,7 +98,7 @@ describe Ci::Commit do ...@@ -96,7 +98,7 @@ describe Ci::Commit do
email_add_pusher: true, email_add_pusher: true,
email_recipients: 'rec1 rec1 rec2' email_recipients: 'rec1 rec1 rec2'
gl_project = FactoryGirl.create :empty_project, gitlab_ci_project: project gl_project = FactoryGirl.create :empty_project, gitlab_ci_project: project
commit = FactoryGirl.create :ci_commit, project: gl_project commit = FactoryGirl.create :ci_commit, gl_project: gl_project
expected = 'rec2' expected = 'rec2'
allow(commit).to receive(:push_data) { { user_email: expected } } allow(commit).to receive(:push_data) { { user_email: expected } }
expect(commit.project_recipients).to eq(['rec1', 'rec2']) expect(commit.project_recipients).to eq(['rec1', 'rec2'])
......
...@@ -3,10 +3,8 @@ require 'spec_helper' ...@@ -3,10 +3,8 @@ require 'spec_helper'
describe Ci::HipChatMessage do describe Ci::HipChatMessage do
subject { Ci::HipChatMessage.new(build) } subject { Ci::HipChatMessage.new(build) }
let(:project) { FactoryGirl.create(:ci_project) }
context "One build" do context "One build" do
let(:commit) { FactoryGirl.create(:ci_commit_with_one_job, project: project) } let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) }
let(:build) do let(:build) do
commit.create_builds commit.create_builds
...@@ -37,7 +35,7 @@ describe Ci::HipChatMessage do ...@@ -37,7 +35,7 @@ describe Ci::HipChatMessage do
end end
context "Several builds" do context "Several builds" do
let(:commit) { FactoryGirl.create(:ci_commit_with_two_jobs, project: project) } let(:commit) { FactoryGirl.create(:ci_commit_with_two_jobs) }
let(:build) do let(:build) do
commit.builds.first commit.builds.first
......
...@@ -39,8 +39,8 @@ describe Ci::HipChatService do ...@@ -39,8 +39,8 @@ describe Ci::HipChatService do
before do before do
allow(service).to receive_messages( allow(service).to receive_messages(
project: project, project: commit.project,
project_id: project.id, project_id: commit.project_id,
notify_only_broken_builds: false, notify_only_broken_builds: false,
hipchat_room: 123, hipchat_room: 123,
hipchat_token: 'a1b2c3d4e5f6' hipchat_token: 'a1b2c3d4e5f6'
......
...@@ -3,10 +3,8 @@ require 'spec_helper' ...@@ -3,10 +3,8 @@ require 'spec_helper'
describe Ci::SlackMessage do describe Ci::SlackMessage do
subject { Ci::SlackMessage.new(commit) } subject { Ci::SlackMessage.new(commit) }
let(:project) { FactoryGirl.create :ci_project }
context "One build" do context "One build" do
let(:commit) { FactoryGirl.create(:ci_commit_with_one_job, project: project) } let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) }
let(:build) do let(:build) do
commit.create_builds commit.create_builds
...@@ -43,7 +41,7 @@ describe Ci::SlackMessage do ...@@ -43,7 +41,7 @@ describe Ci::SlackMessage do
end end
context "Several builds" do context "Several builds" do
let(:commit) { FactoryGirl.create(:ci_commit_with_two_jobs, project: project) } let(:commit) { FactoryGirl.create(:ci_commit_with_two_jobs) }
context 'when all matrix builds succeeded' do context 'when all matrix builds succeeded' do
let(:color) { 'good' } let(:color) { 'good' }
......
...@@ -38,8 +38,8 @@ describe Ci::SlackService do ...@@ -38,8 +38,8 @@ describe Ci::SlackService do
before do before do
allow(slack).to receive_messages( allow(slack).to receive_messages(
project: project, project: commit.project,
project_id: project.id, project_id: commit.project_id,
webhook: webhook_url, webhook: webhook_url,
notify_only_broken_builds: notify_only_broken_builds notify_only_broken_builds: notify_only_broken_builds
) )
......
...@@ -28,9 +28,17 @@ ...@@ -28,9 +28,17 @@
require 'spec_helper' require 'spec_helper'
describe Ci::Project do describe Ci::Project do
let(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project }
let (:gl_project) { }
subject { FactoryGirl.build :ci_project } subject { FactoryGirl.build :ci_project }
it { is_expected.to have_many(:commits) } it { is_expected.to have_many(:runner_projects) }
it { is_expected.to have_many(:runners) }
it { is_expected.to have_many(:web_hooks) }
it { is_expected.to have_many(:events) }
it { is_expected.to have_many(:variables) }
it { is_expected.to have_many(:triggers) }
it { is_expected.to have_many(:services) }
it { is_expected.to validate_presence_of :name } it { is_expected.to validate_presence_of :name }
it { is_expected.to validate_presence_of :timeout } it { is_expected.to validate_presence_of :timeout }
...@@ -50,41 +58,44 @@ describe Ci::Project do ...@@ -50,41 +58,44 @@ describe Ci::Project do
describe "ordered_by_last_commit_date" do describe "ordered_by_last_commit_date" do
it "returns ordered projects" do it "returns ordered projects" do
newest_project = FactoryGirl.create :ci_project newest_project = FactoryGirl.create :empty_project
oldest_project = FactoryGirl.create :ci_project newest_project.ensure_ci_project
project_without_commits = FactoryGirl.create :ci_project oldest_project = FactoryGirl.create :empty_project
oldest_project.ensure_ci_project
project_without_commits = FactoryGirl.create :empty_project
project_without_commits.ensure_ci_project
FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: newest_project FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: newest_project
FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: oldest_project FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: oldest_project
expect(Ci::Project.ordered_by_last_commit_date).to eq([newest_project, oldest_project, project_without_commits]) expect(Ci::Project.ordered_by_last_commit_date).to eq([newest_project.gitlab_ci_project, oldest_project.gitlab_ci_project, project_without_commits.gitlab_ci_project])
end end
end end
describe 'ordered commits' do describe 'ordered commits' do
let(:project) { FactoryGirl.create :ci_project } let(:project) { FactoryGirl.create :empty_project }
it 'returns ordered list of commits' do it 'returns ordered list of commits' do
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: project commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
commit2 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: project commit2 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
expect(project.commits).to eq([commit2, commit1]) expect(project.commits).to eq([commit2.project, commit1.project])
end end
it 'returns commits ordered by committed_at and id, with nulls last' do it 'returns commits ordered by committed_at and id, with nulls last' do
commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: project commit1 = FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, gl_project: project
commit2 = FactoryGirl.create :ci_commit, committed_at: nil, project: project commit2 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
commit3 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: project commit3 = FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, gl_project: project
commit4 = FactoryGirl.create :ci_commit, committed_at: nil, project: project commit4 = FactoryGirl.create :ci_commit, committed_at: nil, gl_project: project
expect(project.commits).to eq([commit2, commit4, commit3, commit1]) expect(project.commits).to eq([commit2.project, commit4.project, commit3.project, commit1.project])
end end
end end
context :valid_project do context :valid_project do
let(:project) { FactoryGirl.create :ci_project } let(:commit) { FactoryGirl.create(:ci_commit) }
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
context :project_with_commit_and_builds do context :project_with_commit_and_builds do
let(:project) { commit.project }
before do before do
FactoryGirl.create(:ci_build, commit: commit) FactoryGirl.create(:ci_build, commit: commit)
end end
......
...@@ -34,7 +34,7 @@ describe Ci::Service do ...@@ -34,7 +34,7 @@ describe Ci::Service do
before do before do
allow(@service).to receive_messages( allow(@service).to receive_messages(
project: project project: commit.project
) )
build build
@testable = @service.can_test? @testable = @service.can_test?
......
...@@ -3,7 +3,9 @@ require 'spec_helper' ...@@ -3,7 +3,9 @@ require 'spec_helper'
module Ci module Ci
describe RegisterBuildService do describe RegisterBuildService do
let!(:service) { RegisterBuildService.new } let!(:service) { RegisterBuildService.new }
let!(:commit) { FactoryGirl.create :ci_commit } let!(:project) { FactoryGirl.create :ci_project }
let!(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project }
let!(:commit) { FactoryGirl.create :ci_commit, gl_project: gl_project }
let!(:pending_build) { FactoryGirl.create :ci_build, commit: commit } let!(:pending_build) { FactoryGirl.create :ci_build, commit: commit }
let!(:shared_runner) { FactoryGirl.create(:ci_runner, is_shared: true) } let!(:shared_runner) { FactoryGirl.create(:ci_runner, is_shared: true) }
let!(:specific_runner) { FactoryGirl.create(:ci_runner, is_shared: false) } let!(:specific_runner) { FactoryGirl.create(:ci_runner, is_shared: false) }
......
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