docbrown/spec/services/ping_admins_spec.rb
2019-10-03 11:18:53 -04:00

50 lines
1.6 KiB
Ruby

require "rails_helper"
RSpec.describe PingAdmins do
let(:user) { build_stubbed(:user) }
describe "#call" do
subject(:ping_admin_call) { described_class.call(user) }
before { allow(SlackBot).to receive(:ping) }
context "when user isn't nil" do
let(:action) { "unknown" }
let(:message_expected) { "Rate limit exceeded (#{action}). https://dev.to#{user.path}" }
it "calls SlackBot.ping" do
ping_admin_call
expect(SlackBot).to have_received(:ping).with(message_expected,
channel: "abuse-reports",
username: "rate_limit",
icon_emoji: ":hand:")
end
end
context "when user is nil" do
let(:user) { nil }
it "doesnt call SlackBot.ping" do
expect(ping_admin_call).to be_nil
expect(SlackBot).not_to have_received(:ping)
end
end
context "when receive action" do
subject(:ping_admin_call) { described_class.call(user, action) }
let(:action) { "any-action" }
let(:message_expected) { "Rate limit exceeded (#{action}). https://dev.to#{user.path}" }
it "calls SlackBot.ping" do
ping_admin_call
expect(SlackBot).to have_received(:ping).with(message_expected,
channel: "abuse-reports",
username: "rate_limit",
icon_emoji: ":hand:")
end
end
end
end