Sha256: bf9e4a740308394967e302c5a6b06ee7a5e44692ca21e82e8e1f45cd95a1cc58

Contents?: true

Size: 913 Bytes

Versions: 2

Compression:

Stored size: 913 Bytes

Contents

module Loquor
  module ResourceMock

    def self.extended(x)
      x.class_eval do
        def method_missing(name, *args)
          if name[-1] == "="
            if self.class.attributes.keys.map{ |k| :"#{k}=" }.include?(name)
              attr = name.to_s[0..-2].to_sym
              @data[attr] = args[0]
            else
              raise NameError.new("undefined local variable or method '#{name}' for Resource Mock")
            end
          else
            super(name, *args)
          end
        end
      end
    end

    def attributes
      @attributes
    end

    def attributes=(attrs)
      @attributes = attrs
    end

    def sample(overrides = {})
      self.new(attributes.merge(overrides))
    end

    def find(id)
      self.new(attributes.merge(id: id))
    end

    def where(*args)
      [ find(1), find(2) ]
    end

    def create(attrs)
      self.new(attrs)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
loquor-0.5.4 lib/loquor/resource_mock.rb
loquor-0.5.3 lib/loquor/resource_mock.rb