Sha256: 7f1531d26a36cea0c47a7ed3644a810d058a28c579cbe69bdb095b95f31620a5

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

require 'spec_helper'

describe EqualityValidator do
  subject(:model) { klass.new }

  describe do
    let(:klass) do
      Class.new do
        include ActiveModel::Validations
        attr_accessor :origin, :destination, :airline
        validates :origin, equality: { to: 'MOW' }
      end
    end

    it { is_expected.to allow_value('MOW').for(:origin) }
    it { is_expected.not_to allow_value('NYC').for(:origin) }
  end

  describe do
    let(:klass) do
      Class.new do
        include ActiveModel::Validations
        attr_accessor :origin, :destination, :airline
        validates :origin, equality: { to: ->(o) { o.destination } }
      end
    end

    specify 'both fields have same values' do
      model.origin = model.destination = 'MOW'
      expect(model).to be_valid
    end

    specify 'fields have different value' do
      model.origin = 'NYC'
      model.destination = 'MOW'
      expect(model).to be_invalid
    end

    specify 'first field has value, the second is nil' do
      model.origin = 'NYC'
      model.destination = nil
      expect(model).to be_invalid
    end

    specify 'first field is nil, the second has value' do
      model.origin = nil
      model.destination = 'NYC'
      expect(model).to be_invalid
    end

    specify 'both fields are nil' do
      model.origin = model.destination = nil
      expect(model).to be_valid
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
missing_validators-2.3.0 spec/validators/equality_validator_spec.rb
missing_validators-2.2.0 spec/validators/equality_validator_spec.rb
missing_validators-2.1.0 spec/validators/equality_validator_spec.rb