mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-28 21:07:16 +00:00
49 lines
1.4 KiB
Ruby
49 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Spree::Preferences::Store do
|
|
before :each do
|
|
@store = Spree::Preferences::StoreInstance.new
|
|
end
|
|
|
|
it "sets and gets a key" do
|
|
@store.set :test, 1, :integer
|
|
expect(@store.exist?(:test)).to be_truthy
|
|
expect(@store.get(:test)).to eq 1
|
|
end
|
|
|
|
it "can set and get false values when cache return nil" do
|
|
@store.set :test, false, :boolean
|
|
expect(@store.get(:test)).to be_falsy
|
|
end
|
|
|
|
it "will return db value when cache is emtpy and cache the db value" do
|
|
preference = Spree::Preference.where(key: 'test').first_or_initialize
|
|
preference.value = '123'
|
|
preference.value_type = 'string'
|
|
preference.save
|
|
|
|
Rails.cache.clear
|
|
expect(@store.get(:test)).to eq '123'
|
|
expect(Rails.cache.read(:test)).to eq '123'
|
|
end
|
|
|
|
it "should return and cache fallback value when supplied" do
|
|
Rails.cache.clear
|
|
expect(@store.get(:test, false)).to be_falsy
|
|
expect(Rails.cache.read(:test)).to be_falsy
|
|
end
|
|
|
|
it "should return and cache fallback value when persistence is disabled (i.e. on bootstrap)" do
|
|
Rails.cache.clear
|
|
allow(@store).to receive_messages(should_persist?: false)
|
|
expect(@store.get(:test, true)).to be_truthy
|
|
expect(Rails.cache.read(:test)).to be_truthy
|
|
end
|
|
|
|
it "should return nil when key can't be found and fallback value is not supplied" do
|
|
expect(@store.get(:random_key)).to be_nil
|
|
end
|
|
end
|