50 lines
1.6 KiB
Ruby
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
|