Skip to content

Commit d00c324

Browse files
authored
Merge pull request #6170 from SuperGoodSoft/new-order-events
Add new order events
2 parents cc2f7cb + 003cb78 commit d00c324

File tree

8 files changed

+34
-1
lines changed

8 files changed

+34
-1
lines changed

core/app/models/spree/order.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,8 @@ def after_cancel
848848
send_cancel_email
849849
update_column(:canceled_at, Time.current)
850850
recalculate
851+
852+
Spree::Bus.publish :order_canceled, order: self
851853
end
852854

853855
def cancel_shipments!

core/app/models/spree/order_cancellations.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def short_ship(inventory_units, created_by: nil)
5050
end
5151
end
5252

53+
Spree::Bus.publish(:order_short_shipped, order: @order, inventory_units:)
5354
unit_cancels
5455
end
5556

core/app/models/spree/order_shipping.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def ship(inventory_units:, stock_location:, address:, shipping_method:,
7272
@order.shipments.reload
7373
@order.recalculate
7474

75+
Spree::Bus.publish(:carton_shipped, carton:)
7576
carton
7677
end
7778

core/lib/spree/core/engine.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,12 @@ class Engine < ::Rails::Engine
6161
Spree::Bus.clear
6262

6363
%i[
64+
carton_shipped
65+
order_canceled
6466
order_emptied
6567
order_finalized
6668
order_recalculated
69+
order_short_shipped
6770
reimbursement_reimbursed
6871
reimbursement_errored
6972
].each { |event_name| Spree::Bus.register(event_name) }

core/spec/models/spree/order_cancellations_spec.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@
9494
expect { subject }.to change { order.shipment_state }.from('ready').to('shipped')
9595
end
9696

97+
it "publishes an 'order_short_shipped' event" do
98+
stub_spree_bus
99+
100+
subject
101+
102+
expect(:order_short_shipped)
103+
.to have_been_published.with(order:, inventory_units: [inventory_unit])
104+
end
105+
97106
it "adjusts the order" do
98107
expect { subject }.to change { order.reload.total }.by(-10.0)
99108
end

core/spec/models/spree/order_shipping_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ def emails
8585
it "sets the external_number" do
8686
expect(subject.external_number).to eq 'some-external-number'
8787
end
88+
89+
it "publishes a 'carton_shipped' event" do
90+
stub_spree_bus
91+
92+
expect(:carton_shipped).to have_been_published.with(carton: subject)
93+
end
8894
end
8995

9096
context "with a tracking number" do

core/spec/models/spree/order_spec.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,18 @@
8282
end
8383

8484
describe "#cancel!" do
85-
let!(:order) { create(:completed_order_with_totals) }
8685
subject { order.cancel! }
8786

87+
let!(:order) { create(:completed_order_with_totals) }
88+
89+
it "publishes a 'order_canceled' event" do
90+
stub_spree_bus
91+
92+
subject
93+
94+
expect(:order_canceled).to have_been_published.with(order:)
95+
end
96+
8897
it "sends a cancel email" do
8998
perform_enqueued_jobs { subject }
9099

core/spec/rails_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
Dir["./spec/support/**/*.rb"].sort.each { |f| require f }
1818

19+
require 'spree/testing_support/bus_helpers'
1920
require 'spree/testing_support/factory_bot'
2021
require 'spree/testing_support/preferences'
2122
require 'spree/testing_support/rake'
@@ -45,6 +46,7 @@
4546
Rails.cache.clear
4647
end
4748

49+
config.include Spree::TestingSupport::BusHelpers
4850
config.include Spree::TestingSupport::JobHelpers
4951

5052
config.include FactoryBot::Syntax::Methods

0 commit comments

Comments
 (0)