Files
openfoodnetwork/spec/lib/stripe/webhook_handler_spec.rb
Maikel Linke dcb6f4676d Remove all unnecessary spec_helper require statements
The `.rspec` file is doing this for us.
2026-01-21 12:35:34 +11:00

92 lines
2.8 KiB
Ruby

# frozen_string_literal: true
require 'stripe/webhook_handler'
module Stripe
RSpec.describe WebhookHandler do
let(:event) { double(:event, type: 'some.event') }
let(:handler) { WebhookHandler.new(event) }
describe "event_mappings" do
it { expect(handler.__send__(:event_mappings)).to be_a Hash }
end
describe "known_event?" do
context "when event mappings know about the event type" do
before do
allow(handler).to receive(:event_mappings) { { 'some.event' => :something } }
end
it { expect(handler.__send__(:known_event?)).to be true }
end
context "when event mappings do not know about the event type" do
before do
allow(handler).to receive(:event_mappings) { { 'some.other.event' => :something } }
end
it { expect(handler.__send__(:known_event?)).to be false }
end
end
describe "handle" do
context "when the event is known" do
before do
allow(handler).to receive(:event_mappings) { { 'some.event' => :some_method } }
end
it "calls the handler method, and returns the result" do
expect(handler).to receive(:some_method) { :result }
expect(handler.handle).to eq :result
end
end
context "when the event is unknown" do
before do
allow(handler).to receive(:event_mappings) { { 'some.other.event' => :some_method } }
end
it "does not call the handler method, and returns :unknown" do
expect(handler).not_to receive(:some_method)
expect(handler.handle).to be :unknown
end
end
end
describe "deauthorize" do
context "when the event has no 'account' attribute" do
it "does destroy stripe accounts, returns :ignored" do
expect(handler).not_to receive(:destroy_stripe_accounts_linked_to)
expect(handler.__send__(:deauthorize)).to be :ignored
end
end
context "when the event has an 'account' attribute" do
before do
allow(event).to receive(:account) { 'some.account' }
end
context "when some stripe accounts are destroyed" do
before do
allow(handler).to receive(:destroy_stripe_accounts_linked_to).with('some.account') {
[double(:destroyed_stripe_account)]
}
end
it { expect(handler.__send__(:deauthorize)).to be :success }
end
context "when no stripe accounts are destroyed" do
before do
allow(handler).to receive(:destroy_stripe_accounts_linked_to).with('some.account') {
[]
}
end
it { expect(handler.__send__(:deauthorize)).to be :ignored }
end
end
end
end
end