mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
Merge pull request #9923 from mkllnk/cache-country
Cache default country for an hour
This commit is contained in:
@@ -29,12 +29,7 @@ module Spree
|
||||
delegate :name, to: :state, prefix: true, allow_nil: true
|
||||
|
||||
def self.default
|
||||
country = begin
|
||||
DefaultCountry.country
|
||||
rescue StandardError
|
||||
Spree::Country.first
|
||||
end
|
||||
new(country: country)
|
||||
new(country: DefaultCountry.country)
|
||||
end
|
||||
|
||||
def full_name
|
||||
|
||||
@@ -6,6 +6,12 @@ module Spree
|
||||
|
||||
validates :name, :iso_name, presence: true
|
||||
|
||||
def self.cached_find_by(attrs)
|
||||
Rails.cache.fetch("countries/#{attrs.hash}", expires_in: 1.hour) do
|
||||
find_by(attrs)
|
||||
end
|
||||
end
|
||||
|
||||
def <=>(other)
|
||||
name <=> other.name
|
||||
end
|
||||
|
||||
@@ -10,6 +10,6 @@ class DefaultCountry
|
||||
end
|
||||
|
||||
def self.country
|
||||
Spree::Country.find_by(iso: ENV["DEFAULT_COUNTRY_CODE"]) || Spree::Country.first
|
||||
Spree::Country.cached_find_by(iso: ENV["DEFAULT_COUNTRY_CODE"]) || Spree::Country.first
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,17 +5,6 @@
|
||||
class DefaultStockLocation
|
||||
NAME = 'default'
|
||||
|
||||
def self.create!
|
||||
country = Spree::Country.find_by(iso: ENV['DEFAULT_COUNTRY_CODE'])
|
||||
state = country.states.first
|
||||
Spree::StockLocation.create!(name: NAME, country_id: country.id, state_id: state.id,
|
||||
backorderable_default: false)
|
||||
end
|
||||
|
||||
def self.destroy_all
|
||||
Spree::StockLocation.where(name: NAME).destroy_all
|
||||
end
|
||||
|
||||
def self.find_or_create
|
||||
Spree::StockLocation.find_or_create_by(name: NAME)
|
||||
end
|
||||
|
||||
@@ -3,34 +3,6 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe DefaultStockLocation do
|
||||
describe '.create!' do
|
||||
it "names the location 'OFN default'" do
|
||||
stock_location = described_class.create!
|
||||
expect(stock_location.name).to eq('default')
|
||||
end
|
||||
|
||||
it 'sets the location in the default country' do
|
||||
default_country = Spree::Country.find_by(iso: ENV['DEFAULT_COUNTRY_CODE'])
|
||||
stock_location = described_class.create!
|
||||
expect(stock_location.country).to eq(default_country)
|
||||
end
|
||||
|
||||
it 'sets the first state in the country' do
|
||||
default_country = Spree::Country.find_by(iso: ENV['DEFAULT_COUNTRY_CODE'])
|
||||
stock_location = described_class.create!
|
||||
expect(stock_location.state).to eq(default_country.states.first)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.destroy_all' do
|
||||
it "removes all stock locations named 'default'" do
|
||||
create(:stock_location)
|
||||
|
||||
expect { described_class.destroy_all }
|
||||
.to change { Spree::StockLocation.count }.to(0)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.find_or_create' do
|
||||
context 'when a location named default already exists' do
|
||||
let!(:location) do
|
||||
|
||||
Reference in New Issue
Block a user