Sha256: 407d218483dcf030553009107ffb2004190b66a2f2b78c6c2f9ca1532deac369

Contents?: true

Size: 1.68 KB

Versions: 1

Compression:

Stored size: 1.68 KB

Contents

require_relative '../../../../spec_helper'
require 'virtus'
require 'aequitas'
require 'aequitas/virtus_integration'

describe Aequitas::VirtusIntegration::ClassMethods do
  let(:class_under_test) do
    Class.new do
      include Virtus
      include Aequitas

      attribute :validated_attribute, Array, :length => 1..3

      self
    end
  end

  describe '.validation_rules' do
    it 'includes a Rule::Length::Range for :validated_attribute' do
      attribute_rules = class_under_test.validation_rules[:validated_attribute]
      refute_predicate attribute_rules, :empty?
      assert_instance_of Aequitas::Rule::Length::Range, attribute_rules.first
    end
  end

  describe '#valid?' do
    subject { class_under_test.new(:validated_attribute => attribute_value) }

    describe 'when empty' do
      let(:attribute_value) { [] }
      it('is not valid') { refute_predicate subject, :valid? }
    end

    describe 'when nil' do
      let(:attribute_value) { nil }
      it('is not valid') { refute_predicate subject, :valid? }
    end

    describe 'when length is at the lower bound of the range' do
      let(:attribute_value) { [1] }
      it('is valid') { assert_predicate subject, :valid? }
    end

    describe 'when length is within the range' do
      let(:attribute_value) { [1, 2] }
      it('is valid') { assert_predicate subject, :valid? }
    end

    describe 'when length is at the upper bound of the range' do
      let(:attribute_value) { [1, 2, 3] }
      it('is valid') { assert_predicate subject, :valid? }
    end

    describe 'when length is outside the range' do
      let(:attribute_value) { [1, 2, 3, 4] }
      it('is not valid') { refute_predicate subject, :valid? }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aequitas-0.0.2 spec/integration/virtus/array/length/range_spec.rb