Skip to content

Commit

Permalink
Add options for FailureApp's i18n_message. Similar heartcombo#1633
Browse files Browse the repository at this point in the history
  • Loading branch information
bbenezech committed Oct 24, 2013
1 parent 8bef8b8 commit d5514bf
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lib/devise/failure_app.rb
Expand Up @@ -68,8 +68,13 @@ def i18n_message(default = nil)
message = warden_message || default || :unauthenticated

if message.is_a?(Symbol)
I18n.t(:"#{scope}.#{message}", :resource_name => scope,
:scope => "devise.failure", :default => [message])
options = {}
options[:resource_name] = scope
options[:scope] = "devise.failure"
options[:default] = [message]
options = i18n_options(options) if respond_to?(:i18n_options, true)

I18n.t(:"#{scope}.#{message}", options)
else
message.to_s
end
Expand Down
11 changes: 11 additions & 0 deletions test/failure_app_test.rb
Expand Up @@ -8,6 +8,12 @@ def fake_app
end
end

class FailureWithI18nOptions < Devise::FailureApp
def i18n_options(options)
options.merge(:name => 'Steve')
end
end

def self.context(name, &block)
instance_eval(&block)
end
Expand Down Expand Up @@ -67,6 +73,11 @@ def call_failure(env_params={})
assert_equal 'http://test.host/users/sign_in', @response.second["Location"]
end

test 'uses custom i18n options' do
call_failure('warden' => OpenStruct.new(:message => :does_not_exist), :app => FailureWithI18nOptions)
assert_equal 'User Steve does not exist', @request.flash[:alert]
end

test 'uses the proxy failure message as string' do
call_failure('warden' => OpenStruct.new(:message => 'Hello world'))
assert_equal 'Hello world', @request.flash[:alert]
Expand Down
4 changes: 4 additions & 0 deletions test/support/locale/en.yml
@@ -1,4 +1,8 @@
en:
devise:
failure:
user:
does_not_exist: "User %{name} does not exist"
errors:
messages:
taken: "has already been taken"

0 comments on commit d5514bf

Please sign in to comment.