Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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