docbrown/spec/lib/release_phase_notifier_spec.rb

34 lines
1.2 KiB
Ruby

require "rails_helper"
RSpec.describe ReleasePhaseNotifier, type: :lib do
describe ".ping_slack" do
before do
allow(ApplicationConfig).to receive(:[]).with("SLACK_WEBHOOK_URL").and_return("url")
allow(ApplicationConfig).to receive(:[]).with("SLACK_DEPLOY_CHANNEL").and_return("channel")
end
it "sends a failure message to slack" do
mock_slack = Slack::Notifier.new("url")
ENV["FAILED_COMMAND"] = "rake db:migrate"
failure_message = "Release Phase Failed: #{ENV['FAILED_COMMAND']}"
allow(Slack::Notifier).to receive(:new) { mock_slack }
allow(mock_slack).to receive(:ping)
described_class.ping_slack
expect(mock_slack).to have_received(:ping).with(failure_message)
end
it "bails when config variables are missing" do
allow(ApplicationConfig).to receive(:[]).with("SLACK_WEBHOOK_URL").and_return("")
allow(ApplicationConfig).to receive(:[]).with("SLACK_DEPLOY_CHANNEL").and_return("")
expect { described_class.ping_slack }.not_to raise_error
end
it "rescues any Slack API Errors" do
allow(Slack::Notifier).to receive(:new).and_raise(Slack::Notifier::APIError.new)
expect { described_class.ping_slack }.not_to raise_error
end
end
end