Sha256: 76fb5ca2827a8ebf599beb6872a8d5b0a3ab098e4bfc6458d4db6b97643e3a95

Contents?: true

Size: 1.96 KB

Versions: 22

Compression:

Stored size: 1.96 KB

Contents

require 'spec_helper'

module Apipie::Validator
  describe ArrayValidator do

    let(:param_desc) { double(:param_desc) }

    context "with no constraint" do
      let(:validator) { ArrayValidator.new(param_desc, Array) }
      it "accepts any array" do
        expect(validator.validate([42, 'string', true])).to eq(true)
      end

      it "accepts empty array" do
        expect(validator.validate([])).to eq(true)
        expect(validator.validate(nil)).to eq(true)
      end

      it "does not accepts non array" do
        expect(validator.validate(42)).to eq(false)
        expect(validator.validate(true)).to eq(false)
        expect(validator.validate('string')).to eq(false)
      end
    end

    context "with a constraint on items type" do
      let(:validator) { ArrayValidator.new(param_desc, Array, :of => String) }

      it "accepts array of specified type" do
        expect(validator.validate(['string1', 'string2'])).to eq(true)
      end

      it "accepts empty array" do
        expect(validator.validate([])).to eq(true)
      end

      it "does not accepts array with other types" do
        expect(validator.validate(['string1', true])).to eq(false)
      end
    end

    context "with a constraint on items value" do
      let(:validator) { ArrayValidator.new(param_desc, Array, :in => [42, 'string', true]) }

      it "accepts array of valid values" do
        expect(validator.validate([42, 'string'])).to eq(true)
      end

      it "accepts empty array" do
        expect(validator.validate([])).to eq(true)
      end

      it "does not accepts array with invalid values" do
        expect(validator.validate([42, 'string', 'foo'])).to eq(false)
      end

      it "accepts a proc as list of valid values" do
        validator = ArrayValidator.new(param_desc, Array, :in => lambda { [42, 'string', true] })
        expect(validator.validate([42, 'string'])).to eq(true)
        expect(validator.validate([42, 'string', 'foo'])).to eq(false)
      end
    end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
apipie-rails-0.5.9 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.8 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.7 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.6 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.5 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.4 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.3 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.2 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.1 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.5.0 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.4.0 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.7 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.6 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.5 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.4 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.3 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.2 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.1 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.3.0 spec/lib/validators/array_validator_spec.rb
apipie-rails-0.2.6 spec/lib/validators/array_validator_spec.rb