class ActiveModelSerializers::Test::Serializer::AssertSerializer
def a_serializer?
def a_serializer? ->(exp) { exp.is_a?(Class) && exp < ActiveModel::Serializer } end
def event_name
def event_name ::ActiveModelSerializers::Logging::RENDER_EVENT end
def initialize
def initialize @serializers = Set.new @_subscribers = [] end
def matches?
def matches? # Force body to be read in case the template is being streamed. response.body case expectation when a_serializer? then matches_class? when Symbol then matches_symbol? when String then matches_string? when Regexp then matches_regexp? when NilClass then matches_nil? else fail ArgumentError, 'assert_serializer only accepts a String, Symbol, Regexp, ActiveModel::Serializer, or nil' end end
def matches_class?
def matches_class? serializers.include?(expectation.name) end
def matches_nil?
def matches_nil? serializers.empty? end
def matches_regexp?
def matches_regexp? serializers.any? do |serializer| serializer.match(expectation) end end
def matches_string?
def matches_string? !expectation.empty? && serializers.include?(expectation) end
def matches_symbol?
def matches_symbol? camelize_expectation = expectation.to_s.camelize serializers.include?(camelize_expectation) end
def message=(message)
def message=(message) @message = message || "expecting <#{expectation.inspect}> but rendering with <#{serializers.to_a}>" end
def subscribe
def subscribe @_subscribers << ActiveSupport::Notifications.subscribe(event_name) do |_name, _start, _finish, _id, payload| serializer = payload[:serializer].name serializers << serializer end end
def unsubscribe
def unsubscribe @_subscribers.each do |subscriber| ActiveSupport::Notifications.unsubscribe(subscriber) end end