Sha256: 0d5362ab7c2f3ba821c53f95b03a28192de255d64b1a5a7e868afc80cb752de0

Contents?: true

Size: 1.7 KB

Versions: 11

Compression:

Stored size: 1.7 KB

Contents

require 'spec_helper'
require_relative 'shared_examples'

describe Riak::Crdt::Counter do
  let(:bucket) do
    double('bucket').tap do |b|
      allow(b).to receive(:name).and_return('bucket')
      allow(b).to receive(:is_a?).with(Riak::Bucket).and_return(true)
      allow(b).to receive(:is_a?).with(Riak::BucketTyped::Bucket).and_return(false)
    end
  end
  it 'initializes with bucket, key, and optional bucket-type' do
    expect{ described_class.new bucket, 'key' }.to_not raise_error
    expect{ described_class.new bucket, 'key', 'type' }.to_not raise_error
  end

  subject{ described_class.new bucket, 'key' }

  describe 'with a client' do
    let(:response){ double 'response', key: nil }
    let(:operator){ double 'operator' }
    let(:loader){ double 'loader', get_loader_for_value: nil }
    let(:backend){ double 'backend' }
    let(:client){ double 'client' }

    before(:each) do
      allow(bucket).to receive(:client).and_return(client)
      allow(client).to receive(:backend).and_yield(backend)
      allow(backend).to receive(:crdt_operator).and_return(operator)
      allow(backend).to receive(:crdt_loader).and_return(loader)
    end

    include_examples 'Counter CRDT'

    it 'batches properly' do
      expect(operator).
        to receive(:operate) { |bucket, key, type, operations|
        expect(bucket).to eq bucket
        expect(key).to eq 'key'
        expect(type).to eq subject.bucket_type

        expect(operations).to be_a Riak::Crdt::Operation::Update
        expect(operations.value).to eq 5
      }.
        and_return(response)

      subject.batch do |s|
        s.increment 4 # 4
        s.decrement 2 # 2
        s.increment 4 # 6
        s.decrement   # 5
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
riak-client-2.5.0 spec/riak/crdt/counter_spec.rb
riak-client-2.4.1 spec/riak/crdt/counter_spec.rb
riak-client-2.4.0 spec/riak/crdt/counter_spec.rb
riak-client-2.4.0.pre1 spec/riak/crdt/counter_spec.rb
riak-client-2.3.2 spec/riak/crdt/counter_spec.rb
riak-client-2.3.1 spec/riak/crdt/counter_spec.rb
riak-client-2.3.0 spec/riak/crdt/counter_spec.rb
riak-client-2.2.2 spec/riak/crdt/counter_spec.rb
riak-client-2.2.1 spec/riak/crdt/counter_spec.rb
riak-client-noenc-1.0.0 spec/riak/crdt/counter_spec.rb
riak-client-2.2.0 spec/riak/crdt/counter_spec.rb