Sha256: b5daf631e62b3beeeeda9c0fdc429f0ed6d270165450eaf0e0114ba79be5da47

Contents?: true

Size: 1.97 KB

Versions: 9

Compression:

Stored size: 1.97 KB

Contents

# encoding: utf-8
require 'spec_helper'

describe Filegen::Data do
  context '#instance_binding' do
    it 'let you variables' do
      source = double('DataSource')
      expect(source).to receive(:fetch).with('MY_NAME').and_return('Karl')

      data = Filegen::Data.new(source)
      # rubocop:disable Eval
      result = eval('lookup("MY_NAME")', data.instance_binding)
      # rubocop:enable Eval
      expect(result).to eq('Karl')
    end
  end

  context '#lookup' do
    it 'provides access to variables' do
      source = double('DataSource')
      expect(source).to receive(:fetch).with('MY_NAME').and_return('Karl')

      data = Filegen::Data.new(source)
      expect(data.lookup('MY_NAME')).to eq('Karl')
    end

    it 'supports multiple data sources: first has match' do
      source1 = double('DataSource1')
      expect(source1).to receive(:fetch).with('MY_NAME').and_return('Egon')

      source2 = double('DataSource2')
      expect(source2).not_to receive(:fetch)

      data = Filegen::Data.new([source1, source2])
      expect(data.lookup('MY_NAME')).to eq('Egon')
    end

    it 'supports multiple data sources: last has match' do
      source1 = double('DataSource1')
      expect(source1).to receive(:fetch).with('MY_NAME').and_return(nil)

      source2 = double('DataSource2')
      expect(source2).to receive(:fetch).with('MY_NAME').and_return('Egon')

      data = Filegen::Data.new([source1, source2])
      expect(data.lookup('MY_NAME')).to eq('Egon')
    end

    it 'returns "" if none matches' do
      source1 = double('DataSource1')
      expect(source1).to receive(:fetch).with('MY_NAME').and_return(nil)

      data = Filegen::Data.new(source1)
      expect(data.lookup('MY_NAME')).to eq('')
    end

    it 'let you return a default value' do
      source1 = double('DataSource1')
      expect(source1).to receive(:fetch).with('MY_NAME').and_return(nil)

      data = Filegen::Data.new(source1)
      expect(data.lookup('MY_NAME', 'abcde')).to eq('abcde')

    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
filegen-0.4.3 spec/data_spec.rb
filegen-0.4.1 spec/data_spec.rb
filegen-0.4.0 spec/data_spec.rb
filegen-0.3.1 spec/data_spec.rb
filegen-0.3.0 spec/data_spec.rb
filegen-0.2.3 spec/data_spec.rb
filegen-0.2.2 spec/data_spec.rb
filegen-0.2.1 spec/data_spec.rb
filegen-0.2.0 spec/data_spec.rb