Sha256: 7f3086f131a06bdfeb291793d7f6d5a88e5d27fc35a1ceb39b93cacfaf28dbea

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require './lib/couchpillow.rb'

require 'minitest/autorun'
require 'minitest/unit'
require 'mocha/mini_test'


class FakeCouchbaseServer

  def initialize
    @storage = {}
    @cas = {}
  end


  def set id, data, opts = {}
    raise Couchbase::Error::KeyExists if @storage.has_key?(id) && opts[:cas] && @cas[id] != opts[:cas]
    @storage[id] = data
    @cas[id] = SecureRandom.hex(8)
  end


  def delete id
    @storage.delete(id)
    @cas.delete(id)
  end


  def replace id, data, opts = {}
    raise "Document does not exist" unless @storage.has_key?(id)
    raise Couchbase::Error::KeyExists if @storage.has_key?(id) && opts[:cas] && @cas[id] != opts[:cas]

    @storage[id] = data
    @cas[id] = SecureRandom.hex(8)
  end


  def get *args
    opts = has_opts?(args) ? args.pop : {}
    ids = args
    if ids.length == 1
      id = ids.first
      opts[:extended] == true and
        retval = [@storage[id], nil, @cas[id]] or
        retval = @storage[id]
    else
      retval = ids.inject({}) do |memo, id|
        opts[:extended] == true and
          memo[id] = [@storage[id], nil, @cas[id]] or
          memo[id] = @storage[id]
        memo
      end
    end
    retval
  end

  def has_opts? args
    args.any? { |v| v.is_a?(Hash) }
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
couchpillow-0.4.9 test/helper.rb