spec/lib/redis_spec.rb in io_shuten-0.0.3.dev1 vs spec/lib/redis_spec.rb in io_shuten-0.1.0.dev6

- old
+ new

@@ -1,7 +1,109 @@ # encoding: utf-8 require File.expand_path("../../spec_helper.rb", __FILE__) -include IO_shuten -describe Redis do +IOR = IO_shuten::Redis + +describe IO_shuten::Redis do it { IO_shuten::Redis.should inherit_from(IO_shuten::Base) } + + describe "Class Methods" do + + describe :new do + + before do + IOR.purge_instances! + end + + it "creates a node with KeyValue as :single" do + ior = IOR.new(:test, :key_value, :single) + ior.backend_spec.should == [:key_value,:single] + end + + it "creates a node with KeyValue as :collection" do + ior = IOR.new(:test, :key_value, :collection) + ior.backend_spec.should == [:key_value,:collection] + end + + it "creates a node with PubSub as :publisher" do + ior = IOR.new(:test, :pub_sub, :publisher) + ior.backend_spec.should == [:pub_sub,:publisher] + end + + it "creates a node with PubSub as :subscriber" do + ior = IOR.new(:test, :pub_sub, :subscriber) + ior.backend_spec.should == [:pub_sub,:subscriber] + end + + it "fails, if backend is not known" do + expect { IOR.new(:will_fail, :unknown_backend) }.to raise_error(ArgumentError) + end + + it "fails, if type is not known" do + expect { IOR.new(:will_fail, :key_value, :unknown_type) }.to raise_error(ArgumentError) + end + + end + + describe "Instance Methods" do + + before do + IOR.purge_instances! + IOR.redis = Redis::Namespace.new(:instances, :redis => REDIS) + end + + after do + IOR.redis_clear! + end + + describe "KeyValue backend" do + + describe "Single type" do + + it "writes data" do + data = %w[first_entry more_data last_entry] + ior = IOR.new(:kvs_test_write, :key_value, :single) + data.each{ |line| ior.write line } + + IOR.redis.lrange(:kvs_test_write,0,-1).should == data + end + + it "reads data" do + data = %w[first_entry more_data last_entry] + ior = IOR.new(:kvs_test_read, :key_value, :single) + data.each{ |line| ior.write line } + + ior.read.should == data.join + end + + end + + describe "Collection type" do + + it "writes data" do + data = %w[first_entry more_data last_entry] + ior = IOR.new(:kvc_test_write, :key_value, :collection) + data.each{ |line| ior.write line } + + keys = IOR.redis.keys("kvc_test_write:*").sort + res = keys.inject([]){|m,k|m << IOR.redis.get(k); m} + + res.should == data + end + + it "reads data" do + data = %w[first_entry more_data last_entry] + ior = IOR.new(:kvc_test_read, :key_value, :collection) + data.each{ |line| ior.write line } + + ior.read.should == data.join + end + + end + + end + + end + + end + end