summaryrefslogtreecommitdiff
path: root/spec/models/build_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/build_spec.rb')
-rw-r--r--spec/models/build_spec.rb220
1 files changed, 65 insertions, 155 deletions
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 9e932ab..ae67c33 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -3,58 +3,43 @@
# Table name: builds
#
# id :integer not null, primary key
-# project_id :integer
-# ref :string(255)
# status :string(255)
# finished_at :datetime
# trace :text
# created_at :datetime
# updated_at :datetime
-# sha :string(255)
# started_at :datetime
# tmp_file :string(255)
-# before_sha :string(255)
-# push_data :text
# runner_id :integer
+# commit_id :integer
#
require 'spec_helper'
describe Build do
let(:project) { FactoryGirl.create :project }
- let(:build) { FactoryGirl.create :build }
- let(:build_with_project) { FactoryGirl.create :build, project: project }
+ let(:commit) { FactoryGirl.create :commit, project: project }
+ let(:build) { FactoryGirl.create :build, commit: commit }
- it { should belong_to(:project) }
- it { should validate_presence_of :before_sha }
- it { should validate_presence_of :sha }
- it { should validate_presence_of :ref }
+ it { should belong_to(:commit) }
it { should validate_presence_of :status }
it { should respond_to :success? }
it { should respond_to :failed? }
it { should respond_to :running? }
it { should respond_to :pending? }
- it { should respond_to :git_author_name }
- it { should respond_to :git_author_email }
- it { should respond_to :short_sha }
it { should respond_to :trace_html }
- it { should allow_mass_assignment_of(:project_id) }
- it { should allow_mass_assignment_of(:ref) }
- it { should allow_mass_assignment_of(:sha) }
- it { should allow_mass_assignment_of(:before_sha) }
+ it { should allow_mass_assignment_of(:commit_id) }
it { should allow_mass_assignment_of(:status) }
+ it { should allow_mass_assignment_of(:started_at) }
it { should allow_mass_assignment_of(:finished_at) }
it { should allow_mass_assignment_of(:trace) }
- it { should allow_mass_assignment_of(:started_at) }
- it { should allow_mass_assignment_of(:push_data) }
it { should allow_mass_assignment_of(:runner_id) }
- it { should allow_mass_assignment_of(:project_name) }
describe :first_pending do
- let(:first) { FactoryGirl.create :build, status: 'pending', created_at: Date.yesterday }
- let(:second) { FactoryGirl.create :build, status: 'pending' }
+ let(:first) { FactoryGirl.create :build, commit: commit, status: 'pending', created_at: Date.yesterday }
+ let(:second) { FactoryGirl.create :build, commit: commit, status: 'pending' }
before { first; second }
subject { Build.first_pending }
@@ -76,73 +61,6 @@ describe Build do
end
end
- describe :ci_skip? do
- let(:project) { FactoryGirl.create(:project) }
- let(:build) { FactoryGirl.create(:build, project: project) }
-
- it 'true if commit message contains [ci skip]' do
- build.stub(:git_commit_message) { 'Small typo [ci skip]' }
- build.ci_skip?.should == true
- end
-
- it 'false if commit message does not contain [ci skip]' do
- build.ci_skip?.should == false
- end
- end
-
- describe :project_recipients do
-
- context 'always sending notification' do
- it 'should return git_author_email as only recipient when no additional recipients are given' do
- project = FactoryGirl.create :project,
- email_add_committer: true,
- email_recipients: ''
- build = FactoryGirl.create :build,
- status: :success,
- project: project
- expected = 'git_author_email'
- build.stub(:git_author_email) { expected }
- build.project_recipients.should == [expected]
- end
-
- it 'should return git_author_email and additional recipients' do
- project = FactoryGirl.create :project,
- email_add_committer: true,
- email_recipients: 'rec1 rec2'
- build = FactoryGirl.create :build,
- status: :success,
- project: project
- expected = 'git_author_email'
- build.stub(:git_author_email) { expected }
- build.project_recipients.should == ['rec1', 'rec2', expected]
- end
-
- it 'should return recipients' do
- project = FactoryGirl.create :project,
- email_add_committer: false,
- email_recipients: 'rec1 rec2'
- build = FactoryGirl.create :build,
- status: :success,
- project: project
- expected = 'git_author_email'
- build.stub(:git_author_email) { expected }
- build.project_recipients.should == ['rec1', 'rec2']
- end
-
- it 'should return unique recipients only' do
- project = FactoryGirl.create :project,
- email_add_committer: true,
- email_recipients: 'rec1 rec1 rec2'
- build = FactoryGirl.create :build,
- status: :success,
- project: project
- expected = 'rec2'
- build.stub(:git_author_email) { expected }
- build.project_recipients.should == ['rec1', 'rec2']
- end
- end
- end
-
describe :started? do
subject { build.started? }
@@ -209,17 +127,6 @@ describe Build do
end
end
- describe :valid_commit_sha do
- context 'build.sha can not start with 00000000' do
- before do
- build.sha = '0' * 32
- build.valid_commit_sha
- end
-
- it('build errors should not be empty') { build.errors.should_not be_empty }
- end
- end
-
describe :trace do
subject { build.trace_html }
@@ -234,91 +141,94 @@ describe Build do
end
end
- describe :compare? do
- subject { build_with_project.compare? }
+ describe :commands do
+ subject { build.commands }
- context 'if project.gitlab_url and build.before_sha are not nil' do
- it { should be_true }
- end
+ it { should eq(commit.project.scripts) }
end
- describe :short_sha do
- subject { build.short_before_sha }
+ describe :timeout do
+ subject { build.timeout }
- it { should have(9).items }
- it { build.before_sha.should start_with(subject) }
+ it { should eq(commit.project.timeout) }
end
- describe :short_sha do
- subject { build.short_sha }
+ describe :duration do
+ subject { build.duration }
+
+ it { should eq(120.0) }
+
+ context 'if the building process has not started yet' do
+ before do
+ build.started_at = nil
+ build.finished_at = nil
+ end
- it { should have(9).items }
- it { build.sha.should start_with(subject) }
+ it { should be_nil }
+ end
+
+ context 'if the building process has started' do
+ before do
+ build.started_at = Time.now - 1.minute
+ build.finished_at = nil
+ end
+
+ it { should be_a(Float) }
+ it { should > 0.0 }
+ end
end
- describe :repo_url do
- subject { build_with_project.repo_url }
-
- it { should be_a(String) }
- it { should end_with(".git") }
- it { should start_with(project.gitlab_url[0..6]) }
- it { should include(project.token) }
- it { should include('gitlab-ci-token') }
- it { should include(project.gitlab_url[7..-1]) }
+ describe :ref do
+ subject { build.ref }
+
+ it { should eq(commit.ref) }
end
- describe :gitlab? do
- subject { build_with_project.gitlab? }
+ describe :sha do
+ subject { build.sha }
- it { should eq(project.gitlab?) }
+ it { should eq(commit.sha) }
end
- describe :commands do
- subject { build_with_project.commands }
+ describe :short_sha do
+ subject { build.short_sha }
- it { should eq(project.scripts) }
+ it { should eq(commit.short_sha) }
end
- describe :timeout do
- subject { build_with_project.timeout }
+ describe :before_sha do
+ subject { build.before_sha }
- it { should eq(project.timeout) }
+ it { should eq(commit.before_sha) }
end
describe :allow_git_fetch do
- subject { build_with_project.allow_git_fetch }
+ subject { build.allow_git_fetch }
- it { should eq(project.allow_git_fetch) }
+ it { should eq(commit.allow_git_fetch) }
end
- describe :name do
- subject { build_with_project.project_name }
+ describe :project do
+ subject { build.project }
- it { should eq(project.name) }
+ it { should eq(commit.project) }
end
- describe :duration do
- subject { build.duration }
+ describe :project_id do
+ subject { build.project_id }
- it { should eq(120.0) }
+ it { should eq(commit.project_id) }
+ end
- context 'if the building process has not started yet' do
- before do
- build.started_at = nil
- build.finished_at = nil
- end
+ describe :project_name do
+ subject { build.project_name }
- it { should be_nil }
- end
+ it { should eq(commit.project_name) }
+ end
- context 'if the building process has started' do
- before do
- build.started_at = Time.now - 1.minute
- build.finished_at = nil
- end
+ describe :repo_url do
+ subject { build.repo_url }
- it { should be_a(Float) }
- it { should > 0.0 }
- end
+ it { should eq(commit.repo_url) }
end
end