# frozen_string_literal: true

require 'spec_helper'

describe Mina::Helpers::Output do
  let(:dummy_class) { Class.new { include Mina::Helpers::Output } }
  let(:helper) { dummy_class.new }

  describe '#print_line' do
    it 'prints normally' do
      expect { helper.print_line('ls -al') }.to output("       ls -al\n").to_stdout
    end

    it 'prints comment' do
      expect { helper.print_line('-> ls -al') }.to output("\e[32m----->\e[0m ls -al\n").to_stdout
    end

    it 'prints error' do
      expect { helper.print_line('! ls -al') }.to output(" \e[33m!\e[0m     \e[31mls -al\e[0m\n").to_stdout
    end

    it 'prints command' do
      expect { helper.print_line('$ ls -al') }.to output("       \e[36m$\e[0m \e[36mls -al\e[0m\n").to_stdout
    end
  end

  describe '#print_stderr' do
    it 'prints normally when the message is formatted by assets precompile' do
      expect { helper.print_stderr('I, [ ls -al') }.to output("       I, [ ls -al\n").to_stdout
    end

    it 'prints stderr' do
      expect { helper.print_stderr('ls -al') }.to output("       \e[31mls -al\e[0m\n").to_stdout
    end
  end
end
