Sha256: 1422466fdaf97bd0000a5435bed93452e51c443a68101b3fd7205760d41cc9df

Contents?: true

Size: 2 KB

Versions: 3

Compression:

Stored size: 2 KB

Contents

require_relative '_lib'

class Critic::Functional::ConfigatronTest < Critic::Functional::Test
  before do
    @kernel = Configatron::RootStore.new
  end

  describe 'temp' do
    before do
      @kernel.a = 'A'
      @kernel.b = 'B'
    end

    it 'allows for temporary setting of values' do
      assert_equal('A', @kernel.a)
      assert_equal('B', @kernel.b)
      @kernel.temp do
        @kernel.a = 'AA'
        @kernel.c = 'C'
        assert_equal('AA', @kernel.a)
        assert_equal('B', @kernel.b)
        assert_equal('C', @kernel.c)
      end
      assert_equal('A', @kernel.a)
      assert_equal('B', @kernel.b)
      assert_equal(false, @kernel.key?(:c))
    end

    describe 'start/end' do
      it 'allows for temporary setting of values' do
        assert_equal('A', @kernel.a)
        assert_equal('B', @kernel.b)
        @kernel.temp_start
        @kernel.a = 'AA'
        @kernel.c = 'C'
        assert_equal('AA', @kernel.a)
        assert_equal('B', @kernel.b)
        assert_equal('C', @kernel.c)
        @kernel.temp_end
        assert_equal('A', @kernel.a)
        assert_equal('B', @kernel.b)
        assert_equal(false, @kernel.key?(:c))
      end
    end
  end

  describe 'lock!' do
    before do
      @kernel.a.b.c.d = 'DD'
      @kernel.lock!
    end

    it 'raises an error when accessing non-existing values' do
      refute_nil(@kernel.a)
      refute_nil(@kernel.a.b)
      refute_nil(@kernel.a.b.c)
      assert_equal('DD', @kernel.a.b.c.d)
      assert_raises(Configatron::UndefinedKeyError) do
        @kernel.unknown
      end
    end

    it 'raises an error when trying to set a non-existing key' do
      assert_raises(Configatron::LockedError) do
        @kernel.unknown = 'known'
      end
    end
  end

  describe 'name' do
    it 'assigns an appropriate nested name' do
      name = @kernel.foo.bar.baz.to_s
      assert_equal(name, 'configatron.foo.bar.baz')
    end
  end

  describe 'puts' do
    it 'does not cause an exception' do
      puts @kernel
      puts @kernel.hi
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
configatron-4.0.3 test/functional/configatron.rb
configatron-4.0.2 test/functional/configatron.rb
configatron-4.0.1 test/functional/configatron.rb