diff options
-rw-r--r-- | app/decorators/super_good/solidus_taxjar/spree/shipment/fire_shipment_shipped_event.rb | 18 | ||||
-rw-r--r-- | spec/models/spree/shipment_spec.rb | 16 |
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 |