dry-schema/spec/unit/dry/schema/trace_spec.rb

35 lines
815 B
Ruby

# frozen_string_literal: true
require "dry/schema/trace"
RSpec.describe Dry::Schema::Trace do
subject(:trace) { Dry::Schema::Trace.new }
describe "#evaluate" do
it "stores evaluated predicates" do
trace.evaluate(:filled?)
expect(trace.captures).to include(trace.filled?)
end
it "stores evaluated predicates with args" do
trace.evaluate(is_eql?: "foo")
expect(trace.captures).to include(trace.eql?("foo"))
end
end
describe "#method_missing" do
it "creates predicate objects" do
predicate = trace.eql?("foo")
expect(predicate.name).to be(:is_eql?)
expect(predicate.args).to eql(["foo"])
end
it "raises NoMethodError when appriopriate" do
expect { trace.not_here }.to raise_error(NoMethodError, /not_here/)
end
end
end