diff options
Diffstat (limited to 'actionview')
-rw-r--r-- | actionview/lib/action_view/lookup_context.rb | 5 | ||||
-rw-r--r-- | actionview/test/template/lookup_context_test.rb | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/actionview/lib/action_view/lookup_context.rb b/actionview/lib/action_view/lookup_context.rb index 41751c2963..8d92130957 100644 --- a/actionview/lib/action_view/lookup_context.rb +++ b/actionview/lib/action_view/lookup_context.rb @@ -284,6 +284,11 @@ module ActionView values.concat(default_formats) if values.delete "*/*" values.uniq! + invalid_types = (values - Template::Types.symbols) + unless invalid_types.empty? + raise ArgumentError, "Invalid formats: #{invalid_types.map(&:inspect).join(", ")}" + end + if values == [:js] values << :html @html_fallback_for_js = true diff --git a/actionview/test/template/lookup_context_test.rb b/actionview/test/template/lookup_context_test.rb index ce5b4c4f66..02a9948e38 100644 --- a/actionview/test/template/lookup_context_test.rb +++ b/actionview/test/template/lookup_context_test.rb @@ -80,6 +80,14 @@ class LookupContextTest < ActiveSupport::TestCase assert_equal [:js, :html], @lookup_context.formats end + test "raises on invalid format assignment" do + ex = assert_raises ArgumentError do + @lookup_context.formats = [:html, :javascript] + end + + assert_equal "Invalid formats: :javascript", ex.message + end + test "provides getters and setters for locale" do @lookup_context.locale = :pt assert_equal :pt, @lookup_context.locale |