spec/lib/release_tools/slack/merge_train_notification_spec.rb (44 lines of code) (raw):
# frozen_string_literal: true
require 'spec_helper'
describe ReleaseTools::Slack::MergeTrainNotification do
include SlackWebhookHelpers
let(:webhook_url) { 'https://slack.example.com/' }
describe '.webhook_url' do
it 'is required' do
ClimateControl.modify(AUTO_DEPLOY_NOTIFICATION_URL: nil) do
expect { described_class.webhook_url }.to raise_error(KeyError)
end
end
it 'returns ENV value when set' do
ClimateControl.modify(AUTO_DEPLOY_NOTIFICATION_URL: webhook_url) do
expect(described_class.webhook_url).to eq(webhook_url)
end
end
end
describe '.toggled' do
around do |ex|
ClimateControl.modify(AUTO_DEPLOY_NOTIFICATION_URL: webhook_url) do
ex.run
end
end
it 'posts a message when the schedule is toggled on' do
schedule = double(active: true, description: 'My task')
expect(described_class).to receive(:fire_hook) do |args|
expect(args[:text]).to eq('Merge train toggled')
expect(args[:blocks][0][:text][:text]).to eq(
":train: The *My task* merge train task has been activated due to a branch divergence."
)
end
described_class.toggled(schedule)
end
it 'posts a message when the schedule is toggled off' do
schedule = double(active: false, description: 'My task')
expect(described_class).to receive(:fire_hook) do |args|
expect(args[:text]).to eq('Merge train toggled')
expect(args[:blocks][0][:text][:text]).to eq(
":train: The *My task* merge train task has been deactivated because it's no longer necessary."
)
end
described_class.toggled(schedule)
end
end
end