Sha256: b3a94b69d5d42a81a49d4700e41f98c997c2c7dd5a70d3c9785e6d25d8568d6e

Contents?: true

Size: 1.56 KB

Versions: 1

Compression:

Stored size: 1.56 KB

Contents

require 'spec_helper'

class Tester
  using EnsureIt if ENSURE_IT_REFINED

  def ensure_symbol(*args)
    obj.ensure_symbol(*args)
  end

  def ensure_symbol!(*args)
    obj.ensure_symbol!(*args)
  end
end

describe EnsureIt do
  shared_examples 'symbolizer' do
    it 'and returns self for symbol' do
      expect(call_for(:test)).to eq :test
    end

    it 'and converts string to symbol' do
      expect(call_for('test')).to eq :test
    end

    it 'and returns symbol if it in values' do
      expect(call_for(:test, values: %i(test me))).to eq :test
      expect(call_for('me', values: %i(test me))).to eq :me
    end

    it 'and downcases value with downcase option' do
      expect(call_for(:teST, downcase: true)).to eq :test
      expect(call_for('teST', downcase: true)).to eq :test
    end
  end

  describe '#ensure_symbol' do
    it_behaves_like 'symbolizer'
    it_behaves_like 'niller for unmet objects', except: [String, Symbol]
    it_behaves_like 'values checker', :one, :test, values: %i(one two)
    it_behaves_like 'values checker', 'one', 'test', values: %i(one two)

    it 'returns nil if value not in values option' do
      expect(call_for(:val, values: %i(test me))).to be_nil
    end
  end

  describe '#ensure_symbol!' do
    it_behaves_like 'symbolizer'
    it_behaves_like(
      'banger for unmet objects',
      except: [String, Symbol],
      message: /should be a Symbol or a String/
    )

    it 'raises error if value not in values option' do
      expect {
        call_for(:val, values: %i(test me))
      }.to raise_error EnsureIt::Error
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ensure_it-0.1.3 spec/lib/ensure_symbol_spec.rb