Sha256: a2e46a6172768d76c15bbba41592b36b7315a584e3ba8d502ec616761783ab52

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

class SimpleModel
  attr_reader :id, :name, :description, :associations, :number
  attr_accessor :parent
  
  def initialize(attributes = {})
    @id = attributes[:id]
    @name = attributes[:name]
    @description = attributes[:description]
    @validated = attributes[:validated]
    @associations = attributes[:associations]
    @parent = attributes[:parent]
    @number = attributes[:number]
  end
  
  def validated?
    !!@validated
  end
  
  def as_json(*args)
    {:id => @id, :name => @name, :description => @description, :number => @number}
  end
end

class TestCache < FastSerializer::Cache
  def initialize
    @cache = {}
  end
  
  def fetch(serializer, ttl)
    val = @cache[serializer.cache_key]
    unless val
      val = yield
      @cache[serializer.cache_key] = val
    end
    val
  end
end

class SimpleSerializer
  include FastSerializer::Serializer
  
  serialize :id, :name, :validated?
  serialize :description, optional: true
  serialize :number, as: :amount, optional: true
end

class CachedSerializer < SimpleSerializer
  cacheable ttl: 2, cache: TestCache.new
end

class ComplexSerializer < SimpleSerializer
  serialize :serial_number, delegate: false
  serialize :associations, delegate: true, serializer: CachedSerializer, enumerable: true
  serialize :parent, delegate: true, serializer: SimpleSerializer
  
  def serial_number
    option(:serial_number)
  end
end

class CircularSerializer < SimpleSerializer
  remove :name, :validated
  serialize :parent, serializer: self
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fast_serializer-1.0.1 spec/support/test_models.rb
fast_serializer-1.0.0 spec/support/test_models.rb