From 1b2f5ec774898e3589894f96f8a595c1de9944f8 Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Wed, 10 Feb 2016 21:08:42 -0600 Subject: [PATCH] Differentiate exception behavior in Rails 4.0 vs. others NoMethodError is current_user is nil, so nil.admin? NameError is a superclass of NoMethodError (which Rails 4.0 won't allow) and means current_user might not be defined --- .../serialization_scope_name_test.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/test/action_controller/serialization_scope_name_test.rb b/test/action_controller/serialization_scope_name_test.rb index 1d49bddf..5ad7251b 100644 --- a/test/action_controller/serialization_scope_name_test.rb +++ b/test/action_controller/serialization_scope_name_test.rb @@ -158,6 +158,8 @@ module SerializationScopeTesting assert_equal expected_json, @response.body end end + # FIXME: Has bugs. See comments below and + # https://github.com/rails-api/active_model_serializers/issues/1509 class NilSerializationScopeTest < ActionController::TestCase class PostViewContextTestController < ActionController::Base serialization_scope nil @@ -195,10 +197,17 @@ module SerializationScopeTesting # TODO: change to NoMethodError and match 'admin?' when the # global state in Serializer._serializer_instance_methods is fixed def test_nil_scope - exception = assert_raises(NameError) do + if Rails.version.start_with?('4.0') + exception_class = NoMethodError + exception_matcher = 'admin?' + else + exception_class = NameError + exception_matcher = /admin|current_user/ + end + exception = assert_raises(exception_class) do get :render_post_with_no_scope end - assert_match(/admin|current_user/, exception.message) + assert_match exception_matcher, exception.message end # TODO: run test when