Sha256: 260cd548265f68ec98516e0b30ecc6ba46b794ea45837cc169bb96d289039ef5
Contents?: true
Size: 1.32 KB
Versions: 14
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true require 'spec_helper' describe Sinclair::ConfigClass do subject(:klass) do Class.new { extend Sinclair::ConfigClass } end let(:child_klass) { Class.new(klass) } let(:config) { klass.new } describe '.config_attributes' do it_behaves_like 'a config class with .config_attributes method' end describe '.add_configs' do let(:setter_block) do proc { |value| config.instance_variable_set(:@name, value) } end it_behaves_like 'a config methods builder adding config' do let(:code_block) { proc { klass.add_configs(:name) } } it 'sets nil value by default' do code_block.call expect(config.name).to be_nil end it 'adds attributes to class' do expect(&code_block).to change(klass, :config_attributes) .from([]).to(%i[name]) end end context 'when giving defaults' do it_behaves_like 'a config methods builder adding config' do let(:code_block) { proc { klass.add_configs(name: 'Bob') } } it 'sets default value' do code_block.call expect(config.name).to eq('Bob') end it 'adds attributes to class' do expect(&code_block).to change(klass, :config_attributes) .from([]).to(%i[name]) end end end end end
Version data entries
14 entries across 14 versions & 1 rubygems