@@ -23,7 +23,7 @@ def initialize(mailer_class, method_name)
23
23
end
24
24
25
25
def description
26
- "enqueues #{ @mailer_class . name } .#{ @method_name } "
26
+ "enqueues #{ mailer_class_name } .#{ @method_name } "
27
27
end
28
28
29
29
def with ( *args , &block )
@@ -50,7 +50,7 @@ def failure_message_when_negated
50
50
private
51
51
52
52
def base_message
53
- " #{ @mailer_class . name } . #{ @method_name } " . tap do |msg |
53
+ [ mailer_class_name , @method_name ] . compact . join ( '.' ) . tap do |msg |
54
54
msg << " #{ expected_count_message } "
55
55
msg << " with #{ @mail_args } ," if @mail_args . any?
56
56
msg << " on queue #{ @queue } ," if @queue
@@ -63,10 +63,14 @@ def expected_count_message
63
63
"#{ message_expectation_modifier } #{ @expected_number } #{ @expected_number == 1 ? 'time' : 'times' } "
64
64
end
65
65
66
+ def mailer_class_name
67
+ @mailer_class ? @mailer_class . name : 'ActionMailer::Base'
68
+ end
69
+
66
70
def mailer_args
67
71
if @mail_args . any?
68
72
base_mailer_args + @mail_args
69
- else
73
+ elsif @mailer_class && @method_name
70
74
mailer_method_arity = @mailer_class . instance_method ( @method_name ) . arity
71
75
72
76
number_of_args = if mailer_method_arity < 0
@@ -76,11 +80,15 @@ def mailer_args
76
80
end
77
81
78
82
base_mailer_args + Array . new ( number_of_args ) { anything }
83
+ elsif @mailer_class
84
+ [ mailer_class_name , any_args ]
85
+ else
86
+ [ ]
79
87
end
80
88
end
81
89
82
90
def base_mailer_args
83
- [ @mailer_class . name , @method_name . to_s , MAILER_JOB_METHOD ]
91
+ [ mailer_class_name , @method_name . to_s , MAILER_JOB_METHOD ]
84
92
end
85
93
86
94
def yield_mail_args ( block )
@@ -136,6 +144,14 @@ def mailer_job
136
144
# @example
137
145
# expect {
138
146
# MyMailer.welcome(user).deliver_later
147
+ # }.to have_enqueued_mail
148
+ #
149
+ # expect {
150
+ # MyMailer.welcome(user).deliver_later
151
+ # }.to have_enqueued_mail(MyMailer)
152
+ #
153
+ # expect {
154
+ # MyMailer.welcome(user).deliver_later
139
155
# }.to have_enqueued_mail(MyMailer, :welcome)
140
156
#
141
157
# # Using alias
@@ -163,7 +179,7 @@ def mailer_job
163
179
# expect {
164
180
# MyMailer.welcome(user).deliver_later(queue: :urgent_mail)
165
181
# }.to have_enqueued_mail(MyMailer, :welcome).on_queue(:urgent_mail)
166
- def have_enqueued_mail ( mailer_class , mail_method_name )
182
+ def have_enqueued_mail ( mailer_class = nil , mail_method_name = nil )
167
183
HaveEnqueuedMail . new ( mailer_class , mail_method_name )
168
184
end
169
185
alias_method :have_enqueued_email , :have_enqueued_mail
0 commit comments