Sha256: dc7aacda160cf540865059f86d8d4834cf97d4007d2e45e123b27acddf794cfa

Contents?: true

Size: 1.82 KB

Versions: 5

Compression:

Stored size: 1.82 KB

Contents

# Copyright (C) 2011 RightScale, Inc, All Rights Reserved Worldwide.
#
# THIS PROGRAM IS CONFIDENTIAL AND PROPRIETARY TO RIGHTSCALE
# AND CONSTITUTES A VALUABLE TRADE SECRET. Any unauthorized use,
# reproduction, modification, or disclosure of this program is
# strictly prohibited. Any use of this program by an authorized
# licensee is strictly subject to the terms and conditions,
# including confidentiality obligations, set forth in the applicable
# License Agreement between RightScale.com, Inc. and
# the licensee

require File.join(File.dirname(__FILE__), 'spec_helper')

describe RightConf::Configurator do

  class TestConfigurator
    include RightConf::Configurator
    register :test
    validate_has_settings :required
    attr_reader :custom_setting
    def test_setter(value)
      @custom_setting = value
    end
  end

  class AnotherConfigurator
    include RightConf::Configurator
    register :another
  end

  before(:each) do
    @configurator = TestConfigurator.new
  end
    
  it 'should register configurators' do
    RightConf::ConfiguratorRegistry[:test].should == TestConfigurator
    RightConf::ConfiguratorRegistry[:another].should == AnotherConfigurator
  end

  it 'should have associated key' do
    TestConfigurator.key.should == :test
    AnotherConfigurator.key.should == :another
  end

  it 'should initialize configuration using meta-programming' do
    @configurator.instance_eval { test_setting 42 }
    @configurator[:test_setting].should == 42
  end

  it 'should use configurator setter if it exists' do
    @configurator.instance_eval { test_setter 43 }
    @configurator.custom_setting.should == 43
  end

  it 'should validate' do
    @configurator.validate.should =~ /^Required setting.*missing for configuration/
    @configurator.instance_eval { required 42 }
    @configurator.validate.should be_nil
  end

end



Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rconf-0.5.6 spec/configurator_spec.rb
rconf-0.5.5 spec/configurator_spec.rb
rconf-0.5.3 spec/configurator_spec.rb
rconf-0.5.1 spec/configurator_spec.rb
rconf-0.5.0 spec/configurator_spec.rb