Sha256: 00c1facbe94b53307ff2d68f83b6bca770fed404c126ecee7657307556952258
Contents?: true
Size: 1.34 KB
Versions: 6
Compression:
Stored size: 1.34 KB
Contents
require 'fortnox/api/types/examples/types' shared_examples_for 'enum' do |name, values, auto_crop: false| describe name do let( :klass ){ Fortnox::API::Types.const_get(name) } context 'created with nil' do subject{ klass[ nil ] } it{ is_expected.to be_nil } end context 'created with' do subject{ klass[ input ] } let( :enum_value ){ Fortnox::API::Types.const_get(values).values.sample } context 'a random member from then enum' do let(:input){ enum_value } it{ is_expected.to eq enum_value } end context 'a symoblised, random member from the enum' do let( :input ){ enum_value.to_sym } it{ is_expected.to eq enum_value } end context 'a lower case, random member from the enum' do let( :input ){ enum_value.downcase } it{ is_expected.to eq enum_value } end context 'a string that starts like a random member from the enum' do let( :input ){ enum_value.downcase + 'more string' } if auto_crop it{ is_expected.to eq enum_value } else subject{ ->{ klass[ input ] } } it{ is_expected.to raise_error(Dry::Types::ConstraintError) } end end end context 'created with invalid input' do include_examples 'raises ConstraintError', 'r4nd0m' end end end
Version data entries
6 entries across 6 versions & 1 rubygems