aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionview/lib/action_view/lookup_context.rb5
-rw-r--r--actionview/test/template/lookup_context_test.rb8
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