File tree Expand file tree Collapse file tree 5 files changed +76
-38
lines changed
Expand file tree Collapse file tree 5 files changed +76
-38
lines changed Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ module Spree
4+ # Mailing after {Spree::Order} is confirmed.
5+ class OrderConfirmationMailerSubscriber
6+ include Omnes ::Subscriber
7+
8+ handle :order_finalized ,
9+ with : :send_confirmation_email ,
10+ id : :spree_order_mailer_send_confirmation_email
11+
12+ # Sends confirmation email to the user.
13+ #
14+ # @param event [Omnes::UnstructuredEvent]
15+ def send_confirmation_email ( event )
16+ order = event [ :order ]
17+ unless order . confirmation_delivered?
18+ Spree ::Config . order_mailer_class . confirm_email ( order ) . deliver_later
19+ order . update_column ( :confirmation_delivered , true )
20+ end
21+ end
22+ end
23+ end
Original file line number Diff line number Diff line change 11# frozen_string_literal: true
22
33module Spree
4- # Mailing after events on a {Spree::Order}
54 class OrderMailerSubscriber
65 include Omnes ::Subscriber
76
8- handle :order_finalized ,
9- with : :send_confirmation_email ,
10- id : :spree_order_mailer_send_confirmation_email
11-
12- # Sends confirmation email to the user
13- #
14- # @param event [Omnes::UnstructuredEvent]
15- def send_confirmation_email ( event )
16- order = event [ :order ]
17- unless order . confirmation_delivered?
18- Spree ::Config . order_mailer_class . confirm_email ( order ) . deliver_later
19- order . update_column ( :confirmation_delivered , true )
20- end
21- end
7+ def send_confirmation_email ( _event ) = nil
8+ deprecate send_confirmation_email :
9+ "Use Spree::OrderConfirmationMailerSubscriber#send_confirmation_email instead" ,
10+ deprecator : Spree . deprecator
2211
2312 def send_reimbursement_email ( _event ) = nil
2413 deprecate send_reimbursement_email :
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ class Engine < ::Rails::Engine
7171 reimbursement_errored
7272 ] . each { |event_name | Spree ::Bus . register ( event_name ) }
7373
74- Spree ::OrderMailerSubscriber . new . subscribe_to ( Spree ::Bus )
74+ Spree ::OrderConfirmationMailerSubscriber . new . subscribe_to ( Spree ::Bus )
7575 Spree ::ReimbursementMailerSubscriber . new . subscribe_to ( Spree ::Bus )
7676 end
7777 end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require 'rails_helper'
4+ require 'action_mailer'
5+
6+ RSpec . describe Spree ::OrderConfirmationMailerSubscriber do
7+ let ( :bus ) { Omnes ::Bus . new }
8+
9+ before do
10+ bus . register ( :order_finalized )
11+
12+ described_class . new . subscribe_to ( bus )
13+ end
14+
15+ describe 'on :on_order_finalized' do
16+ it 'sends confirmation email' do
17+ order = create ( :order , confirmation_delivered : false )
18+
19+ expect ( Spree ::OrderMailer ) . to receive ( :confirm_email ) . and_call_original
20+
21+ bus . publish ( :order_finalized , order :)
22+ end
23+
24+ it 'marks the order as having the confirmation email delivered' do
25+ order = create ( :order , confirmation_delivered : false )
26+
27+ bus . publish ( :order_finalized , order :)
28+
29+ expect ( order . confirmation_delivered ) . to be ( true )
30+ end
31+
32+ it "doesn't send confirmation email if already sent" do
33+ order = build ( :order , confirmation_delivered : true )
34+
35+ expect ( Spree ::OrderMailer ) . not_to receive ( :confirm_email )
36+
37+ bus . publish ( :order_finalized , order :)
38+ end
39+ end
40+ end
Original file line number Diff line number Diff line change 1212 described_class . new . subscribe_to ( bus )
1313 end
1414
15- describe 'on :on_order_finalized' do
16- it 'sends confirmation email' do
17- order = create ( :order , confirmation_delivered : false )
15+ describe "#send_confirmation_email" do
16+ subject { described_class . new . send_confirmation_email ( { } ) }
1817
19- expect ( Spree ::OrderMailer ) . to receive ( :confirm_email ) . and_call_original
20-
21- bus . publish ( :order_finalized , order :)
22- end
23-
24- it 'marks the order as having the confirmation email delivered' do
25- order = create ( :order , confirmation_delivered : false )
26-
27- bus . publish ( :order_finalized , order :)
28-
29- expect ( order . confirmation_delivered ) . to be ( true )
30- end
31-
32- it "doesn't send confirmation email if already sent" do
33- order = build ( :order , confirmation_delivered : true )
34-
35- expect ( Spree ::OrderMailer ) . not_to receive ( :confirm_email )
36-
37- bus . publish ( :order_finalized , order :)
18+ it "results in a deprecation warning" do
19+ if ENV [ "SOLIDUS_RAISE_DEPRECATIONS" ]
20+ expect { subject } . to raise_error ( ActiveSupport ::DeprecationException )
21+ else
22+ expect ( subject ) . to eq nil
23+ end
3824 end
3925 end
4026
You can’t perform that action at this time.
0 commit comments