diff --git a/lib/tty/prompt/question.rb b/lib/tty/prompt/question.rb index 4567fd45..5aca5e8c 100644 --- a/lib/tty/prompt/question.rb +++ b/lib/tty/prompt/question.rb @@ -120,7 +120,7 @@ def render_question header elsif @done header += @prompt.decorate("#{@input}", @color) - elsif default? + elsif default? && !Utils.blank?(@default) header += @prompt.decorate("(#{default})", :bright_black) + ' ' end @prompt.print(header) diff --git a/spec/unit/ask_spec.rb b/spec/unit/ask_spec.rb index f7019dba..1ad94d7b 100644 --- a/spec/unit/ask_spec.rb +++ b/spec/unit/ask_spec.rb @@ -1,6 +1,7 @@ # encoding: utf-8 RSpec.describe TTY::Prompt, '#ask' do + subject(:prompt) { TTY::TestPrompt.new } it 'asks question' do @@ -54,4 +55,32 @@ "What is your name? \e[32mPiotr\e[0m\n" ].join) end + + it "permits empty default parameter" do + prompt.input << "\r" + prompt.input.rewind + + answer = prompt.ask("What is your name?", default: '') + expect(answer).to eq('') + expect(prompt.output.string).to eq([ + "What is your name? ", + "\e[1000D\e[K\e[1A", + "\e[1000D\e[K", + "What is your name? \n" + ].join) + end + + it "permits nil default parameter" do + prompt.input << "\r" + prompt.input.rewind + + answer = prompt.ask("What is your name?", default: nil) + expect(answer).to eq(nil) + expect(prompt.output.string).to eq([ + "What is your name? ", + "\e[1000D\e[K\e[1A", + "\e[1000D\e[K", + "What is your name? \n" + ].join) + end end