Sha256: d85172c5ec2871908c088324ad76e1af92b4b196796b5ea3b1c5f1510bad5022

Contents?: true

Size: 994 Bytes

Versions: 2

Compression:

Stored size: 994 Bytes

Contents

# frozen_string_literal: true

RSpec.shared_examples 'active_model_attribute_validator' do |valid_values, invalid_values| # rubocop:disable Metrics/BlockLength
  let(:model) do
    validator = described_class.name.gsub(/Validator\z/, '').underscore
    Class.new do
      include ActiveModel::Model

      attr_accessor :the_attribute

      validates :the_attribute, validator => true, allow_nil: true
    end
  end
  let(:record) { model.new }

  { true => valid_values, false => invalid_values }.each do |valid, values|
    values.each do |value|
      context "when the_attribute is \"#{value}\"" do
        before do
          record.the_attribute = value
          record.valid?
        end

        if valid
          it { expect(record).to be_valid }
          it { expect(record.errors[:the_attribute]).to eq([]) }
        else
          it { expect(record).not_to be_valid }
          it { expect(record.errors[:the_attribute]).not_to eq([]) }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
eac_rails_gem_support-0.10.1 lib/eac_rails_gem_support/rspec/shared_examples/active_model_attribute_validator.rb
eac_rails_gem_support-0.10.0 lib/eac_rails_gem_support/rspec/shared_examples/active_model_attribute_validator.rb