@@ -22,7 +22,7 @@ def initialize(mailer_class, method_name)
22
22
end
23
23
24
24
def description
25
- "enqueues #{ @mailer_class . name } .#{ @method_name } "
25
+ "enqueues #{ mailer_class_name } .#{ @method_name } "
26
26
end
27
27
28
28
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 )
@@ -135,6 +143,14 @@ def mailer_job
135
143
# @example
136
144
# expect {
137
145
# MyMailer.welcome(user).deliver_later
146
+ # }.to have_enqueued_mail
147
+ #
148
+ # expect {
149
+ # MyMailer.welcome(user).deliver_later
150
+ # }.to have_enqueued_mail(MyMailer)
151
+ #
152
+ # expect {
153
+ # MyMailer.welcome(user).deliver_later
138
154
# }.to have_enqueued_mail(MyMailer, :welcome)
139
155
#
140
156
# # Using alias
@@ -162,7 +178,7 @@ def mailer_job
162
178
# expect {
163
179
# MyMailer.welcome(user).deliver_later(queue: :urgent_mail)
164
180
# }.to have_enqueued_mail(MyMailer, :welcome).on_queue(:urgent_mail)
165
- def have_enqueued_mail ( mailer_class , mail_method_name )
181
+ def have_enqueued_mail ( mailer_class = nil , mail_method_name = nil )
166
182
HaveEnqueuedMail . new ( mailer_class , mail_method_name )
167
183
end
168
184
alias_method :have_enqueued_email , :have_enqueued_mail
0 commit comments