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')