1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
# encoding: utf-8
$:.unshift File.expand_path(File.dirname(__FILE__) + '/')
require 'test_helper'
class I18nExceptionsTest < Test::Unit::TestCase
def test_invalid_locale_stores_locale
force_invalid_locale
rescue I18n::ArgumentError => e
assert_nil e.locale
end
def test_invalid_locale_message
force_invalid_locale
rescue I18n::ArgumentError => e
assert_equal 'nil is not a valid locale', e.message
end
def test_missing_translation_data_stores_locale_key_and_options
force_missing_translation_data
rescue I18n::ArgumentError => e
options = {:scope => :bar}
assert_equal 'de', e.locale
assert_equal :foo, e.key
assert_equal options, e.options
end
def test_missing_translation_data_message
force_missing_translation_data
rescue I18n::ArgumentError => e
assert_equal 'translation missing: de, bar, foo', e.message
end
def test_invalid_pluralization_data_stores_entry_and_count
force_invalid_pluralization_data
rescue I18n::ArgumentError => e
assert_equal [:bar], e.entry
assert_equal 1, e.count
end
def test_invalid_pluralization_data_message
force_invalid_pluralization_data
rescue I18n::ArgumentError => e
assert_equal 'translation data [:bar] can not be used with :count => 1', e.message
end
def test_missing_interpolation_argument_stores_key_and_string
assert_raise(I18n::MissingInterpolationArgument) { force_missing_interpolation_argument }
force_missing_interpolation_argument
rescue I18n::ArgumentError => e
# assert_equal :bar, e.key
assert_equal "%{bar}", e.string
end
def test_missing_interpolation_argument_message
force_missing_interpolation_argument
rescue I18n::ArgumentError => e
assert_equal 'missing interpolation argument in "%{bar}" ({:baz=>"baz"} given)', e.message
end
def test_reserved_interpolation_key_stores_key_and_string
force_reserved_interpolation_key
rescue I18n::ArgumentError => e
assert_equal :scope, e.key
assert_equal "%{scope}", e.string
end
def test_reserved_interpolation_key_message
force_reserved_interpolation_key
rescue I18n::ArgumentError => e
assert_equal 'reserved key :scope used in "%{scope}"', e.message
end
private
def force_invalid_locale
I18n.backend.translate nil, :foo
end
def force_missing_translation_data
I18n.backend.store_translations 'de', :bar => nil
I18n.backend.translate 'de', :foo, :scope => :bar
end
def force_invalid_pluralization_data
I18n.backend.store_translations 'de', :foo => [:bar]
I18n.backend.translate 'de', :foo, :count => 1
end
def force_missing_interpolation_argument
I18n.backend.store_translations 'de', :foo => "%{bar}"
I18n.backend.translate 'de', :foo, :baz => 'baz'
end
def force_reserved_interpolation_key
I18n.backend.store_translations 'de', :foo => "%{scope}"
I18n.backend.translate 'de', :foo, :baz => 'baz'
end
end
|