Sha256: 2c62ef2c365ba61cc4b221e4164730aa1014277edbeb1520d98e17b36f2772ca

Contents?: true

Size: 1.81 KB

Versions: 6

Compression:

Stored size: 1.81 KB

Contents

require 'spec_helper'

require 'sqlite3'

describe Picky::Backends::SQLite::Value do

  context 'hash-based indexes' do
    let(:db) { described_class.new 'spec/temp/some/other/cache/path/to/file' }

    describe 'dump' do
      it 'forwards to the given hash' do
        hash = stub :hash

        db.should_receive(:dump_sqlite).once.with hash

        db.dump hash
      end
    end

    describe 'dump_sqlite' do
      let(:client) { stub :client }
      before(:each) do
        db.stub! :db => client
      end
      it 'initializes the client' do
        client.stub! :execute

        db.should_receive(:db).exactly(4).times.with

        db.dump_sqlite Hash.new
      end
      it 'executes something' do
        db.stub! :lazily_initialize_client

        client.should_receive(:execute).at_least(1).times

        db.dump_sqlite Hash.new
      end
      it 'inserts keys and values' do
        # db.stub! :db
        client.stub! :execute # We only want to test the insert statements.

        client.should_receive(:execute).once.with 'insert into key_value values (?,?)', 'a', '[1,2,3]'
        client.should_receive(:execute).once.with 'insert into key_value values (?,?)', 'b', '[4,5,6]'

        db.dump_sqlite :a => [1,2,3], :b => [4,5,6]
      end
    end

    describe 'load' do
      it 'returns a copy of itself' do
        db.load.should == db
      end
    end

    describe 'empty' do
      it 'returns the container that is used for indexing' do
        db.empty.should == {}
      end
    end

    describe 'initial' do
      it 'is correct' do
        db.initial.should == {}
      end
    end

    describe 'to_s' do
      it 'returns the cache path with the default file extension' do
        db.to_s.should == 'Picky::Backends::SQLite::Value(spec/temp/some/other/cache/path/to/file.sqlite3)'
      end
    end
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
picky-4.19.4 spec/lib/backends/sqlite/value_spec.rb
picky-4.19.3 spec/lib/backends/sqlite/value_spec.rb
picky-4.19.2 spec/lib/backends/sqlite/value_spec.rb
picky-4.19.1 spec/lib/backends/sqlite/value_spec.rb
picky-4.19.0 spec/lib/backends/sqlite/value_spec.rb
picky-4.18.0 spec/lib/backends/sqlite/value_spec.rb