Sha256: 01d6fc08f5bc2da0dbb4be4896baa5f56224c10ef19d42027faf4d737e82d168

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

require 'ego/runner'

RSpec.describe Ego::Runner do
  context 'with empty arguments' do
    subject { described_class.new([]) }

    it 'prints usage help' do
      expect { subject.run }.to output(
        /^Usage:/
      ).to_stdout
    end
  end

  context 'with --help' do
    subject { described_class.new(['--help']) }

    it 'prints usage help' do
      expect { subject.run }.to output(
        /^Usage:/
      ).to_stdout
    end
  end

  context 'with --template' do
    subject { described_class.new(['--template']) }

    it 'prints plug-in template' do
      expect { subject.run }.to output(
        /^Ego.plugin /
      ).to_stdout
    end
  end

  context 'with --version' do
    subject { described_class.new(['--version']) }

    it 'prints gem version' do
      expect { subject.run }.to output(
        "ego v#{Ego::VERSION}\n"
      ).to_stdout
    end
  end

  context 'with invalid arguments' do
    subject { described_class.new(['--invalid-flag']) }

    it 'prints usage error and help' do
      expect { subject.run }.to raise_exception(SystemExit).and output(
        /^invalid option:/
      ).to_stderr.and output(
        /^Usage:/
      ).to_stdout
    end
  end

  context 'with simple query' do
    subject { described_class.new(['--no-plugins', 'echo hello']) }

    it 'prints a response' do
      expect { subject.run }.to output(
        /hello/
      ).to_stdout
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ego-0.6.0 spec/ego/runner_spec.rb