mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-28 01:53:25 +00:00
Fix call to #record_and_log_error
This commit is contained in:
@@ -23,7 +23,7 @@ class PlaceProxyOrder
|
||||
move_to_completion
|
||||
send_placement_email
|
||||
rescue StandardError => e
|
||||
summarizer.record_and_log_error(:processing, e.message)
|
||||
summarizer.record_and_log_error(:processing, order, e.message)
|
||||
Bugsnag.notify(e, order: order)
|
||||
end
|
||||
|
||||
|
||||
@@ -51,7 +51,8 @@ describe SubscriptionPlacementJob do
|
||||
describe "performing the job" do
|
||||
context "when unplaced proxy_orders exist" do
|
||||
let!(:subscription) { create(:subscription, with_items: true) }
|
||||
let!(:proxy_order) { create(:proxy_order, subscription: subscription, order: build(:order)) }
|
||||
let(:order) { build(:order, distributor: create(:enterprise)) }
|
||||
let!(:proxy_order) { create(:proxy_order, subscription: subscription, order: order) }
|
||||
|
||||
before do
|
||||
allow(job).to receive(:proxy_orders) { ProxyOrder.where(id: proxy_order.id) }
|
||||
@@ -73,6 +74,18 @@ describe SubscriptionPlacementJob do
|
||||
|
||||
expect(service).to have_received(:call)
|
||||
end
|
||||
|
||||
it "records exceptions" do
|
||||
order.line_items << build(:line_item)
|
||||
|
||||
summarizer = TestSummarizer.new
|
||||
allow(OrderManagement::Subscriptions::Summarizer).to receive(:new).and_return(summarizer)
|
||||
|
||||
job.perform
|
||||
|
||||
expect(summarizer.recorded_issues[order.id])
|
||||
.to eq("Errors: Cannot transition state via :next from :address (Reason(s): Items cannot be shipped)")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ describe PlaceProxyOrder do
|
||||
subject { described_class.new(proxy_order, summarizer, logger, stock_changes_loader) }
|
||||
|
||||
let(:proxy_order) { create(:proxy_order, order: order) }
|
||||
let(:order) { build(:order) }
|
||||
let(:order) { build(:order, distributor: build(:enterprise)) }
|
||||
let(:summarizer) { instance_double(OrderManagement::Subscriptions::Summarizer) }
|
||||
let(:logger) { instance_double(JobLogger.logger.class, info: true) }
|
||||
|
||||
@@ -19,7 +19,7 @@ describe PlaceProxyOrder do
|
||||
let!(:proxy_order) { create(:proxy_order, subscription: subscription, order: order) }
|
||||
|
||||
let(:stock_changes_loader) { lambda { {} } }
|
||||
let(:summarizer) { instance_double(OrderManagement::Subscriptions::Summarizer, record_order: true, record_issue: true) }
|
||||
let(:summarizer) { OrderManagement::Subscriptions::Summarizer.new }
|
||||
|
||||
before do
|
||||
allow(SubscriptionMailer).to receive(:empty_email) { mail_mock }
|
||||
@@ -31,6 +31,15 @@ describe PlaceProxyOrder do
|
||||
expect(proxy_order.placed_at).to eq(Time.zone.now)
|
||||
end
|
||||
end
|
||||
|
||||
it "tracks exceptions" do
|
||||
order.line_items << build(:line_item)
|
||||
|
||||
expect(summarizer).to receive(:record_and_log_error).with(:processing, order, kind_of(String))
|
||||
expect(Bugsnag).to receive(:notify).with(kind_of(StandardError), order: order)
|
||||
|
||||
subject.call
|
||||
end
|
||||
end
|
||||
|
||||
describe "#send_placement_email" do
|
||||
|
||||
16
spec/support/test_summarizer.rb
Normal file
16
spec/support/test_summarizer.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# A fake summarizer that implements a more handy public API to reach out to its internal state,
|
||||
# which greatly simplifyies integration testing.
|
||||
class TestSummarizer < OrderManagement::Subscriptions::Summarizer
|
||||
attr_reader :recorded_issues
|
||||
|
||||
def initialize
|
||||
@recorded_issues = {}
|
||||
super
|
||||
end
|
||||
|
||||
def record_issue(_type, order, message = nil)
|
||||
@recorded_issues[order.id] = message
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user