Skip to content

Commit

Permalink
Need to teardown the dynamically added method
Browse files Browse the repository at this point in the history
  • Loading branch information
bf4 committed Apr 1, 2016
1 parent a065bc2 commit f8cad48
Showing 1 changed file with 30 additions and 12 deletions.
42 changes: 30 additions & 12 deletions test/action_controller/serialization_scope_name_test.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
require 'test_helper'

module SerializationScopeTesting
def self.undef_serializer_dynamic_scope_methods
# @_serializer_instance_methods.include?(name) ||
# @@_serializer_instance_methods[self].include?(name)
PostSerializer.send(:undef_method, :current_user) if PostSerializer.method_defined?(:current_user)
PostSerializer.send(:undef_method, :view_context) if PostSerializer.method_defined?(:view_context)
PostSerializer.instance_variable_get(:@_serializer_instance_methods).delete_if {|meth| [:current_user, :view_context].include?(meth) } rescue $!
PostSerializer.class_variable_get(:@@_serializer_instance_methods)[PostSerializer].delete_if {|meth| [:current_user, :view_context].include?(meth) } rescue $!

PostViewContextSerializer.send(:undef_method, :current_user) if PostViewContextSerializer.method_defined?(:current_user) rescue $!
PostViewContextSerializer.send(:undef_method, :view_context) if PostViewContextSerializer.method_defined?(:view_context) rescue $!
PostViewContextSerializer.instance_variable_get(:@_serializer_instance_methods).delete_if {|meth| [:current_user, :view_context].include?(meth) } rescue $!
PostViewContextSerializer.class_variable_get(:@@_serializer_instance_methods)[PostViewContextSerializer].delete_if {|meth| [:current_user, :view_context].include?(meth) } rescue $!
end
class User < ActiveModelSerializers::Model
attr_accessor :id, :name, :admin
def admin?
Expand Down Expand Up @@ -70,6 +83,10 @@ def comments
class DefaultScopeTest < ActionController::TestCase
tests PostTestController

teardown do
SerializationScopeTesting.undef_serializer_dynamic_scope_methods
end

def test_default_serialization_scope
assert_equal :current_user, @controller._serialization_scope
end
Expand Down Expand Up @@ -120,6 +137,10 @@ def serializer
end
tests PostViewContextTestController

teardown do
SerializationScopeTesting.undef_serializer_dynamic_scope_methods
end

def test_defined_serialization_scope
assert_equal :view_context, @controller._serialization_scope
end
Expand Down Expand Up @@ -187,6 +208,10 @@ def new_post
end
tests PostViewContextTestController

teardown do
SerializationScopeTesting.undef_serializer_dynamic_scope_methods
end

def test_nil_serialization_scope
assert_nil @controller._serialization_scope
end
Expand Down Expand Up @@ -225,18 +250,11 @@ def test_serialization_scope_is_and_nil_scope_passed_in_current_user
end

def test_serialization_scope_is_nil_and_scope_passed_in_current_user_without_scope_name
get :render_post_with_passed_in_scope_without_scope_name
expected_json = {
post: {
id: 4,
title: 'Title',
body: "The 'scope' is the 'current_user': true",
comments: [
{ id: 2, body: 'Scoped' }
]
}
}.to_json
assert_equal expected_json, @response.body
exception = assert_raises(NameError) do
get :render_post_with_passed_in_scope_without_scope_name
end
exception_matcher = /current_user/
assert_match exception_matcher, exception.message
end
end
end

0 comments on commit f8cad48

Please sign in to comment.