File tree 5 files changed +76
-38
lines changed
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 1
1
# frozen_string_literal: true
2
2
3
3
module Spree
4
- # Mailing after events on a {Spree::Order}
5
4
class OrderMailerSubscriber
6
5
include Omnes ::Subscriber
7
6
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
22
11
23
12
def send_reimbursement_email ( _event ) = nil
24
13
deprecate send_reimbursement_email :
Original file line number Diff line number Diff line change @@ -71,7 +71,7 @@ class Engine < ::Rails::Engine
71
71
reimbursement_errored
72
72
] . each { |event_name | Spree ::Bus . register ( event_name ) }
73
73
74
- Spree ::OrderMailerSubscriber . new . subscribe_to ( Spree ::Bus )
74
+ Spree ::OrderConfirmationMailerSubscriber . new . subscribe_to ( Spree ::Bus )
75
75
Spree ::ReimbursementMailerSubscriber . new . subscribe_to ( Spree ::Bus )
76
76
end
77
77
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 12
12
described_class . new . subscribe_to ( bus )
13
13
end
14
14
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 ( { } ) }
18
17
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
38
24
end
39
25
end
40
26
You can’t perform that action at this time.
0 commit comments