Sha256: 60f7e1e2ab9a6efd94b25933ba8ce0a0bce9496f20d402cbde58ac006067ad68

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

# encoding: utf-8

require 'spec_helper'

RSpec.describe Pastel::Color, '.decorate' do
  let(:string) { 'string' }

  subject(:color) { described_class.new(enabled: true) }

  it "doesn't output styling when disabled" do
    color = described_class.new(enabled: false)
    expect(color.decorate('foo', :red)).to eq('foo')
  end

  it "doesn't apply styling to empty string" do
    expect(color.decorate('')).to eq('')
  end

  it 'applies green text to string' do
    expect(color.decorate(string, :green)).to eq("\e[32m#{string}\e[0m")
  end

  it 'applies red text background to string' do
    expect(color.decorate(string, :on_red)).to eq("\e[41m#{string}\e[0m")
  end

  it 'applies style and color to string' do
    expect(color.decorate(string, :bold, :green)).to eq("\e[1;32m#{string}\e[0m")
  end

  it 'applies style, color and background to string' do
    text = color.decorate(string, :bold, :green, :on_blue)
    expect(text).to eq("\e[1;32;44m#{string}\e[0m")
  end

  it "applies styles to nested text" do
    decorated = color.decorate(string + color.decorate(string, :red) + string, :green)
    expect(decorated).to eq("\e[32m#{string}\e[31m#{string}\e[32m#{string}\e[0m")
  end

  it "decorates multiline string as regular by default" do
    string = "foo\nbar\nbaz"
    expect(color.decorate(string, :red)).to eq("\e[31mfoo\nbar\nbaz\e[0m")
  end

  it "allows to decorate each line separately" do
    string = "foo\nbar\nbaz"
    color = described_class.new(enabled: true, eachline: "\n")
    expect(color.decorate(string, :red)).to eq([
      "\e[31mfoo\e[0m",
      "\e[31mbar\e[0m",
      "\e[31mbaz\e[0m"
    ].join("\n"))
  end

  it 'errors for unknown color' do
    expect {
      color.decorate(string, :crimson)
    }.to raise_error(Pastel::InvalidAttributeNameError)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pastel-0.5.1 spec/unit/color/decorate_spec.rb
pastel-0.5.0 spec/unit/color/decorate_spec.rb