summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/decorators/super_good/solidus_taxjar/spree/shipment/fire_shipment_shipped_event.rb18
-rw-r--r--spec/models/spree/shipment_spec.rb16
2 files changed, 34 insertions, 0 deletions
diff --git a/app/decorators/super_good/solidus_taxjar/spree/shipment/fire_shipment_shipped_event.rb b/app/decorators/super_good/solidus_taxjar/spree/shipment/fire_shipment_shipped_event.rb
new file mode 100644
index 0000000..a109745
--- /dev/null
+++ b/app/decorators/super_good/solidus_taxjar/spree/shipment/fire_shipment_shipped_event.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module SuperGood
+ module SolidusTaxjar
+ module Spree
+ module Shipment
+ module FireShipmentShippedEvent
+ def after_ship
+ ::Spree::Event.fire 'shipment_shipped', shipment: self
+ super
+ end
+
+ ::Spree::Shipment.prepend(self)
+ end
+ end
+ end
+ end
+end
diff --git a/spec/models/spree/shipment_spec.rb b/spec/models/spree/shipment_spec.rb
new file mode 100644
index 0000000..27f213b
--- /dev/null
+++ b/spec/models/spree/shipment_spec.rb
@@ -0,0 +1,16 @@
+RSpec.describe Spree::Shipment do
+ describe '#update' do
+ subject { shipment.ship }
+
+ let(:shipment) { create(:shipment, state: 'ready', order: order) }
+ let(:order) { create :order_with_line_items }
+
+ it 'fires the shipment_shipped event exactly once' do
+ stub_const('Spree::Event', class_spy(Spree::Event))
+
+ expect(Spree::Event).to receive(:fire).with('shipment_shipped', shipment: shipment).once
+
+ subject
+ end
+ end
+end