Files
cartodb/services/data-repository/spec/unit/backend/memory_spec.rb
2020-06-15 10:58:47 +08:00

82 lines
1.9 KiB
Ruby

require 'minitest/autorun'
require 'ostruct'
require_relative '../../spec_helper'
require_relative '../../../repository'
require_relative '../../../backend/memory'
include DataRepository
describe Repository do
before do
@repository = Repository.new(Backend::Memory.new)
end
describe '#store' do
it 'persists a data structure in the passed key' do
data = { id: 5 }
key = data.fetch(:id)
@repository.keys.wont_include key.to_s
@repository.store(key, data)
@repository.keys.must_include key.to_s
end
it 'stringifies symbols in the persisted data structure' do
data = { id: 5 }
key = data.fetch(:id)
@repository.store(key, data)
retrieved_data = @repository.fetch(key)
retrieved_data.keys.wont_include :id
retrieved_data.keys.must_include 'id'
end
end #store
describe '#fetch' do
it 'retrieves a data structure from a key' do
data = { id: 5 }
key = data.fetch(:id)
@repository.store(key, data)
retrieved_data = @repository.fetch(key.to_s)
retrieved_data.fetch('id').must_equal data.fetch(:id)
end
end #fetch
describe '#delete' do
it 'deletes a key' do
data = { id: 5 }
key = data.fetch(:id)
@repository.store(key, data)
@repository.fetch(key.to_s).wont_be_nil
@repository.delete(key)
lambda { @repository.fetch(key.to_s) }.must_raise KeyError
end
end #delete
describe '#keys' do
it 'returns all stored keys, stringified' do
data = { id: 5 }
key = data.fetch(:id)
@repository.store(key, data)
@repository.keys.must_equal [key.to_s]
end
end #keys
describe '#exists?' do
it 'returns if key exists' do
data = { id: 5 }
key = data.fetch(:id)
@repository.exists?(key.to_s).must_equal false
@repository.store(key, data)
@repository.exists?(key.to_s).must_equal true
end
end #exists?
end # Repository