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

Version Path
fortnox-api-0.5.2 spec/fortnox/api/types/examples/enum.rb
fortnox-api-0.5.1 spec/fortnox/api/types/examples/enum.rb
fortnox-api-0.5.0 spec/fortnox/api/types/examples/enum.rb
fortnox-api-0.4.0 spec/fortnox/api/types/examples/enum.rb
fortnox-api-0.3.0 spec/fortnox/api/types/examples/enum.rb
fortnox-api-0.2.0 spec/fortnox/api/types/examples/enum.rb