Sha256: daa080142edb823f001b4b2a8ee3a1dbdb585704a053b7e591536b0f7bdb047d

Contents?: true

Size: 2 KB

Versions: 1

Compression:

Stored size: 2 KB

Contents

# encoding: utf-8

require 'spec_helper'
require 'cliprompt'
require 'cliprompt/optionset'

describe Cliprompt do
  Given(:input) { StringIO.new }
  Given(:output) { StringIO.new }
  Given { subject.setio(input, output) }

  describe '.ask' do
    Given(:question) { 'wazza?' }
    Given(:answer) { 'xxx' }
    context 'without default,' do
      When(:args) { }
      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 a default,' do
      When(:default) { 'ooo' }
      When(:args) { { default: default } }
      When { input.stub(:gets).and_return answer }
      Then { expect(subject.ask(question, args)).to eq answer }
      And  { expect(output.string).to eq "#{question} [#{default}] " }
    end
    context 'with an optionset,' do
      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
  end

  describe '.guess' do
    Given(:question) { 'wazza?' }
    Given(:env_var) { 'SOMEVAR' }
    Given(:args) { }
    context 'when env var is provided,' do
      When(:env_value) { 'xxx' }
      When { ENV[env_var] = env_value }
      Then { expect(subject.guess(env_var, question, args)).to eq env_value }
      And  { ENV.delete(env_var) }
    end
    context 'when env var is not provided,' do
      When(:answer) { 'ooo' }
      When { input.stub(:gets).and_return answer }
      Then { expect(subject.guess(env_var, question, args)).to eq answer }
      And  { expect(output.string).to eq "#{question}  " }
    end
  end

  describe '.say' do
    Given(:msg) { "hah" }
    When { subject.say msg }
    Then { expect(output.string).to eq "#{msg}\n" }
  end

  describe '.shout' do
    Given(:msg) { "hah" }
    When { subject.shout msg }
    Then { expect(output.string).to eq "#{Paint[msg, :bold, :red ]}\n" }
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cliprompt-0.0.3 spec/lib/cliprompt_spec.rb