Sha256: b5eb4161d7c04c9a9a4ccf5a5eaa9a602ddaa95318a51aa589330e00a7fdf456

Contents?: true

Size: 803 Bytes

Versions: 5

Compression:

Stored size: 803 Bytes

Contents

require 'dry/logic/rule'

RSpec.describe Dry::Logic::Rule::Set do
  include_context 'predicates'

  subject(:rule) do
    Dry::Logic::Rule::Set.new(:address, [is_string, min_size.curry(6)])
  end

  let(:is_string) { Dry::Logic::Rule::Value.new(:name, str?) }
  let(:min_size) { Dry::Logic::Rule::Value.new(:name, min_size?) }

  describe '#call' do
    it 'applies its rules to the input' do
      expect(rule.('Address')).to be_success
      expect(rule.('Addr')).to be_failure
    end
  end

  describe '#to_ary' do
    it 'returns an array representation' do
      expect(rule).to match_array([
        :set, [
          :address, [
            [:val, [:name, [:predicate, [:str?, []]]]],
            [:val, [:name, [:predicate, [:min_size?, [6]]]]]
          ]
        ]
      ])
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dry-logic-0.1.4 spec/unit/rule/set_spec.rb
dry-logic-0.1.3 spec/unit/rule/set_spec.rb
dry-logic-0.1.2 spec/unit/rule/set_spec.rb
dry-logic-0.1.1 spec/unit/rule/set_spec.rb
dry-logic-0.1.0 spec/unit/rule/set_spec.rb