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
|
# frozen_string_literal: true
RSpec.describe TTY::Prompt::Question, "#echo" do
subject(:prompt) { TTY::Prompt::Test.new }
it "asks with echo on" do
prompt.input << "password"
prompt.input.rewind
answer = prompt.ask("What is your password?") { |q| q.echo(true) }
expect(answer).to eql("password")
expect(prompt.output.string).to eq([
"What is your password? ",
"\e[2K\e[1GWhat is your password? p",
"\e[2K\e[1GWhat is your password? pa",
"\e[2K\e[1GWhat is your password? pas",
"\e[2K\e[1GWhat is your password? pass",
"\e[2K\e[1GWhat is your password? passw",
"\e[2K\e[1GWhat is your password? passwo",
"\e[2K\e[1GWhat is your password? passwor",
"\e[2K\e[1GWhat is your password? password",
"\e[1A\e[2K\e[1G",
"What is your password? \e[32mpassword\e[0m\n"
].join)
end
it "asks with echo off" do
prompt.input << "password"
prompt.input.rewind
answer = prompt.ask("What is your password?", echo: false)
expect(answer).to eql("password")
expect(prompt.output.string).to eq([
"What is your password? ",
"\e[1A\e[2K\e[1G",
"What is your password? \n"
].join)
end
end
|