Sha256: 8dfff5683e5696f6504a266e85c6d6b9ca6c01266909e5f4350e87ff3c0764a5

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

require 'perforated'

describe Perforated::Cache do
  after { Perforated.cache.clear }

  Language = Struct.new(:name) do
    def as_json
      { name: name }
    end

    def to_json
      as_json.to_json
    end

    def cache_key
      ['Language', name]
    end
  end

  describe '#as_json' do
    it 'constructs an automatically cached serialized' do
      ruby   = Language.new('Ruby')
      elixir = Language.new('Elixir')
      array  = [ruby, elixir]
      cache  = Perforated::Cache.new(array)

      cache.as_json.should == [{ name: 'Ruby' }, { name: 'Elixir' }]

      Perforated.cache.read('Language/Ruby/as-json').should   == ruby.as_json
      Perforated.cache.read('Language/Elixir/as-json').should == elixir.as_json
    end

    it 'does not overwrite existing key values' do
      erlang = Language.new('Erlang')
      Perforated.cache.write('Language/Erlang/as-json', { name: 'Elixir' })

      Perforated::Cache.new([erlang]).as_json

      Perforated.cache.read('Language/Erlang/as-json').should == { name: 'Elixir' }
    end
  end

  describe '#to_json' do
    it 'constructs a stringified json array of underlying values' do
      cache = Perforated::Cache.new([Language.new('Ruby'), Language.new('Elixir')])

      cache.to_json.should == %([{"name":"Ruby"},{"name":"Elixir"}])

      Perforated.cache.exist?('Language/Ruby/to-json').should   be_true
      Perforated.cache.exist?('Language/Elixir/to-json').should be_true
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
perforated-0.6.0 spec/perforated/cache_spec.rb
perforated-0.5.0 spec/perforated/cache_spec.rb