Sha256: 8de2cd367bc8890994d7ee39cfac1fb8d876c270462c026ca50ddfe9e9b40005

Contents?: true

Size: 1.36 KB

Versions: 3

Compression:

Stored size: 1.36 KB

Contents

require 'spec_helper'

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

  describe do
    let(:klass) do
      Class.new do
        include ActiveModel::Validations
        attr_accessor :attr
        validates :attr, inequality: { to: 'invalid value' }
      end
    end

    it { is_expected.to allow_value('valid value').for(:attr) }
    it { is_expected.not_to allow_value('invalid value').for(:attr) }
  end

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

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

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

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

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

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

Version data entries

3 entries across 3 versions & 1 rubygems

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