Commit 59c3a323 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Fix commit specs

parent 10b3c85e
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
module Ci module Ci
class Trigger < ActiveRecord::Base class Trigger < ActiveRecord::Base
extend Ci::Model extend Ci::Model
acts_as_paranoid acts_as_paranoid
belongs_to :project, class_name: 'Ci::Trigger' belongs_to :project, class_name: 'Ci::Project'
has_many :trigger_requests, dependent: :destroy, class_name: 'Ci::TriggerRequest' has_many :trigger_requests, dependent: :destroy, class_name: 'Ci::TriggerRequest'
validates_presence_of :token validates_presence_of :token
......
...@@ -37,7 +37,7 @@ FactoryGirl.define do ...@@ -37,7 +37,7 @@ FactoryGirl.define do
} }
end end
factory :not_started_build do factory :ci_not_started_build do
started_at nil started_at nil
finished_at nil finished_at nil
end end
......
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryGirl.define do
factory :ci_trigger_request do factory :ci_trigger_request, class: Ci::TriggerRequest do
factory :ci_trigger_request_with_variables do factory :ci_trigger_request_with_variables do
variables do variables do
{ {
......
...@@ -30,14 +30,14 @@ describe Ci::Build do ...@@ -30,14 +30,14 @@ describe Ci::Build do
let(:commit) { FactoryGirl.create :ci_commit, project: project } let(:commit) { FactoryGirl.create :ci_commit, project: project }
let(:build) { FactoryGirl.create :ci_build, commit: commit } let(:build) { FactoryGirl.create :ci_build, commit: commit }
it { should belong_to(:commit) } it { is_expected.to belong_to(:commit) }
it { should validate_presence_of :status } it { is_expected.to validate_presence_of :status }
it { should respond_to :success? } it { is_expected.to respond_to :success? }
it { should respond_to :failed? } it { is_expected.to respond_to :failed? }
it { should respond_to :running? } it { is_expected.to respond_to :running? }
it { should respond_to :pending? } it { is_expected.to respond_to :pending? }
it { should respond_to :trace_html } it { is_expected.to respond_to :trace_html }
describe :first_pending do describe :first_pending do
let(:first) { FactoryGirl.create :ci_build, commit: commit, status: 'pending', created_at: Date.yesterday } let(:first) { FactoryGirl.create :ci_build, commit: commit, status: 'pending', created_at: Date.yesterday }
...@@ -45,8 +45,8 @@ describe Ci::Build do ...@@ -45,8 +45,8 @@ describe Ci::Build do
before { first; second } before { first; second }
subject { Ci::Build.first_pending } subject { Ci::Build.first_pending }
it { should be_a(Ci::Build) } it { is_expected.to be_a(Ci::Build) }
it('returns with the first pending build') { should eq(first) } it('returns with the first pending build') { is_expected.to eq(first) }
end end
describe :create_from do describe :create_from do
...@@ -69,14 +69,14 @@ describe Ci::Build do ...@@ -69,14 +69,14 @@ describe Ci::Build do
context 'without started_at' do context 'without started_at' do
before { build.started_at = nil } before { build.started_at = nil }
it { should be_falsey } it { is_expected.to be_falsey }
end end
%w(running success failed).each do |status| %w(running success failed).each do |status|
context "if build status is #{status}" do context "if build status is #{status}" do
before { build.status = status } before { build.status = status }
it { should be_truthy } it { is_expected.to be_truthy }
end end
end end
...@@ -84,7 +84,7 @@ describe Ci::Build do ...@@ -84,7 +84,7 @@ describe Ci::Build do
context "if build status is #{status}" do context "if build status is #{status}" do
before { build.status = status } before { build.status = status }
it { should be_falsey } it { is_expected.to be_falsey }
end end
end end
end end
...@@ -96,7 +96,7 @@ describe Ci::Build do ...@@ -96,7 +96,7 @@ describe Ci::Build do
context "if build.status is #{state}" do context "if build.status is #{state}" do
before { build.status = state } before { build.status = state }
it { should be_truthy } it { is_expected.to be_truthy }
end end
end end
...@@ -104,7 +104,7 @@ describe Ci::Build do ...@@ -104,7 +104,7 @@ describe Ci::Build do
context "if build.status is #{state}" do context "if build.status is #{state}" do
before { build.status = state } before { build.status = state }
it { should be_falsey } it { is_expected.to be_falsey }
end end
end end
end end
...@@ -116,7 +116,7 @@ describe Ci::Build do ...@@ -116,7 +116,7 @@ describe Ci::Build do
context "if build.status is #{state}" do context "if build.status is #{state}" do
before { build.status = state } before { build.status = state }
it { should be_truthy } it { is_expected.to be_truthy }
end end
end end
...@@ -124,7 +124,7 @@ describe Ci::Build do ...@@ -124,7 +124,7 @@ describe Ci::Build do
context "if build.status is #{state}" do context "if build.status is #{state}" do
before { build.status = state } before { build.status = state }
it { should be_falsey } it { is_expected.to be_falsey }
end end
end end
end end
...@@ -138,13 +138,13 @@ describe Ci::Build do ...@@ -138,13 +138,13 @@ describe Ci::Build do
context 'and build.status is success' do context 'and build.status is success' do
before { build.status = 'success' } before { build.status = 'success' }
it { should be_falsey } it { is_expected.to be_falsey }
end end
context 'and build.status is failed' do context 'and build.status is failed' do
before { build.status = 'failed' } before { build.status = 'failed' }
it { should be_falsey } it { is_expected.to be_falsey }
end end
end end
...@@ -154,13 +154,13 @@ describe Ci::Build do ...@@ -154,13 +154,13 @@ describe Ci::Build do
context 'and build.status is success' do context 'and build.status is success' do
before { build.status = 'success' } before { build.status = 'success' }
it { should be_falsey } it { is_expected.to be_falsey }
end end
context 'and build.status is failed' do context 'and build.status is failed' do
before { build.status = 'failed' } before { build.status = 'failed' }
it { should be_truthy } it { is_expected.to be_truthy }
end end
end end
end end
...@@ -168,27 +168,27 @@ describe Ci::Build do ...@@ -168,27 +168,27 @@ describe Ci::Build do
describe :trace do describe :trace do
subject { build.trace_html } subject { build.trace_html }
it { should be_empty } it { is_expected.to be_empty }
context 'if build.trace contains text' do context 'if build.trace contains text' do
let(:text) { 'example output' } let(:text) { 'example output' }
before { build.trace = text } before { build.trace = text }
it { should include(text) } it { is_expected.to include(text) }
it { should have_at_least(text.length).items } it { is_expected.to have_at_least(text.length).items }
end end
end end
describe :timeout do describe :timeout do
subject { build.timeout } subject { build.timeout }
it { should eq(commit.project.timeout) } it { is_expected.to eq(commit.project.timeout) }
end end
describe :duration do describe :duration do
subject { build.duration } subject { build.duration }
it { should eq(120.0) } it { is_expected.to eq(120.0) }
context 'if the building process has not started yet' do context 'if the building process has not started yet' do
before do before do
...@@ -196,7 +196,7 @@ describe Ci::Build do ...@@ -196,7 +196,7 @@ describe Ci::Build do
build.finished_at = nil build.finished_at = nil
end end
it { should be_nil } it { is_expected.to be_nil }
end end
context 'if the building process has started' do context 'if the building process has started' do
...@@ -205,8 +205,8 @@ describe Ci::Build do ...@@ -205,8 +205,8 @@ describe Ci::Build do
build.finished_at = nil build.finished_at = nil
end end
it { should be_a(Float) } it { is_expected.to be_a(Float) }
it { should > 0.0 } it { is_expected.to be > 0.0 }
end end
end end
...@@ -221,86 +221,86 @@ describe Ci::Build do ...@@ -221,86 +221,86 @@ describe Ci::Build do
} }
subject { build.options } subject { build.options }
it { should eq(options) } it { is_expected.to eq(options) }
end end
describe :ref do describe :ref do
subject { build.ref } subject { build.ref }
it { should eq(commit.ref) } it { is_expected.to eq(commit.ref) }
end end
describe :sha do describe :sha do
subject { build.sha } subject { build.sha }
it { should eq(commit.sha) } it { is_expected.to eq(commit.sha) }
end end
describe :short_sha do describe :short_sha do
subject { build.short_sha } subject { build.short_sha }
it { should eq(commit.short_sha) } it { is_expected.to eq(commit.short_sha) }
end end
describe :before_sha do describe :before_sha do
subject { build.before_sha } subject { build.before_sha }
it { should eq(commit.before_sha) } it { is_expected.to eq(commit.before_sha) }
end end
describe :allow_git_fetch do describe :allow_git_fetch do
subject { build.allow_git_fetch } subject { build.allow_git_fetch }
it { should eq(project.allow_git_fetch) } it { is_expected.to eq(project.allow_git_fetch) }
end end
describe :project do describe :project do
subject { build.project } subject { build.project }
it { should eq(commit.project) } it { is_expected.to eq(commit.project) }
end end
describe :project_id do describe :project_id do
subject { build.project_id } subject { build.project_id }
it { should eq(commit.project_id) } it { is_expected.to eq(commit.project_id) }
end end
describe :project_name do describe :project_name do
subject { build.project_name } subject { build.project_name }
it { should eq(project.name) } it { is_expected.to eq(project.name) }
end end
describe :repo_url do describe :repo_url do
subject { build.repo_url } subject { build.repo_url }
it { should eq(project.repo_url_with_auth) } it { is_expected.to eq(project.repo_url_with_auth) }
end end
describe :extract_coverage do describe :extract_coverage do
context 'valid content & regex' do context 'valid content & regex' do
subject { build.extract_coverage('Coverage 1033 / 1051 LOC (98.29%) covered', '\(\d+.\d+\%\) covered') } subject { build.extract_coverage('Coverage 1033 / 1051 LOC (98.29%) covered', '\(\d+.\d+\%\) covered') }
it { should eq(98.29) } it { is_expected.to eq(98.29) }
end end
context 'valid content & bad regex' do context 'valid content & bad regex' do
subject { build.extract_coverage('Coverage 1033 / 1051 LOC (98.29%) covered', 'very covered') } subject { build.extract_coverage('Coverage 1033 / 1051 LOC (98.29%) covered', 'very covered') }
it { should be_nil } it { is_expected.to be_nil }
end end
context 'no coverage content & regex' do context 'no coverage content & regex' do
subject { build.extract_coverage('No coverage for today :sad:', '\(\d+.\d+\%\) covered') } subject { build.extract_coverage('No coverage for today :sad:', '\(\d+.\d+\%\) covered') }
it { should be_nil } it { is_expected.to be_nil }
end end
context 'multiple results in content & regex' do context 'multiple results in content & regex' do
subject { build.extract_coverage(' (98.39%) covered. (98.29%) covered', '\(\d+.\d+\%\) covered') } subject { build.extract_coverage(' (98.39%) covered. (98.29%) covered', '\(\d+.\d+\%\) covered') }
it { should eq(98.29) } it { is_expected.to eq(98.29) }
end end
end end
...@@ -314,7 +314,7 @@ describe Ci::Build do ...@@ -314,7 +314,7 @@ describe Ci::Build do
] ]
} }
it { should eq(variables) } it { is_expected.to eq(variables) }
context 'and secure variables' do context 'and secure variables' do
let(:secure_variables) { let(:secure_variables) {
...@@ -327,7 +327,7 @@ describe Ci::Build do ...@@ -327,7 +327,7 @@ describe Ci::Build do
build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value') build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value')
end end
it { should eq(variables + secure_variables) } it { is_expected.to eq(variables + secure_variables) }
context 'and trigger variables' do context 'and trigger variables' do
let(:trigger) { FactoryGirl.create :ci_trigger, project: project } let(:trigger) { FactoryGirl.create :ci_trigger, project: project }
...@@ -342,7 +342,7 @@ describe Ci::Build do ...@@ -342,7 +342,7 @@ describe Ci::Build do
build.trigger_request = trigger_request build.trigger_request = trigger_request
end end
it { should eq(variables + secure_variables + trigger_variables) } it { is_expected.to eq(variables + secure_variables + trigger_variables) }
end end
end end
end end
......
...@@ -21,18 +21,18 @@ describe Ci::Commit do ...@@ -21,18 +21,18 @@ describe Ci::Commit do
let(:project) { FactoryGirl.create :ci_project } let(:project) { FactoryGirl.create :ci_project }
let(:commit) { FactoryGirl.create :ci_commit, project: project } let(:commit) { FactoryGirl.create :ci_commit, project: project }
let(:commit_with_project) { FactoryGirl.create :ci_commit, project: project } let(:commit_with_project) { FactoryGirl.create :ci_commit, project: project }
let(:config_processor) { GitlabCiYamlProcessor.new(gitlab_ci_yaml) } let(:config_processor) { Ci::GitlabCiYamlProcessor.new(gitlab_ci_yaml) }
it { should belong_to(:project) } it { is_expected.to belong_to(:project) }
it { should have_many(:builds) } it { is_expected.to have_many(:builds) }
it { should validate_presence_of :before_sha } it { is_expected.to validate_presence_of :before_sha }
it { should validate_presence_of :sha } it { is_expected.to validate_presence_of :sha }
it { should validate_presence_of :ref } it { is_expected.to validate_presence_of :ref }
it { should validate_presence_of :push_data } it { is_expected.to validate_presence_of :push_data }
it { should respond_to :git_author_name } it { is_expected.to respond_to :git_author_name }
it { should respond_to :git_author_email } it { is_expected.to respond_to :git_author_email }
it { should respond_to :short_sha } it { is_expected.to respond_to :short_sha }
describe :last_build do describe :last_build do
subject { commit.last_build } subject { commit.last_build }
...@@ -41,8 +41,8 @@ describe Ci::Commit do ...@@ -41,8 +41,8 @@ describe Ci::Commit do
@second = FactoryGirl.create :ci_build, commit: commit @second = FactoryGirl.create :ci_build, commit: commit
end end
it { should be_a(Ci::Build) } it { is_expected.to be_a(Ci::Build) }
it('returns with the most recently created build') { should eq(@second) } it('returns with the most recently created build') { is_expected.to eq(@second) }
end end
describe :retry do describe :retry do
...@@ -67,8 +67,8 @@ describe Ci::Commit do ...@@ -67,8 +67,8 @@ describe Ci::Commit do
email_recipients: '' email_recipients: ''
commit = FactoryGirl.create :ci_commit, project: project commit = FactoryGirl.create :ci_commit, project: project
expected = 'commit_pusher_email' expected = 'commit_pusher_email'
commit.stub(:push_data) { { user_email: expected } } allow(commit).to receive(:push_data) { { user_email: expected } }
commit.project_recipients.should == [expected] expect(commit.project_recipients).to eq([expected])
end end
it 'should return commit_pusher_email and additional recipients' do it 'should return commit_pusher_email and additional recipients' do
...@@ -77,8 +77,8 @@ describe Ci::Commit do ...@@ -77,8 +77,8 @@ describe Ci::Commit do
email_recipients: 'rec1 rec2' email_recipients: 'rec1 rec2'
commit = FactoryGirl.create :ci_commit, project: project commit = FactoryGirl.create :ci_commit, project: project
expected = 'commit_pusher_email' expected = 'commit_pusher_email'
commit.stub(:push_data) { { user_email: expected } } allow(commit).to receive(:push_data) { { user_email: expected } }
commit.project_recipients.should == ['rec1', 'rec2', expected] expect(commit.project_recipients).to eq(['rec1', 'rec2', expected])
end end
it 'should return recipients' do it 'should return recipients' do
...@@ -86,7 +86,7 @@ describe Ci::Commit do ...@@ -86,7 +86,7 @@ describe Ci::Commit do
email_add_pusher: false, email_add_pusher: false,
email_recipients: 'rec1 rec2' email_recipients: 'rec1 rec2'
commit = FactoryGirl.create :ci_commit, project: project commit = FactoryGirl.create :ci_commit, project: project
commit.project_recipients.should == ['rec1', 'rec2'] expect(commit.project_recipients).to eq(['rec1', 'rec2'])
end end
it 'should return unique recipients only' do it 'should return unique recipients only' do
...@@ -95,8 +95,8 @@ describe Ci::Commit do ...@@ -95,8 +95,8 @@ describe Ci::Commit do
email_recipients: 'rec1 rec1 rec2' email_recipients: 'rec1 rec1 rec2'
commit = FactoryGirl.create :ci_commit, project: project commit = FactoryGirl.create :ci_commit, project: project
expected = 'rec2' expected = 'rec2'
commit.stub(:push_data) { { user_email: expected } } allow(commit).to receive(:push_data) { { user_email: expected } }
commit.project_recipients.should == ['rec1', 'rec2'] expect(commit.project_recipients).to eq(['rec1', 'rec2'])
end end
end end
end end
...@@ -108,7 +108,7 @@ describe Ci::Commit do ...@@ -108,7 +108,7 @@ describe Ci::Commit do
commit.valid_commit_sha commit.valid_commit_sha
end end
it('commit errors should not be empty') { commit.errors.should_not be_empty } it('commit errors should not be empty') { expect(commit.errors).not_to be_empty }
end end
end end
...@@ -116,55 +116,59 @@ describe Ci::Commit do ...@@ -116,55 +116,59 @@ describe Ci::Commit do
subject { commit_with_project.compare? } subject { commit_with_project.compare? }
context 'if commit.before_sha are not nil' do context 'if commit.before_sha are not nil' do
it { should be_true } it { is_expected.to be_truthy }
end end
end end
describe :short_sha do describe :short_sha do
subject { commit.short_before_sha } subject { commit.short_before_sha }
it { should have(8).items } it 'has 8 items' do
it { commit.before_sha.should start_with(subject) } expect(subject.size).to eq(8)
end
it { expect(commit.before_sha).to start_with(subject) }
end end
describe :short_sha do describe :short_sha do
subject { commit.short_sha } subject { commit.short_sha }
it { should have(8).items } it 'has 8 items' do
it { commit.sha.should start_with(subject) } expect(subject.size).to eq(8)
end
it { expect(commit.sha).to start_with(subject) }
end end
describe :create_next_builds do describe :create_next_builds do
before do before do
commit.stub(:config_processor).and_return(config_processor) allow(commit).to receive(:config_processor).and_return(config_processor)
end end
it "creates builds for next type" do it "creates builds for next type" do
commit.create_builds.should be_true expect(commit.create_builds).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
commit.create_next_builds(nil).should be_true expect(commit.create_next_builds(nil)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 4 expect(commit.builds.size).to eq(4)
commit.create_next_builds(nil).should be_true expect(commit.create_next_builds(nil)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 5 expect(commit.builds.size).to eq(5)
commit.create_next_builds(nil).should be_false expect(commit.create_next_builds(nil)).to be_falsey
end end
end end
describe :create_builds do describe :create_builds do
before do before do
commit.stub(:config_processor).and_return(config_processor) allow(commit).to receive(:config_processor).and_return(config_processor)
end end
it 'creates builds' do it 'creates builds' do
commit.create_builds.should be_true expect(commit.create_builds).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
end end
context 'for build triggers' do context 'for build triggers' do
...@@ -172,29 +176,29 @@ describe Ci::Commit do ...@@ -172,29 +176,29 @@ describe Ci::Commit do
let(:trigger_request) { FactoryGirl.create :ci_trigger_request, commit: commit, trigger: trigger } let(:trigger_request) { FactoryGirl.create :ci_trigger_request, commit: commit, trigger: trigger }
it 'creates builds' do it 'creates builds' do
commit.create_builds(trigger_request).should be_true expect(commit.create_builds(trigger_request)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
end end
it 'rebuilds commit' do it 'rebuilds commit' do
commit.create_builds.should be_true expect(commit.create_builds).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
commit.create_builds(trigger_request).should be_true expect(commit.create_builds(trigger_request)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 4 expect(commit.builds.size).to eq(4)
end end
it 'creates next builds' do it 'creates next builds' do
commit.create_builds(trigger_request).should be_true expect(commit.create_builds(trigger_request)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
commit.create_next_builds(trigger_request).should be_true expect(commit.create_next_builds(trigger_request)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 4 expect(commit.builds.size).to eq(4)
end end
context 'for [ci skip]' do context 'for [ci skip]' do
...@@ -204,11 +208,11 @@ describe Ci::Commit do ...@@ -204,11 +208,11 @@ describe Ci::Commit do
end end
it 'rebuilds commit' do it 'rebuilds commit' do
commit.status.should == 'skipped' expect(commit.status).to eq('skipped')
commit.create_builds(trigger_request).should be_true expect(commit.create_builds(trigger_request)).to be_truthy
commit.builds.reload commit.builds.reload
commit.builds.size.should == 2 expect(commit.builds.size).to eq(2)
commit.status.should == 'pending' expect(commit.status).to eq('pending')
end end
end end
end end
...@@ -222,13 +226,13 @@ describe Ci::Commit do ...@@ -222,13 +226,13 @@ describe Ci::Commit do
build = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 60 build = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 60
build1 = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 120 build1 = FactoryGirl.create :ci_build, commit: commit, finished_at: Time.now - 120
commit.finished_at.to_i.should == build.finished_at.to_i expect(commit.finished_at.to_i).to eq(build.finished_at.to_i)
end end
it "returns nil if there is no finished build" do it "returns nil if there is no finished build" do
build = FactoryGirl.create :ci_not_started_build, commit: commit build = FactoryGirl.create :ci_not_started_build, commit: commit
commit.finished_at.should be_nil expect(commit.finished_at).to be_nil
end end
end end
...@@ -239,26 +243,26 @@ describe Ci::Commit do ...@@ -239,26 +243,26 @@ describe Ci::Commit do
it "calculates average when there are two builds with coverage" do it "calculates average when there are two builds with coverage" do
FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit
FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit
commit.coverage.should == "35.00" expect(commit.coverage).to eq("35.00")
end end
it "calculates average when there are two builds with coverage and one with nil" do it "calculates average when there are two builds with coverage and one with nil" do
FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit
FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit
FactoryGirl.create :ci_build, commit: commit FactoryGirl.create :ci_build, commit: commit
commit.coverage.should == "35.00" expect(commit.coverage).to eq("35.00")
end end
it "calculates average when there are two builds with coverage and one is retried" do it "calculates average when there are two builds with coverage and one is retried" do
FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit FactoryGirl.create :ci_build, name: "rspec", coverage: 30, commit: commit
FactoryGirl.create :ci_build, name: "rubocop", coverage: 30, commit: commit FactoryGirl.create :ci_build, name: "rubocop", coverage: 30, commit: commit
FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit FactoryGirl.create :ci_build, name: "rubocop", coverage: 40, commit: commit
commit.coverage.should == "35.00" expect(commit.coverage).to eq("35.00")
end end
it "calculates average when there is one build without coverage" do it "calculates average when there is one build without coverage" do
FactoryGirl.create :ci_build, commit: commit FactoryGirl.create :ci_build, commit: commit
commit.coverage.should be_nil expect(commit.coverage).to be_nil
end end
end end
end end
...@@ -16,7 +16,7 @@ require 'spec_helper' ...@@ -16,7 +16,7 @@ require 'spec_helper'
describe Ci::MailService do describe Ci::MailService do
describe "Associations" do describe "Associations" do
it { should belong_to :project } it { is_expected.to belong_to :project }
end end
describe "Validations" do describe "Validations" do
...@@ -36,7 +36,7 @@ describe Ci::MailService do ...@@ -36,7 +36,7 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
end end
...@@ -47,8 +47,8 @@ describe Ci::MailService do ...@@ -47,8 +47,8 @@ describe Ci::MailService do
end end
def should_email(email) def should_email(email)
Notify.should_receive(:build_fail_email).with(build.id, email) expect(Notify).to receive(:build_fail_email).with(build.id, email)
Notify.should_not_receive(:build_success_email).with(build.id, email) expect(Notify).not_to receive(:build_success_email).with(build.id, email)
end end
end end
...@@ -58,7 +58,7 @@ describe Ci::MailService do ...@@ -58,7 +58,7 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
end end
...@@ -69,8 +69,8 @@ describe Ci::MailService do ...@@ -69,8 +69,8 @@ describe Ci::MailService do
end end
def should_email(email) def should_email(email)
Notify.should_receive(:build_success_email).with(build.id, email) expect(Notify).to receive(:build_success_email).with(build.id, email)
Notify.should_not_receive(:build_fail_email).with(build.id, email) expect(Notify).not_to receive(:build_fail_email).with(build.id, email)
end end
end end
...@@ -85,7 +85,7 @@ describe Ci::MailService do ...@@ -85,7 +85,7 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
end end
...@@ -97,8 +97,8 @@ describe Ci::MailService do ...@@ -97,8 +97,8 @@ describe Ci::MailService do
end end
def should_email(email) def should_email(email)
Notify.should_receive(:build_success_email).with(build.id, email) expect(Notify).to receive(:build_success_email).with(build.id, email)
Notify.should_not_receive(:build_fail_email).with(build.id, email) expect(Notify).not_to receive(:build_fail_email).with(build.id, email)
end end
end end
...@@ -113,7 +113,7 @@ describe Ci::MailService do ...@@ -113,7 +113,7 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
end end
...@@ -125,8 +125,8 @@ describe Ci::MailService do ...@@ -125,8 +125,8 @@ describe Ci::MailService do
end end
def should_email(email) def should_email(email)
Notify.should_not_receive(:build_success_email).with(build.id, email) expect(Notify).not_to receive(:build_success_email).with(build.id, email)
Notify.should_not_receive(:build_fail_email).with(build.id, email) expect(Notify).not_to receive(:build_fail_email).with(build.id, email)
end end
end end
...@@ -141,14 +141,14 @@ describe Ci::MailService do ...@@ -141,14 +141,14 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
build build
end end
it do it do
mail.can_test?.should == true expect(mail.can_test?).to eq(true)
end end
end end
...@@ -163,7 +163,7 @@ describe Ci::MailService do ...@@ -163,7 +163,7 @@ describe Ci::MailService do
let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) }
before do before do
mail.stub( allow(mail).to receive_messages(
project: project project: project
) )
end end
...@@ -176,8 +176,8 @@ describe Ci::MailService do ...@@ -176,8 +176,8 @@ describe Ci::MailService do
end end
def should_email(email) def should_email(email)
Notify.should_not_receive(:build_success_email).with(build.id, email) expect(Notify).not_to receive(:build_success_email).with(build.id, email)
Notify.should_not_receive(:build_fail_email).with(build.id, email) expect(Notify).not_to receive(:build_fail_email).with(build.id, email)
end end
end end
end end
......
...@@ -9,21 +9,21 @@ describe Network do ...@@ -9,21 +9,21 @@ describe Network do
context 'on success' do context 'on success' do
before do before do
response = double response = double
response.stub(:code) { 200 } allow(response).to receive(:code) { 200 }
network.class.stub(:put) { response } allow(network.class).to receive(:put) { response }
end end
it { should be_true } it { is_expected.to be_truthy }
end end
context 'on failure' do context 'on failure' do
before do before do
response = double response = double
response.stub(:code) { 404 } allow(response).to receive(:code) { 404 }
network.class.stub(:put) { response } allow(network.class).to receive(:put) { response }
end end
it { should be_nil } it { is_expected.to be_nil }
end end
end end
...@@ -34,21 +34,21 @@ describe Network do ...@@ -34,21 +34,21 @@ describe Network do
context 'on success' do context 'on success' do
let(:parsed_response) { 'parsed' } let(:parsed_response) { 'parsed' }
before do before do
response.stub(:code) { 200 } allow(response).to receive(:code) { 200 }
response.stub(:parsed_response) { parsed_response } allow(response).to receive(:parsed_response) { parsed_response }
network.class.stub(:delete) { response } allow(network.class).to receive(:delete) { response }
end end
it { should equal(parsed_response) } it { is_expected.to equal(parsed_response) }
end end
context 'on failure' do context 'on failure' do
before do before do
response.stub(:code) { 404 } allow(response).to receive(:code) { 404 }
network.class.stub(:delete) { response } allow(network.class).to receive(:delete) { response }
end end
it { should be_nil } it { is_expected.to be_nil }
end end
end end
end end
...@@ -18,7 +18,7 @@ describe Ci::HipChatMessage do ...@@ -18,7 +18,7 @@ describe Ci::HipChatMessage do
build.update(status: "success") build.update(status: "success")
expect( subject.status_color ).to eq 'green' expect( subject.status_color ).to eq 'green'
expect( subject.notify? ).to be_false expect( subject.notify? ).to be_falsey
expect( subject.to_s ).to match(/Build '[^']+' #\d+/) expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./) expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
end end
...@@ -29,7 +29,7 @@ describe Ci::HipChatMessage do ...@@ -29,7 +29,7 @@ describe Ci::HipChatMessage do
build.update(status: "failed") build.update(status: "failed")
expect( subject.status_color ).to eq 'red' expect( subject.status_color ).to eq 'red'
expect( subject.notify? ).to be_true expect( subject.notify? ).to be_truthy
expect( subject.to_s ).to match(/Build '[^']+' #\d+/) expect( subject.to_s ).to match(/Build '[^']+' #\d+/)
expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./) expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
end end
...@@ -50,7 +50,7 @@ describe Ci::HipChatMessage do ...@@ -50,7 +50,7 @@ describe Ci::HipChatMessage do
commit.reload commit.reload
expect( subject.status_color ).to eq 'green' expect( subject.status_color ).to eq 'green'
expect( subject.notify? ).to be_false expect( subject.notify? ).to be_falsey
expect( subject.to_s ).to match(/Commit #\d+/) expect( subject.to_s ).to match(/Commit #\d+/)
expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./) expect( subject.to_s ).to match(/Successful in \d+ second\(s\)\./)
end end
...@@ -65,7 +65,7 @@ describe Ci::HipChatMessage do ...@@ -65,7 +65,7 @@ describe Ci::HipChatMessage do
second_build.update(status: "failed") second_build.update(status: "failed")
expect( subject.status_color ).to eq 'red' expect( subject.status_color ).to eq 'red'
expect( subject.notify? ).to be_true expect( subject.notify? ).to be_truthy
expect( subject.to_s ).to match(/Commit #\d+/) expect( subject.to_s ).to match(/Commit #\d+/)
expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./) expect( subject.to_s ).to match(/Failed in \d+ second\(s\)\./)
end end
......
...@@ -24,8 +24,8 @@ describe Ci::HipChatService do ...@@ -24,8 +24,8 @@ describe Ci::HipChatService do
subject.active = true subject.active = true
end end
it { should validate_presence_of :hipchat_room } it { is_expected.to validate_presence_of :hipchat_room }
it { should validate_presence_of :hipchat_token } it { is_expected.to validate_presence_of :hipchat_token }
end end
end end
...@@ -39,7 +39,7 @@ describe Ci::HipChatService do ...@@ -39,7 +39,7 @@ describe Ci::HipChatService do
let(:api_url) { 'https://api.hipchat.com/v2/room/123/notification?auth_token=a1b2c3d4e5f6' } let(:api_url) { 'https://api.hipchat.com/v2/room/123/notification?auth_token=a1b2c3d4e5f6' }
before do before do
service.stub( allow(service).to receive_messages(
project: project, project: project,
project_id: project.id, project_id: project.id,
notify_only_broken_builds: false, notify_only_broken_builds: false,
......
...@@ -19,11 +19,11 @@ describe Ci::SlackMessage do ...@@ -19,11 +19,11 @@ describe Ci::SlackMessage do
it 'returns a message with succeeded build' do it 'returns a message with succeeded build' do
build.update(status: "success") build.update(status: "success")
subject.color.should == color expect(subject.color).to eq(color)
subject.fallback.should include('Build') expect(subject.fallback).to include('Build')
subject.fallback.should include("\##{build.id}") expect(subject.fallback).to include("\##{build.id}")
subject.fallback.should include('succeeded') expect(subject.fallback).to include('succeeded')
subject.attachments.first[:fields].should be_empty expect(subject.attachments.first[:fields]).to be_empty
end end
end end
...@@ -33,11 +33,11 @@ describe Ci::SlackMessage do ...@@ -33,11 +33,11 @@ describe Ci::SlackMessage do
it 'returns a message with failed build' do it 'returns a message with failed build' do
build.update(status: "failed") build.update(status: "failed")
subject.color.should == color expect(subject.color).to eq(color)
subject.fallback.should include('Build') expect(subject.fallback).to include('Build')
subject.fallback.should include("\##{build.id}") expect(subject.fallback).to include("\##{build.id}")
subject.fallback.should include('failed') expect(subject.fallback).to include('failed')
subject.attachments.first[:fields].should be_empty expect(subject.attachments.first[:fields]).to be_empty
end end
end end
end end
...@@ -53,11 +53,11 @@ describe Ci::SlackMessage do ...@@ -53,11 +53,11 @@ describe Ci::SlackMessage do
commit.builds.update_all(status: "success") commit.builds.update_all(status: "success")
commit.reload commit.reload
subject.color.should == color expect(subject.color).to eq(color)
subject.fallback.should include('Commit') expect(subject.fallback).to include('Commit')
subject.fallback.should include("\##{commit.id}") expect(subject.fallback).to include("\##{commit.id}")
subject.fallback.should include('succeeded') expect(subject.fallback).to include('succeeded')
subject.attachments.first[:fields].should be_empty expect(subject.attachments.first[:fields]).to be_empty
end end
end end
...@@ -71,13 +71,13 @@ describe Ci::SlackMessage do ...@@ -71,13 +71,13 @@ describe Ci::SlackMessage do
first_build.update(status: "success") first_build.update(status: "success")
second_build.update(status: "failed") second_build.update(status: "failed")
subject.color.should == color expect(subject.color).to eq(color)
subject.fallback.should include('Commit') expect(subject.fallback).to include('Commit')
subject.fallback.should include("\##{commit.id}") expect(subject.fallback).to include("\##{commit.id}")
subject.fallback.should include('failed') expect(subject.fallback).to include('failed')
subject.attachments.first[:fields].size.should == 1 expect(subject.attachments.first[:fields].size).to eq(1)
subject.attachments.first[:fields].first[:title].should == second_build.name expect(subject.attachments.first[:fields].first[:title]).to eq(second_build.name)
subject.attachments.first[:fields].first[:value].should include("\##{second_build.id}") expect(subject.attachments.first[:fields].first[:value]).to include("\##{second_build.id}")
end end
end end
end end
......
...@@ -16,7 +16,7 @@ require 'spec_helper' ...@@ -16,7 +16,7 @@ require 'spec_helper'
describe Ci::SlackService do describe Ci::SlackService do
describe "Associations" do describe "Associations" do
it { should belong_to :project } it { is_expected.to belong_to :project }
end end
describe "Validations" do describe "Validations" do
...@@ -25,7 +25,7 @@ describe Ci::SlackService do ...@@ -25,7 +25,7 @@ describe Ci::SlackService do
subject.active = true subject.active = true
end end
it { should validate_presence_of :webhook } it { is_expected.to validate_presence_of :webhook }
end end
end end
...@@ -38,7 +38,7 @@ describe Ci::SlackService do ...@@ -38,7 +38,7 @@ describe Ci::SlackService do
let(:notify_only_broken_builds) { false } let(:notify_only_broken_builds) { false }
before do before do
slack.stub( allow(slack).to receive_messages(
project: project, project: project,
project_id: project.id, project_id: project.id,
webhook: webhook_url, webhook: webhook_url,
...@@ -52,7 +52,7 @@ describe Ci::SlackService do ...@@ -52,7 +52,7 @@ describe Ci::SlackService do
slack.execute(build) slack.execute(build)
SlackNotifierWorker.drain SlackNotifierWorker.drain
WebMock.should have_requested(:post, webhook_url).once expect(WebMock).to have_requested(:post, webhook_url).once
end end
end end
end end
...@@ -30,21 +30,21 @@ require 'spec_helper' ...@@ -30,21 +30,21 @@ require 'spec_helper'
describe Project do describe Project do
subject { FactoryGirl.build :ci_project } subject { FactoryGirl.build :ci_project }
it { should have_many(:commits) } it { is_expected.to have_many(:commits) }
it { should validate_presence_of :name } it { is_expected.to validate_presence_of :name }
it { should validate_presence_of :timeout } it { is_expected.to validate_presence_of :timeout }
it { should validate_presence_of :default_ref } it { is_expected.to validate_presence_of :default_ref }
describe 'before_validation' do describe 'before_validation' do
it 'should set an random token if none provided' do it 'should set an random token if none provided' do
project = FactoryGirl.create :ci_project_without_token project = FactoryGirl.create :ci_project_without_token
project.token.should_not == "" expect(project.token).not_to eq("")
end end
it 'should not set an random toke if one provided' do it 'should not set an random toke if one provided' do
project = FactoryGirl.create :ci_project project = FactoryGirl.create :ci_project
project.token.should == "iPWx6WM4lhHNedGfBpPJNP" expect(project.token).to eq("iPWx6WM4lhHNedGfBpPJNP")
end end
end end
...@@ -57,7 +57,7 @@ describe Project do ...@@ -57,7 +57,7 @@ describe Project do
FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: newest_project FactoryGirl.create :ci_commit, committed_at: 1.hour.ago, project: newest_project
FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: oldest_project FactoryGirl.create :ci_commit, committed_at: 2.hour.ago, project: oldest_project
Project.ordered_by_last_commit_date.should == [newest_project, oldest_project, project_without_commits] expect(Project.ordered_by_last_commit_date).to eq([newest_project, oldest_project, project_without_commits])
end end
end end
...@@ -70,56 +70,56 @@ describe Project do ...@@ -70,56 +70,56 @@ describe Project do
FactoryGirl.create(:ci_build, commit: commit) FactoryGirl.create(:ci_build, commit: commit)
end end
it { project.status.should == 'pending' } it { expect(project.status).to eq('pending') }
it { project.last_commit.should be_kind_of(Commit) } it { expect(project.last_commit).to be_kind_of(Commit) }
it { project.human_status.should == 'pending' } it { expect(project.human_status).to eq('pending') }
end end
end end
describe '#email_notification?' do describe '#email_notification?' do
it do it do
project = FactoryGirl.create :ci_project, email_add_pusher: true project = FactoryGirl.create :ci_project, email_add_pusher: true
project.email_notification?.should == true expect(project.email_notification?).to eq(true)
end end
it do it do
project = FactoryGirl.create :ci_project, email_add_pusher: false, email_recipients: 'test tesft' project = FactoryGirl.create :ci_project, email_add_pusher: false, email_recipients: 'test tesft'
project.email_notification?.should == true expect(project.email_notification?).to eq(true)
end end
it do it do
project = FactoryGirl.create :ci_project, email_add_pusher: false, email_recipients: '' project = FactoryGirl.create :ci_project, email_add_pusher: false, email_recipients: ''
project.email_notification?.should == false expect(project.email_notification?).to eq(false)
end end
end end
describe '#broken_or_success?' do describe '#broken_or_success?' do
it { it {
project = FactoryGirl.create :ci_project, email_add_pusher: true project = FactoryGirl.create :ci_project, email_add_pusher: true
project.stub(:broken?).and_return(true) allow(project).to receive(:broken?).and_return(true)
project.stub(:success?).and_return(true) allow(project).to receive(:success?).and_return(true)
project.broken_or_success?.should == true expect(project.broken_or_success?).to eq(true)
} }
it { it {
project = FactoryGirl.create :ci_project, email_add_pusher: true project = FactoryGirl.create :ci_project, email_add_pusher: true
project.stub(:broken?).and_return(true) allow(project).to receive(:broken?).and_return(true)
project.stub(:success?).and_return(false) allow(project).to receive(:success?).and_return(false)
project.broken_or_success?.should == true expect(project.broken_or_success?).to eq(true)
} }
it { it {
project = FactoryGirl.create :ci_project, email_add_pusher: true project = FactoryGirl.create :ci_project, email_add_pusher: true
project.stub(:broken?).and_return(false) allow(project).to receive(:broken?).and_return(false)
project.stub(:success?).and_return(true) allow(project).to receive(:success?).and_return(true)
project.broken_or_success?.should == true expect(project.broken_or_success?).to eq(true)
} }
it { it {
project = FactoryGirl.create :ci_project, email_add_pusher: true project = FactoryGirl.create :ci_project, email_add_pusher: true
project.stub(:broken?).and_return(false) allow(project).to receive(:broken?).and_return(false)
project.stub(:success?).and_return(false) allow(project).to receive(:success?).and_return(false)
project.broken_or_success?.should == false expect(project.broken_or_success?).to eq(false)
} }
end end
...@@ -128,14 +128,14 @@ describe Project do ...@@ -128,14 +128,14 @@ describe Project do
let(:parsed_project) { Project.parse(project_dump) } let(:parsed_project) { Project.parse(project_dump) }
it { parsed_project.should be_valid } it { expect(parsed_project).to be_valid }
it { parsed_project.should be_kind_of(Project) } it { expect(parsed_project).to be_kind_of(Project) }
it { parsed_project.name.should eq("GitLab / api.gitlab.org") } it { expect(parsed_project.name).to eq("GitLab / api.gitlab.org") }
it { parsed_project.gitlab_id.should eq(189) } it { expect(parsed_project.gitlab_id).to eq(189) }
it { parsed_project.gitlab_url.should eq("http://demo.gitlab.com/gitlab/api-gitlab-org") } it { expect(parsed_project.gitlab_url).to eq("http://demo.gitlab.com/gitlab/api-gitlab-org") }
it "parses plain hash" do it "parses plain hash" do
Project.parse(project_dump).name.should eq("GitLab / api.gitlab.org") expect(Project.parse(project_dump).name).to eq("GitLab / api.gitlab.org")
end end
end end
...@@ -143,43 +143,43 @@ describe Project do ...@@ -143,43 +143,43 @@ describe Project do
let(:project) { FactoryGirl.create :ci_project } let(:project) { FactoryGirl.create :ci_project }
subject { project.repo_url_with_auth } subject { project.repo_url_with_auth }
it { should be_a(String) } it { is_expected.to be_a(String) }
it { should end_with(".git") } it { is_expected.to end_with(".git") }
it { should start_with(project.gitlab_url[0..6]) } it { is_expected.to start_with(project.gitlab_url[0..6]) }
it { should include(project.token) } it { is_expected.to include(project.token) }
it { should include('gitlab-ci-token') } it { is_expected.to include('gitlab-ci-token') }
it { should include(project.gitlab_url[7..-1]) } it { is_expected.to include(project.gitlab_url[7..-1]) }
end end
describe :search do describe :search do
let!(:project) { FactoryGirl.create(:ci_project, name: "foo") } let!(:project) { FactoryGirl.create(:ci_project, name: "foo") }
it { Project.search('fo').should include(project) } it { expect(Project.search('fo')).to include(project) }
it { Project.search('bar').should be_empty } it { expect(Project.search('bar')).to be_empty }
end end
describe :any_runners do describe :any_runners do
it "there are no runners available" do it "there are no runners available" do
project = FactoryGirl.create(:ci_project) project = FactoryGirl.create(:ci_project)
project.any_runners?.should be_false expect(project.any_runners?).to be_falsey
end end
it "there is a specific runner" do it "there is a specific runner" do
project = FactoryGirl.create(:ci_project) project = FactoryGirl.create(:ci_project)
project.runners << FactoryGirl.create(:ci_specific_runner) project.runners << FactoryGirl.create(:ci_specific_runner)
project.any_runners?.should be_true expect(project.any_runners?).to be_truthy
end end
it "there is a shared runner" do it "there is a shared runner" do
project = FactoryGirl.create(:ci_project, shared_runners_enabled: true) project = FactoryGirl.create(:ci_project, shared_runners_enabled: true)
FactoryGirl.create(:ci_shared_runner) FactoryGirl.create(:ci_shared_runner)
project.any_runners?.should be_true expect(project.any_runners?).to be_truthy
end end
it "there is a shared runner, but they are prohibited to use" do it "there is a shared runner, but they are prohibited to use" do
project = FactoryGirl.create(:ci_project) project = FactoryGirl.create(:ci_project)
FactoryGirl.create(:ci_shared_runner) FactoryGirl.create(:ci_shared_runner)
project.any_runners?.should be_false expect(project.any_runners?).to be_falsey
end end
end end
end end
...@@ -43,9 +43,9 @@ describe Ci::Runner do ...@@ -43,9 +43,9 @@ describe Ci::Runner do
before { shared_runner.assign_to(project) } before { shared_runner.assign_to(project) }
it { shared_runner.should be_specific } it { expect(shared_runner).to be_specific }
it { shared_runner.projects.should == [project] } it { expect(shared_runner.projects).to eq([project]) }
it { shared_runner.only_for?(project).should be_true } it { expect(shared_runner.only_for?(project)).to be_truthy }
end end
describe "belongs_to_one_project?" do describe "belongs_to_one_project?" do
...@@ -56,7 +56,7 @@ describe Ci::Runner do ...@@ -56,7 +56,7 @@ describe Ci::Runner do
project.runners << runner project.runners << runner
project1.runners << runner project1.runners << runner
runner.belongs_to_one_project?.should be_false expect(runner.belongs_to_one_project?).to be_falsey
end end
it "returns true" do it "returns true" do
...@@ -64,7 +64,7 @@ describe Ci::Runner do ...@@ -64,7 +64,7 @@ describe Ci::Runner do
project = FactoryGirl.create(:ci_project) project = FactoryGirl.create(:ci_project)
project.runners << runner project.runners << runner
runner.belongs_to_one_project?.should be_true expect(runner.belongs_to_one_project?).to be_truthy
end end
end end
end end
...@@ -17,7 +17,7 @@ require 'spec_helper' ...@@ -17,7 +17,7 @@ require 'spec_helper'
describe Ci::Service do describe Ci::Service do
describe "Associations" do describe "Associations" do
it { should belong_to :project } it { is_expected.to belong_to :project }
end end
describe "Mass assignment" do describe "Mass assignment" do
...@@ -34,7 +34,7 @@ describe Ci::Service do ...@@ -34,7 +34,7 @@ describe Ci::Service do
let (:build) { FactoryGirl.create :ci_build, commit: commit } let (:build) { FactoryGirl.create :ci_build, commit: commit }
before do before do
@service.stub( allow(@service).to receive_messages(
project: project project: project
) )
build build
...@@ -42,7 +42,7 @@ describe Ci::Service do ...@@ -42,7 +42,7 @@ describe Ci::Service do
end end
describe :can_test do describe :can_test do
it { @testable.should == true } it { expect(@testable).to eq(true) }
end end
end end
end end
......
...@@ -6,12 +6,12 @@ describe Ci::Trigger do ...@@ -6,12 +6,12 @@ describe Ci::Trigger do
describe 'before_validation' do describe 'before_validation' do
it 'should set an random token if none provided' do it 'should set an random token if none provided' do
trigger = FactoryGirl.create :ci_trigger_without_token, project: project trigger = FactoryGirl.create :ci_trigger_without_token, project: project
trigger.token.should_not be_nil expect(trigger.token).not_to be_nil
end end
it 'should not set an random token if one provided' do it 'should not set an random token if one provided' do
trigger = FactoryGirl.create :ci_trigger, project: project trigger = FactoryGirl.create :ci_trigger, project: project
trigger.token.should == 'token' expect(trigger.token).to eq('token')
end end
end end
end end
...@@ -10,19 +10,19 @@ describe Ci::User do ...@@ -10,19 +10,19 @@ describe Ci::User do
FactoryGirl.create :ci_project, gitlab_id: 2 FactoryGirl.create :ci_project, gitlab_id: 2
gitlab_project = OpenStruct.new({id: 1}) gitlab_project = OpenStruct.new({id: 1})
gitlab_project1 = OpenStruct.new({id: 2}) gitlab_project1 = OpenStruct.new({id: 2})
User.any_instance.stub(:gitlab_projects).and_return([gitlab_project, gitlab_project1]) allow_any_instance_of(User).to receive(:gitlab_projects).and_return([gitlab_project, gitlab_project1])
end end
it "returns projects" do it "returns projects" do
User.any_instance.stub(:can_manage_project?).and_return(true) allow_any_instance_of(User).to receive(:can_manage_project?).and_return(true)
user.authorized_projects.count.should == 2 expect(user.authorized_projects.count).to eq(2)
end end
it "empty list if user miss manage permission" do it "empty list if user miss manage permission" do
User.any_instance.stub(:can_manage_project?).and_return(false) allow_any_instance_of(User).to receive(:can_manage_project?).and_return(false)
user.authorized_projects.count.should == 0 expect(user.authorized_projects.count).to eq(0)
end end
end end
...@@ -32,8 +32,8 @@ describe Ci::User do ...@@ -32,8 +32,8 @@ describe Ci::User do
project1 = FactoryGirl.create :ci_project, gitlab_id: 2 project1 = FactoryGirl.create :ci_project, gitlab_id: 2
gitlab_project = OpenStruct.new({id: 1}) gitlab_project = OpenStruct.new({id: 1})
gitlab_project1 = OpenStruct.new({id: 2}) gitlab_project1 = OpenStruct.new({id: 2})
User.any_instance.stub(:gitlab_projects).and_return([gitlab_project, gitlab_project1]) allow_any_instance_of(User).to receive(:gitlab_projects).and_return([gitlab_project, gitlab_project1])
User.any_instance.stub(:can_manage_project?).and_return(true) allow_any_instance_of(User).to receive(:can_manage_project?).and_return(true)
user = User.new({}) user = User.new({})
runner = FactoryGirl.create :ci_specific_runner runner = FactoryGirl.create :ci_specific_runner
...@@ -43,8 +43,8 @@ describe Ci::User do ...@@ -43,8 +43,8 @@ describe Ci::User do
project.runners << runner project.runners << runner
project1.runners << runner1 project1.runners << runner1
user.authorized_runners.should include(runner, runner1) expect(user.authorized_runners).to include(runner, runner1)
user.authorized_runners.should_not include(runner2) expect(user.authorized_runners).not_to include(runner2)
end end
end end
end end
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
require 'spec_helper' require 'spec_helper'
describe Ci::Variable do describe Ci::Variable do
subject { Variable.new } subject { Ci::Variable.new }
let(:secret_value) { 'secret' } let(:secret_value) { 'secret' }
...@@ -24,15 +24,15 @@ describe Ci::Variable do ...@@ -24,15 +24,15 @@ describe Ci::Variable do
describe :value do describe :value do
it 'stores the encrypted value' do it 'stores the encrypted value' do
subject.encrypted_value.should_not be_nil expect(subject.encrypted_value).not_to be_nil
end end
it 'stores an iv for value' do it 'stores an iv for value' do
subject.encrypted_value_iv.should_not be_nil expect(subject.encrypted_value_iv).not_to be_nil
end end
it 'stores a salt for value' do it 'stores a salt for value' do
subject.encrypted_value_salt.should_not be_nil expect(subject.encrypted_value_salt).not_to be_nil
end end
it 'fails to decrypt if iv is incorrect' do it 'fails to decrypt if iv is incorrect' do
......
...@@ -13,22 +13,22 @@ require 'spec_helper' ...@@ -13,22 +13,22 @@ require 'spec_helper'
describe Ci::WebHook do describe Ci::WebHook do
describe "Associations" do describe "Associations" do
it { should belong_to :project } it { is_expected.to belong_to :project }
end end
describe "Validations" do describe "Validations" do
it { should validate_presence_of(:url) } it { is_expected.to validate_presence_of(:url) }
context "url format" do context "url format" do
it { should allow_value("http://example.com").for(:url) } it { is_expected.to allow_value("http://example.com").for(:url) }
it { should allow_value("https://excample.com").for(:url) } it { is_expected.to allow_value("https://excample.com").for(:url) }
it { should allow_value("http://test.com/api").for(:url) } it { is_expected.to allow_value("http://test.com/api").for(:url) }
it { should allow_value("http://test.com/api?key=abc").for(:url) } it { is_expected.to allow_value("http://test.com/api?key=abc").for(:url) }
it { should allow_value("http://test.com/api?key=abc&type=def").for(:url) } it { is_expected.to allow_value("http://test.com/api?key=abc&type=def").for(:url) }
it { should_not allow_value("example.com").for(:url) } it { is_expected.not_to allow_value("example.com").for(:url) }
it { should_not allow_value("ftp://example.com").for(:url) } it { is_expected.not_to allow_value("ftp://example.com").for(:url) }
it { should_not allow_value("herp-and-derp").for(:url) } it { is_expected.not_to allow_value("herp-and-derp").for(:url) }
end end
end end
...@@ -43,22 +43,22 @@ describe Ci::WebHook do ...@@ -43,22 +43,22 @@ describe Ci::WebHook do
it "POSTs to the web hook URL" do it "POSTs to the web hook URL" do
@web_hook.execute(@data) @web_hook.execute(@data)
WebMock.should have_requested(:post, @web_hook.url).once expect(WebMock).to have_requested(:post, @web_hook.url).once
end end
it "POSTs the data as JSON" do it "POSTs the data as JSON" do
json = @data.to_json json = @data.to_json
@web_hook.execute(@data) @web_hook.execute(@data)
WebMock.should have_requested(:post, @web_hook.url).with(body: json).once expect(WebMock).to have_requested(:post, @web_hook.url).with(body: json).once
end end
it "catches exceptions" do it "catches exceptions" do
WebHook.should_receive(:post).and_raise("Some HTTP Post error") expect(WebHook).to receive(:post).and_raise("Some HTTP Post error")
lambda { expect {
@web_hook.execute(@data) @web_hook.execute(@data)
}.should raise_error }.to raise_error
end end
end end
end end
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