spec/unit/container_spec.rb in dry-web-0.5.0 vs spec/unit/container_spec.rb in dry-web-0.6.0

- old
+ new

@@ -1,17 +1,83 @@ RSpec.describe "Dry::Web::Container" do - subject(:container) { Dry::Web::Container } + subject(:container) { Class.new(Dry::Web::Container) } describe "settings" do # Do some acrobatics to make the container reload a setting from scratch # and apply a new default def reload_setting_for(key) if Dry::Web::Container.instance_variables.include?(:@_config) Dry::Web::Container.remove_instance_variable(:@_config) end - Dry::Web::Container.instance_variable_get(:@_settings)[key] = nil + Dry::Web::Container.instance_variable_get(:@_settings).delete_if do |setting| + setting.name == key + end load "dry/web/container.rb" + end + + describe ".config.logger" do + it 'sets up default logger for development env' do + container.configure do |config| + config.env = :development + end + + expect(container[:logger].level).to be(Logger::DEBUG) + end + + it 'sets up default logger for non-development env' do + container.configure do |config| + config.env = :production + end + + expect(container[:logger].level).to be(Logger::ERROR) + end + + it 'allows presetting a loggert' do + container.configure do |config| + config.logger = 'my logger' + end + + expect(container[:logger]).to eql('my logger') + end + end + + describe '.config.notifications' do + it 'sets up notifications by default' do + container.configure do |config| + config.env = :development + end + + expect(container[:notifications].id).to be(container.config.name) + end + end + + describe '.config.rack_monitor' do + it 'sets up rack monitor by default' do + container.configure do |config| + config.env = :development + end + + expect(container[:rack_monitor].notifications).to be(container[:notifications]) + end + end + + describe '.config.rack_logger' do + it 'sets up rack logger by default' do + logger = spy(:logger) + + container.configure do |config| + config.env = :development + config.logger = logger + config.listeners = true + end + + payload = { a_rack: :env_hash } + + container[:rack_monitor].instrument(:start, env: payload) + + expect(logger).to have_received(:info) + end end describe ".config.env" do context "existing RACK_ENV environment variable" do before do