Fix keyword arguments warnings in Action Mailer
This commit is contained in:
parent
950b39482d
commit
c10b580909
@ -619,6 +619,7 @@ def method_missing(method_name, *args)
|
||||
super
|
||||
end
|
||||
end
|
||||
ruby2_keywords(:method_missing) if respond_to?(:ruby2_keywords, true)
|
||||
|
||||
def respond_to_missing?(method, include_all = false)
|
||||
action_methods.include?(method.to_s) || super
|
||||
|
@ -23,6 +23,7 @@ def initialize(mailer_class, action, *args) #:nodoc:
|
||||
@processed_mailer = nil
|
||||
@mail_message = nil
|
||||
end
|
||||
ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
|
||||
|
||||
# Method calls are delegated to the Mail::Message that's ready to deliver.
|
||||
def __getobj__ #:nodoc:
|
||||
@ -143,10 +144,16 @@ def enqueue_delivery(delivery_method, options = {})
|
||||
|
||||
def arguments_for(delivery_job, delivery_method)
|
||||
if delivery_job <= MailDeliveryJob
|
||||
[@mailer_class.name, @action.to_s, delivery_method.to_s, args: @args]
|
||||
ruby2_keywords_arguments \
|
||||
@mailer_class.name, @action.to_s, delivery_method.to_s, args: @args
|
||||
else
|
||||
[@mailer_class.name, @action.to_s, delivery_method.to_s, *@args]
|
||||
end
|
||||
end
|
||||
|
||||
def ruby2_keywords_arguments(*args)
|
||||
args
|
||||
end
|
||||
ruby2_keywords(:ruby2_keywords_arguments) if respond_to?(:ruby2_keywords, true)
|
||||
end
|
||||
end
|
||||
|
@ -132,6 +132,7 @@ def initialize(mailer_class, action, params, *args)
|
||||
super(mailer_class, action, *args)
|
||||
@params = params
|
||||
end
|
||||
ruby2_keywords(:initialize) if respond_to?(:ruby2_keywords, true)
|
||||
|
||||
private
|
||||
def processed_mailer
|
||||
@ -161,7 +162,8 @@ def delivery_job_class
|
||||
|
||||
def arguments_for(delivery_job, delivery_method)
|
||||
if delivery_job <= MailDeliveryJob
|
||||
[@mailer_class.name, @action.to_s, delivery_method.to_s, params: @params, args: @args]
|
||||
ruby2_keywords_arguments \
|
||||
@mailer_class.name, @action.to_s, delivery_method.to_s, params: @params, args: @args
|
||||
else
|
||||
[@mailer_class.name, @action.to_s, delivery_method.to_s, @params, *@args]
|
||||
end
|
||||
|
@ -22,6 +22,10 @@ def test_message(*)
|
||||
mail(from: "test-sender@test.com", to: "test-receiver@test.com", subject: "Test Subject", body: "Test Body")
|
||||
end
|
||||
|
||||
def test_kwargs(argument:)
|
||||
mail(from: "test-sender@test.com", to: "test-receiver@test.com", subject: "Test Subject", body: "Test Body")
|
||||
end
|
||||
|
||||
def test_raise(klass_name)
|
||||
raise klass_name.constantize, "boom"
|
||||
end
|
||||
|
@ -164,4 +164,11 @@ def to_global_id(options = {})
|
||||
assert_equal DelayedMailer, DelayedMailer.last_rescue_from_instance
|
||||
assert_equal "Error while trying to deserialize arguments: boom, missing find", DelayedMailer.last_error.message
|
||||
end
|
||||
|
||||
test "allows for keyword arguments" do
|
||||
assert_performed_with(job: ActionMailer::MailDeliveryJob, args: ["DelayedMailer", "test_kwargs", "deliver_now", args: [argument: 1]]) do
|
||||
message = DelayedMailer.test_kwargs(argument: 1)
|
||||
message.deliver_later
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user