Sha256: d269ab2b05f83c2685d3e4a24d307f7a520b5622832eb951888c47edb80dba9a

Contents?: true

Size: 1.92 KB

Versions: 4

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

RSpec.describe SealinkParamValidation::Helper do
  context '.generate_error_message' do
    let(:errors) { schema.call(params) }
    subject { SealinkParamValidation::Helper.generate_error_message(errors) }

    context 'flat schema' do
      let(:schema) {
        Dry::Schema.Params {
          required(:id).filled(:integer)
          required(:name).filled(:string)
        }
      }
      let(:params) { {} }
      it { is_expected.to eq 'id is missing, name is missing' }
    end

    context 'nested schema' do
      let(:schema) {
        Dry::Schema.Params {
          required(:id).filled(:integer)
          required(:type).hash {
            required(:id).filled(:integer)
          }
        }
      }
      let(:params) { { type: {} } }
      it { is_expected.to eq 'id is missing, id is missing' }
    end

    context 'arrays' do
      let(:schema) {
        Dry::Schema.Params {
          required(:ids).array(:integer)
        }
      }
      let(:params) { { ids: [ 1, 'a', 'b' ] } }
      it { is_expected.to eq '1 must be an integer, 2 must be an integer' }
    end
  end

  context '.generate_humanized_error_message' do
    let(:errors) { schema.call(params) }
    subject { SealinkParamValidation::Helper.generate_humanized_error_message(errors) }

    context 'flat schema' do
      let(:schema) {
        Dry::Schema.Params {
          required(:id).filled(:integer)
          required(:name).filled(:string)
        }
      }
      let(:params) { {} }
      it { is_expected.to eq 'Id is missing and Name is missing' }
    end

    context 'nested schema' do
      let(:schema) {
        Dry::Schema.Params {
          required(:id).filled(:integer)
          required(:type).hash {
            required(:id).filled(:integer)
          }
        }
      }
      let(:params) { { type: {} } }
      it { is_expected.to eq 'Id is missing and Type.Id is missing' }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sealink-param-validation-0.4.0 spec/helper_spec.rb
sealink-param-validation-0.3.0 spec/helper_spec.rb
sealink-param-validation-0.2.0 spec/helper_spec.rb
sealink-param-validation-0.1.0 spec/helper_spec.rb