lib/ree_lib/packages/ree_logger/spec/ree_logger/formatters/default_formatter_spec.rb



#frozen_string_literal = true

require 'timecop'
package_require('ree_logger/formatters/default_formatter')

RSpec.describe ReeLogger::DefaultFormatter do
  link :parse, from: :ree_datetime

  let(:formatter) { described_class.new }

  let(:info_log_event) {
    ReeLogger::LogEvent.new(
      :info,
      "Some message",
      nil,
      {}
    )
  }

  let(:error_log_event) {
    ReeLogger::LogEvent.new(
      :error,
      "Some error message",
      StandardError.new('Help me, I am error'),
      { some_error: "params" }
    )
  }

  before { Timecop.travel(parse('1605-11-05 00:00:00')) }
  after { Timecop.return }

  it { expect(formatter).to respond_to(:format) }

  it {
    expected = "[05/11/05 00:00:00] INFO: Some message"
    expect(formatter.format(info_log_event, nil)).to eq(expected)
  }

  it {
    expected = "[SomeCoolApp] [05/11/05 00:00:00] INFO: Some message"
    expect(formatter.format(info_log_event, "SomeCoolApp")).to eq(expected)
  }

  it {
    expected = "[05/11/05 00:00:00] ERROR: Some error message\nPARAMETERS: {:some_error=>\"params\"}\nEXCEPTION: StandardError (Help me, I am error)\n"
    expect(formatter.format(error_log_event, nil)).to eq(expected)
  }
end