Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. # expect(json).to have_serialized(post).with(PostSerializer)
  2. RSpec::Matchers.define :have_serialized do |unserialized|
  3. # The serializer to use on the resource
  4. chain :with do |serializer|
  5. @serializer = serializer
  6. end
  7.  
  8. # The serializer to use on the collection
  9. chain :wrap do |collection_serializer|
  10. @collection_serializer = collection_serializer
  11. end
  12.  
  13. def serialize(object)
  14. @collection_serializer ||= ActiveModel::Serializer::CollectionSerializer
  15.  
  16. if object.respond_to?(:map)
  17. serializer = @collection_serializer.new(object, serializer: @serializer)
  18. else
  19. serializer = @serializer.new(object)
  20. end
  21.  
  22. json = ActiveModel::Serializer::Adapter::JsonApi.new(serializer).to_json
  23. JSON.parse(json)
  24. end
  25.  
  26. match do |serialized|
  27. serialized == serialize(unserialized)
  28. end
  29.  
  30. failure_message do |serialized|
  31. <<-FAIL.strip_heredoc
  32. expected:
  33. #{serialized}
  34.  
  35. to match:
  36. #{serialize(unserialized)}
  37.  
  38. ---
  39. #{inspect}
  40.  
  41. FAIL
  42. end
  43.  
  44. failure_message_when_negated do |serialized|
  45. <<-FAIL.strip_heredoc
  46. expected
  47.  
  48. #{serialized}
  49.  
  50. not to match:
  51.  
  52. #{serialize(unserialized)}
  53. ---
  54. #{inspect}
  55.  
  56. FAIL
  57. end
  58.  
  59. def inspect
  60. <<-INSPECT.strip_heredoc
  61. Using object serializer: #{@serializer}
  62. Using collection serializer: #{@collection_serializer}
  63. INSPECT
  64. end
  65. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement