require File.expand_path('../spec_helper', __FILE__)
module Danger
describe Danger::DangerJenkins do
it 'should be a plugin' do
dangerfile = jenkins_dangerfile
expect(Danger::DangerJenkins.new(dangerfile)).to be_a Danger::Plugin
end
#
# You should test your custom attributes and methods here
#
describe 'with Dangerfile' do
before do
@dangerfile = jenkins_dangerfile
@jenkins = @dangerfile.jenkins
end
it 'raise if not Jenkins CI' do
expect { travis_dangerfile }.to raise_error(RuntimeError)
end
it "raise if can't determine current build" do
ENV.delete 'BUILD_URL'
expect { travis_dangerfile }.to raise_error(RuntimeError)
end
it 'queries current build on Jenkins' do
expect(@jenkins.build.id).to eq('2')
expect(@jenkins.build.number).to eq(2)
expect(@jenkins.build.displayName).to eq('#2')
expect(@jenkins.build.fullDisplayName).to eq('DemoJob #2')
expect(@jenkins.build.nextBuild.number).to eq(3)
expect(@jenkins.build.nextBuild.url).to eq('http://jenkins.ci/job/DemoJob/3/')
expect(@jenkins.build.previousBuild.number).to eq(1)
expect(@jenkins.build.previousBuild.url).to eq('http://jenkins.ci/job/DemoJob/1/')
expect(@jenkins.build.result).to eq('SUCCESS')
artifacts = ['report.html', 'App.ipa']
expect(@jenkins.build.artifacts.map(&:displayPath)).to eq(artifacts)
end
it 'prints artifacts' do
expected = <<-EOF
### Jenkins artifacts:
* output/report.html
* output/App.ipa
EOF
@jenkins.print_artifacts
markdowns = @dangerfile.status_report[:markdowns].map(&:message)
expect(markdowns).to eq([expected])
end
it 'prints console output' do
@jenkins.print_console_output
markdowns = @dangerfile.status_report[:markdowns].map(&:message)
expected = [
"### Jenkins console output:\n\n",
'',
'Details
',
'console output
',
" "
].join
expect(markdowns).to eq([expected])
end
end
end
end