Sha256: 2abb4fa4f1c2d950f53d8e09efadd86e112e8011e0c26ed7fb3892eb412c95b6

Contents?: true

Size: 897 Bytes

Versions: 2

Compression:

Stored size: 897 Bytes

Contents

module JsonapiSpecHelpers
  class Payload
    class << self
      attr_accessor :registry
    end
    self.registry = {}

    attr_accessor :keys, :no_keys

    def self.register(name, &blk)
      instance = new
      instance.instance_eval(&blk)
      registry[name] = instance
    end

    def fork
      instance = self.class.new
      instance.keys = keys.dup
      instance.no_keys = no_keys.dup
      instance
    end

    def initialize
      @keys = {}
      @no_keys = []
    end

    def no_key(name)
      @keys.delete(name)
      @no_keys << name
    end

    def key(name, &blk)
      @no_keys.reject! { |k| k == name }
      prc = blk
      prc = ->(record) { record.send(name) } if prc.nil?
      @keys[name] = prc
    end

    def timestamps!
      @keys[:created_at] = ->(record) { record.created_at }
      @keys[:updated_at] = ->(record) { record.updated_at }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jsonapi_spec_helpers-0.2.1 lib/jsonapi_spec_helpers/payload.rb
jsonapi_spec_helpers-0.2.0 lib/jsonapi_spec_helpers/payload.rb