Run with:
$ bundle
$ bundle exec rspec tty-prompt-test.rb
# frozen_string_literal: true | |
source "https://rubygems.org" | |
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } | |
gem "tty-prompt", github: 'piotrmurach/tty-prompt' | |
gem "rspec" |
require 'tty-prompt' | |
require "tty/prompt/test" | |
class Subject | |
def prompt | |
@prompt ||= TTY::Prompt.new | |
end | |
def run | |
"#{name} #{destiny}" | |
end | |
def name | |
prompt.ask "Name:" | |
end | |
def destiny | |
prompt.select("Destiny:", %w(Scorpion Kano Jax)) | |
end | |
end | |
describe Subject do | |
let(:prompt) { TTY::Prompt::Test.new } | |
before do | |
prompt.on :keypress do |e| | |
prompt.trigger :keyup if e.value == "k" | |
prompt.trigger :keydown if e.value == "j" | |
end | |
allow(subject).to receive(:prompt).and_return prompt | |
end | |
it "works" do | |
prompt.input << "Danny" << "\n" << "j" << "\n" | |
prompt.input.rewind | |
expect(subject.run).to eq "Danny Kano" | |
end | |
it "works for sure" do | |
prompt.input << "Danny" << "\n" << "j" << "j" << "\n" | |
prompt.input.rewind | |
expect(subject.run).to eq "Danny Jax" | |
end | |
end |