mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Assert with serializer class
This commit is contained in:
parent
865ab64025
commit
c5d9d97f26
@ -30,6 +30,9 @@ module ActionController
|
|||||||
# # assert that the "PostSerializer" serializer was rendered
|
# # assert that the "PostSerializer" serializer was rendered
|
||||||
# assert_serializer "PostSerializer"
|
# assert_serializer "PostSerializer"
|
||||||
#
|
#
|
||||||
|
# # assert that the instance of PostSerializer was rendered
|
||||||
|
# assert_serializer PostSerializer
|
||||||
|
#
|
||||||
# # assert that the "PostSerializer" serializer was rendered
|
# # assert that the "PostSerializer" serializer was rendered
|
||||||
# assert_serializer :post_serializer
|
# assert_serializer :post_serializer
|
||||||
#
|
#
|
||||||
@ -39,37 +42,41 @@ module ActionController
|
|||||||
# # assert that no serializer was rendered
|
# # assert that no serializer was rendered
|
||||||
# assert_serializer nil
|
# assert_serializer nil
|
||||||
#
|
#
|
||||||
|
#
|
||||||
def assert_serializer(options = {}, message = nil)
|
def assert_serializer(options = {}, message = nil)
|
||||||
# Force body to be read in case the template is being streamed.
|
# Force body to be read in case the template is being streamed.
|
||||||
response.body
|
response.body
|
||||||
|
|
||||||
case options
|
rendered = @serializers
|
||||||
when NilClass, Regexp, String, Symbol
|
msg = message || "expecting <#{options.inspect}> but rendering with <#{rendered.keys}>"
|
||||||
rendered = @serializers
|
|
||||||
msg = message || "expecting <#{options.inspect}> but rendering with <#{rendered.keys}>"
|
|
||||||
|
|
||||||
matches_serializer =
|
matches_serializer = case options
|
||||||
case options
|
when lambda { |options| options.kind_of?(Class) && options < ActiveModel::Serializer }
|
||||||
when Symbol
|
rendered.any? do |serializer, count|
|
||||||
options = options.to_s.camelize
|
options.name == serializer
|
||||||
rendered.any? do |serializer, count|
|
end
|
||||||
serializer == options
|
when NilClass, Regexp, String, Symbol
|
||||||
end
|
case options
|
||||||
when String
|
when Symbol
|
||||||
!options.empty? && rendered.any? do |serializer, count|
|
options = options.to_s.camelize
|
||||||
serializer == options
|
rendered.any? do |serializer, count|
|
||||||
end
|
serializer == options
|
||||||
when Regexp
|
end
|
||||||
rendered.any? do |serializer, count|
|
when String
|
||||||
serializer.match(options)
|
!options.empty? && rendered.any? do |serializer, count|
|
||||||
end
|
serializer == options
|
||||||
when NilClass
|
end
|
||||||
rendered.blank?
|
when Regexp
|
||||||
end
|
rendered.any? do |serializer, count|
|
||||||
assert matches_serializer, msg
|
serializer.match(options)
|
||||||
else
|
end
|
||||||
raise ArgumentError, "assert_serializer only accepts a String, Symbol, Regexp, or nil"
|
when NilClass
|
||||||
end
|
rendered.blank?
|
||||||
|
end
|
||||||
|
else
|
||||||
|
raise ArgumentError, "assert_serializer only accepts a String, Symbol, Regexp, ActiveModel::Serializer, or nil"
|
||||||
|
end
|
||||||
|
assert matches_serializer, msg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -15,6 +15,11 @@ module ActionController
|
|||||||
|
|
||||||
tests MyController
|
tests MyController
|
||||||
|
|
||||||
|
def test_supports_specifying_serializers_with_a_serializer_class
|
||||||
|
get :render_using_serializer
|
||||||
|
assert_serializer ProfileSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def test_supports_specifying_serializers_with_a_regexp
|
def test_supports_specifying_serializers_with_a_regexp
|
||||||
get :render_using_serializer
|
get :render_using_serializer
|
||||||
assert_serializer %r{\AProfile.+\Z}
|
assert_serializer %r{\AProfile.+\Z}
|
||||||
@ -43,12 +48,13 @@ module ActionController
|
|||||||
assert_match 'expecting <"PostSerializer"> but rendering with <["ProfileSerializer"]>', e.message
|
assert_match 'expecting <"PostSerializer"> but rendering with <["ProfileSerializer"]>', e.message
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def test_raises_argument_error_when_asserting_with_invalid_object
|
def test_raises_argument_error_when_asserting_with_invalid_object
|
||||||
get :render_using_serializer
|
get :render_using_serializer
|
||||||
e = assert_raise ArgumentError do
|
e = assert_raise ArgumentError do
|
||||||
assert_serializer OpenStruct.new
|
assert_serializer Hash
|
||||||
end
|
end
|
||||||
assert_match 'assert_serializer only accepts a String, Symbol, Regexp, or nil', e.message
|
assert_match 'assert_serializer only accepts a String, Symbol, Regexp, ActiveModel::Serializer, or nil', e.message
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user