docbrown/spec/services/webhook/dispatch_event_spec.rb

34 lines
1.5 KiB
Ruby

require "rails_helper"
RSpec.describe Webhook::DispatchEvent, type: :service do
let!(:user) { create(:user) }
let!(:article) { create(:article, user: user) }
it "does nothing if there are no corresponding endpoints" do
create(:webhook_endpoint, events: %w[article_created], user: user)
sidekiq_assert_no_enqueued_jobs(only: Webhook::DispatchEventWorker) do
described_class.call("article_destroyed", article)
end
end
it "schedules jobs" do
create(:webhook_endpoint, events: %w[article_created], user: user,
target_url: "https://create-webhooks.example.com/accept")
create(:webhook_endpoint, events: %w[article_created article_updated article_destroyed], user: user,
target_url: "https://all-webhooks.example.com/accept")
create(:webhook_endpoint, events: %w[article_destroyed], user: user,
target_url: "https://destroy-webhooks.example.com/accept")
sidekiq_assert_enqueued_jobs(2, only: Webhook::DispatchEventWorker) do
described_class.call("article_created", article)
end
end
it "doesn't schedule jobs if the endpoints belong to another user" do
user2 = create(:user)
create(:webhook_endpoint, events: %w[article_created], user: user2,
target_url: "https://create-webhooks.example.com/accept")
sidekiq_assert_no_enqueued_jobs(only: Webhook::DispatchEventWorker) do
described_class.call("article_created", article)
end
end
end