summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Van Doorn <nick@super.gd>2021-07-21 14:29:59 -0700
committerGitHub <noreply@github.com>2021-07-21 14:29:59 -0700
commitb7af04133f796b14bef0781e918d7eb7a46f6c0e (patch)
tree103c0f248e1dcfe2312bd2e01cd0b5c6288de60d
parent65d0db3ec71b148777a59f752268d07b345c7e9e (diff)
parente38197d126137ae5f41fe22018e2fcbd19322037 (diff)
Merge pull request #88 from SuperGoodSoft/77-add-shipment-shipped-event
#77 Add shipment shipped event
-rw-r--r--CHANGELOG.md3
-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
3 files changed, 37 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6b46ff0..db68775 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,9 @@
# Changelog
## master
+
+- [#88](https://github.com/SuperGoodSoft/solidus_taxjar/pull/88) Fire `shipment_shipped` event when any shipment on an order ships.
+
## v0.18.2
- [#71](https://github.com/SuperGoodSoft/solidus_taxjar/pull/69) Unlock ExecJS version. This reverts the temporary fix introduced in #69
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