Sha256: b9a770a2c6944b22ee79025168c2604a3f7d298046c05ae463d4faa0e6642b13

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

require 'spec_helper'
class FakeKeyValueStore
  
end


describe Roulette::Transaction do
    before do
      @kv_store = FakeKeyValueStore.new
      @key = "key"
      @args = [@key, "value"]
    end
  
    describe '#new' do
      it "keeps args, stores, and key" do
        transaction = Roulette::Transaction.new([@kv_store], *@args)
        transaction.stores.should eq([@kv_store])
        transaction.key.should eq(@key)
        transaction.args.should eq(@args)
      end
    end
    
    describe '#extract_args' do
      it "pulls out the key" do
        transaction = Roulette::Transaction.new([@kv_store], *@args)
        transaction.extract_args.should eq(@key)
      end
    end
    
    describe '#select_store' do
      it "picks a store" do
        transaction = Roulette::Transaction.new([@kv_store], *@args)
        store = transaction.send :select_store 
        store.should eq(@kv_store)
      end
      
      it "selects different stores for different keys" do
        @kv_store_deux = FakeKeyValueStore.new
        store = Roulette::Transaction.new([@kv_store, @kv_store_deux], "key").send :select_store 
        store_deux = Roulette::Transaction.new([@kv_store, @kv_store_deux], "different_key").send :select_store 
        store.should_not eq(store_deux)
      end
    end
    
    describe "#fire" do
      it "sends a method to a kv_store" do
        fired_method = :sadd
        @kv_store.should_receive(fired_method)
        transaction = Roulette::Transaction.new([@kv_store], *@args)
        transaction.fire(fired_method)
      end
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roulette-0.0.1 spec/roulette/transaction_spec.rb