spec/lib/sinclair/caster_spec.rb in sinclair-1.16.1 vs spec/lib/sinclair/caster_spec.rb in sinclair-1.16.2

- old
+ new

@@ -4,11 +4,32 @@ describe Sinclair::Caster do subject(:caster) { caster_class.new(&method_name) } let(:caster_class) { Class.new(described_class) } + let(:value) { values.sample } + let(:values) do + [Random.rand, 'some string', { key: 10 }, Object.new, Class.new, [2, 3]] + end - describe '.cast' do + describe '#cast' do + context 'when no block is given' do + subject(:caster) { caster_class.new } + + context 'when no options are given' do + it 'returns the value' do + expect(caster.cast(value)).to be(value) + end + end + + context 'when options are given' do + it 'returns the value' do + expect(caster.cast(value, key: :value)) + .to be(value) + end + end + end + context 'when no options are given and the block accepts none' do let(:method_name) { :to_s } it 'uses the block to transform the value' do expect(caster.cast(10)).to eq('10')