1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
# frozen_string_literal: true
RSpec.describe TTY::Prompt::Evaluator do
it "checks chained validation procs" do
question = double(:question)
evaluator = TTY::Prompt::Evaluator.new(question)
evaluator.check { |_quest, value|
if value < 21
[value, ["#{value} is not bigger than 21"]]
else
value
end
}
evaluator.check { |_quest, value|
if value < 42
[value, ["#{value} is not bigger than 42"]]
else
value
end
}
answer = evaluator.call(2)
expect(answer.errors.count).to eq(2)
expect(answer.value).to eq(2)
expect(answer.success?).to eq(false)
expect(answer.failure?).to eq(true)
end
it "checks chained validation objects" do
question = double(:question)
evaluator = TTY::Prompt::Evaluator.new(question)
LessThan21 = Class.new do
def self.call(_quest, value)
if value < 21
[value, ["#{value} is not bigger than 21"]]
else
value
end
end
end
LessThan42 = Class.new do
def self.call(_quest, value)
if value < 42
[value, ["#{value} is not bigger than 42"]]
else
value
end
end
end
evaluator.check(LessThan21)
evaluator.check(LessThan42)
answer = evaluator.call(2)
expect(answer.errors).to match_array([
"2 is not bigger than 21",
"2 is not bigger than 42"
])
expect(answer.value).to eq(2)
expect(answer.success?).to eq(false)
expect(answer.failure?).to eq(true)
end
end
|