Fix tests
This commit is contained in:
parent
30c78e70cb
commit
0e33814708
|
@ -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
|
||||||
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
|
||||||
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
|
||||||
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 @@
|
||||||
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
|
||||||
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
|
||||||
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'
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
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'
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
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 @@
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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'
|
||||||
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) }
|
||||||
|
|
Loading…
Reference in New Issue