Skip to content

Commit

Permalink
Merge pull request #2984 from projectblacklight/backport-2950
Browse files Browse the repository at this point in the history
Backport #2950
  • Loading branch information
jcoyne authored Feb 6, 2023
2 parents 00d22b2 + 158bf77 commit 6381931
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 2 deletions.
26 changes: 24 additions & 2 deletions lib/blacklight/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,36 @@ class Configuration < OpenStructWithHashAccess
autoload :ShowField
end

class_attribute :default_values, default: {}

# Set up Blacklight::Configuration.default_values to contain the basic, required Blacklight fields
class << self
def property(key, default: nil)
default_values[key] = default
end

def default_values
@default_values ||= {}
def default_configuration(&block)
@default_configurations ||= []

if block
@default_configurations << block

block.call if @default_configuration_initialized
end

@default_configurations
end

def initialize_default_configuration
@default_configurations&.map(&:call)
@default_configuration_initialized = true
end

def initialized_default_configuration?
@default_configuration_initialized
end
end

# === Search request configuration

# @!attribute http_method
Expand Down Expand Up @@ -357,6 +377,8 @@ def default_per_page
define_field_access :email_field, Blacklight::Configuration::DisplayField

def initialize(hash = {})
self.class.initialize_default_configuration unless self.class.initialized_default_configuration?

super(self.class.default_values.deep_dup.merge(hash))
yield(self) if block_given?

Expand Down
4 changes: 4 additions & 0 deletions lib/blacklight/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ class Engine < Rails::Engine
end
end

config.after_initialize do
Blacklight::Configuration.initialize_default_configuration
end

# This makes our rake tasks visible.
rake_tasks do
Dir.chdir(File.expand_path(File.join(File.dirname(__FILE__), '..'))) do
Expand Down
22 changes: 22 additions & 0 deletions spec/models/blacklight/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -723,4 +723,26 @@
expect { config.view.a = '123' }.to raise_error(FrozenError)
end
end

describe '.default_configuration' do
it 'adds additional default configuration properties' do
Blacklight::Configuration.default_configuration do
Blacklight::Configuration.default_values[:a] = '123'
end

Blacklight::Configuration.default_configuration do
Blacklight::Configuration.default_values[:b] = 'abc'
end

expect(Blacklight::Configuration.default_values[:a]).to eq '123'
expect(Blacklight::Configuration.default_values[:b]).to eq 'abc'
ensure
# reset the default configuration
Blacklight::Configuration.default_values.delete(:a)
Blacklight::Configuration.default_values.delete(:b)

Blacklight::Configuration.default_configuration.delete_at(1)
Blacklight::Configuration.default_configuration.delete_at(2)
end
end
end

0 comments on commit 6381931

Please sign in to comment.