spec/lib/cliprompt_spec.rb in cliprompt-0.0.3 vs spec/lib/cliprompt_spec.rb in cliprompt-0.0.4

- old
+ new

@@ -29,9 +29,33 @@ When(:args) { Cliprompt::Optionset.new() } When { input.stub(:gets).and_return answer } Then { expect(subject.ask(question, args)).to eq answer } And { expect(output.string).to eq "#{question} " } end + context 'with choices requested as a list,' do + When(:args) { { choices: ['aaa', 'bbb', 'ccc'], aslist: true } } + When { input.stub(:gets).and_return '1' } + Then { expect(subject.ask(question, args)).to eq 'bbb' } + And { expect(output.string).to eq "#{question}\n 0 aaa\n 1 bbb\n 2 ccc\n#{Cliprompt::MSG_CHOSE_A_NUMBER} " } + end + context 'with choices requested as a list with a default,' do + When(:args) { { choices: ['=aaa', 'bbb', 'ccc'], aslist: true } } + When { input.stub(:gets).and_return '' } + Then { expect(subject.ask(question, args)).to eq 'aaa' } + And { expect(output.string).to eq "#{question}\n> 0 aaa\n 1 bbb\n 2 ccc\n#{Cliprompt::MSG_CHOSE_A_NUMBER} " } + end + context 'with choices requested as a non-list despite there are many choices,' do + When(:args) { { choices: %w(aaa bbb ccc ddd eee fff), aslist: false } } + When { input.stub(:gets).and_return 'bbb' } + Then { expect(subject.ask(question, args)).to eq 'bbb' } + And { expect(output.string).to eq "#{question} (aaa / bbb / ccc / ddd / eee / fff) " } + end + context 'with a big list of choices,' do + When(:args) { %w(aaa bbb ccc ddd eee fff) } + When { input.stub(:gets).and_return '5' } + Then { expect(subject.ask(question, args)).to eq 'fff' } + And { expect(output.string).to eq "#{question}\n 0 aaa\n 1 bbb\n 2 ccc\n 3 ddd\n 4 eee\n 5 fff\n#{Cliprompt::MSG_CHOSE_A_NUMBER} " } + end end describe '.guess' do Given(:question) { 'wazza?' } Given(:env_var) { 'SOMEVAR' }