Sha256: fc5ac098fef7f497848fb93cd05c0d42fef0810e40f3439e04a67315aaeef104

Contents?: true

Size: 1.6 KB

Versions: 2

Compression:

Stored size: 1.6 KB

Contents

# coding: utf-8

RSpec.describe TTY::Pager::SystemPager, '#available' do
  let(:execs)   { ['less', 'more'] }

  subject(:pager) { described_class }

  it 'finds available command' do
    allow(pager).to receive(:executables).and_return(execs)
    allow(pager).to receive(:command_exists?).with('less') { true }
    allow(pager).to receive(:command_exists?).with('more') { false }
    expect(pager.available).to eql('less')
  end

  it "doesn't find command" do
    allow(pager).to receive(:executables).and_return(execs)
    allow(pager).to receive(:command_exists?) { false }
    expect(pager.available).to be_nil
  end

  it "takes precedence over other commands" do
    allow(pager).to receive(:command_exists?).with('more') { true }
    expect(pager.available('more')).to eql('more')
  end

  it "allows to query for available command" do
    allow(pager).to receive(:available).with('less') { true }
    expect(pager.available?('less')).to eq(true)
  end

  context "when given nil, blank, and whitespace commands" do
    let(:execs) { [nil, "", "   ", "less"] }

    it "does not error" do
      allow(pager).to receive(:executables).and_return(execs)
      allow(pager).to receive(:command_exists?).with('less') { true }
      expect(pager.available).to eql('less')
    end
  end

  context "when given a multi-word executable" do
    let(:execs) { ["diff-so-fancy | less --tabs=4 -RFX"] }

    it "finds the command" do
      allow(pager).to receive(:executables).and_return(execs)
      allow(pager).to receive(:command_exists?).with("diff-so-fancy") { true }
      expect(pager.available).to eql(execs.first)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tty-pager-0.9.0 spec/unit/system/available_spec.rb
tty-pager-0.8.0 spec/unit/system/available_spec.rb