Sha256: ba92a5407b81f139a6824d89dafc3a7cf0f2e95586634acc5d14a0a694353f04

Contents?: true

Size: 1.65 KB

Versions: 1

Compression:

Stored size: 1.65 KB

Contents

RSpec.shared_examples 'a configurable class' do
  describe Dry::Configurable do
    describe 'settings' do
      context 'without default value' do
        before do
          klass.setting :dsn
        end

        it 'returns nil' do
          expect(klass.config.dsn).to be(nil)
        end
      end

      context 'with default value' do
        before do
          klass.setting :dsn, 'sqlite:memory'
        end

        it 'returns the default value' do
          expect(klass.config.dsn).to eq('sqlite:memory')
        end
      end

      context 'nested configuration' do
        before do
          klass.setting :database do
            setting :dsn, 'sqlite:memory'
          end
        end

        it 'returns the default value' do
          expect(klass.config.database.dsn).to eq('sqlite:memory')
        end
      end
    end

    describe 'configuration' do
      context 'without nesting' do
        before do
          klass.setting :dsn, 'sqlite:memory'
        end

        before do
          klass.configure do |config|
            config.dsn = 'jdbc:sqlite:memory'
          end
        end

        it 'updates the config value' do
          expect(klass.config.dsn).to eq('jdbc:sqlite:memory')
        end
      end

      context 'with nesting' do
        before do
          klass.setting :database do
            setting :dsn, 'sqlite:memory'
          end
        end

        before do
          klass.configure do |config|
            config.database.dsn = 'jdbc:sqlite:memory'
          end
        end

        it 'updates the config value' do
          expect(klass.config.database.dsn).to eq('jdbc:sqlite:memory')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dry-configurable-0.1.2 spec/support/shared_examples/configurable.rb