diff --git a/ruby_event_store/lib/ruby_event_store.rb b/ruby_event_store/lib/ruby_event_store.rb index f57650bf2e..f7804ca979 100644 --- a/ruby_event_store/lib/ruby_event_store.rb +++ b/ruby_event_store/lib/ruby_event_store.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require_relative "ruby_event_store/configuration" require_relative "ruby_event_store/dispatcher" require_relative "ruby_event_store/subscriptions" require_relative "ruby_event_store/broker" diff --git a/ruby_event_store/lib/ruby_event_store/configuration.rb b/ruby_event_store/lib/ruby_event_store/configuration.rb new file mode 100644 index 0000000000..53714e3006 --- /dev/null +++ b/ruby_event_store/lib/ruby_event_store/configuration.rb @@ -0,0 +1,26 @@ +module RubyEventStore + class Configuration + def initialize + load_defaults(VERSION) + end + + attr_reader :loaded_defaults + attr_accessor :test + + def load_defaults(version) + self.test = "2.17.0" <= version ? "new_value" : "current_value" + @loaded_defaults = version + self + end + end + + class << self + def configuration + @configuration ||= Configuration.new + end + + def configure + yield(configuration) + end + end +end diff --git a/ruby_event_store/spec/configuration_spec.rb b/ruby_event_store/spec/configuration_spec.rb new file mode 100644 index 0000000000..19a0e9c742 --- /dev/null +++ b/ruby_event_store/spec/configuration_spec.rb @@ -0,0 +1,23 @@ +require "spec_helper" +require "ruby_event_store/configuration" + +module RubyEventStore + ::RSpec.describe Configuration do + specify { expect(RubyEventStore::Configuration.new.load_defaults("2.17.0").loaded_defaults).to eq("2.17.0") } + specify { expect(RubyEventStore::Configuration.new.loaded_defaults).to eq(RubyEventStore::VERSION) } + specify { expect(RubyEventStore::Configuration.new.test).to eq("current_value") } + specify { expect(RubyEventStore::Configuration.new.load_defaults("1.0.0").test).to eq("current_value") } + specify { expect(RubyEventStore::Configuration.new.load_defaults("2.17.0").test).to eq("new_value") } + specify { expect(RubyEventStore::Configuration.new.load_defaults("2.20.0").test).to eq("new_value") } + + specify { expect(RubyEventStore.configuration).to be_a(RubyEventStore::Configuration) } + specify do + RubyEventStore.configure do |config| + config.load_defaults("2.0.0") + config.test = "another_value" + end + expect(RubyEventStore.configuration.loaded_defaults).to eq("2.0.0") + expect(RubyEventStore.configuration.test).to eq("another_value") + end + end +end