spec/tasks_spec.rb in slackistrano-0.1.4 vs spec/tasks_spec.rb in slackistrano-0.1.5
- old
+ new
@@ -21,12 +21,11 @@
set :slack_run_failed, ->{ true }
expect(Slackistrano).to receive :post
Rake::Task['deploy:failed'].execute
end
- %w[starting finished failed].each do |stage|
-
+ shared_examples_for "slack notification" do |stage, color = nil|
it "posts to slack on slack:deploy:#{stage}" do
set "slack_run_#{stage}".to_sym, ->{ true }
expect(Slackistrano).to receive :post
Rake::Task["slack:deploy:#{stage}"].execute
end
@@ -36,31 +35,46 @@
expect(Slackistrano).not_to receive :post
Rake::Task["slack:deploy:#{stage}"].execute
end
it "calls Slackistrano.post with all the right arguments on slack:deploy:#{stage}" do
- set "slack_run_#{stage}".to_sym, ->{ true }
+ set :"slack_run_#{stage}", ->{ true }
set :slack_team, ->{ 'team' }
set :slack_token, ->{ 'token' }
set :slack_webhook, ->{ 'webhook' }
set :slack_channel, ->{ 'channel' }
set :slack_icon_url, ->{ 'http://icon.url' }
set :slack_icon_emoji, ->{ ':emoji:' }
- set "slack_msg_#{stage}".to_sym, ->{ 'text message' }
+ set :"slack_msg_#{stage}", ->{ 'text message' }
+
+ attachment = {text: 'text message'}
+ attachment[:color] = color unless color.nil?
+
expect(Slackistrano).to receive(:post).with(
team: 'team',
token: 'token',
webhook: 'webhook',
via_slackbot: false,
payload: {
channel: 'channel',
username: 'Slackistrano',
icon_url: 'http://icon.url',
icon_emoji: ':emoji:',
- text: 'text message'
+ attachments: [attachment]
}
)
Rake::Task["slack:deploy:#{stage}"].execute
end
- end # of stage loop
+ end
+ describe 'build is starting' do
+ it_should_behave_like "slack notification", :starting
+ end
+
+ describe 'build has finished' do
+ it_should_behave_like "slack notification", :finished, 'good'
+ end
+
+ describe 'build has failed' do
+ it_should_behave_like "slack notification", :failed, 'danger'
+ end
end