Sha256: 2d6df7167010a41782f64186bc4a73c59aabe566829c102a784735c5731fea16

Contents?: true

Size: 1.72 KB

Versions: 19

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

require 'minitest/autorun'
require 'json'
require_relative '../lib/twiglet/formatter'
require_relative '../lib/twiglet/validator'

describe Twiglet::Formatter do
  before do
    @now = -> { Time.utc(2020, 5, 11, 15, 1, 1) }
    @formatter = Twiglet::Formatter.new('petshop', now: @now, validator: Twiglet::Validator.new({}.to_json))
  end

  it 'initializes an instance of a Ruby Logger Formatter' do
    assert @formatter.is_a?(::Logger::Formatter)
  end

  it 'returns a formatted log from a string message' do
    msg = @formatter.call('warn', nil, nil, 'shop is running low on dog food')
    expected_log = {
      "ecs" => {
        "version" => '1.5.0'
      },
      "@timestamp" => '2020-05-11T15:01:01.000Z',
      "service" => {
        "name" => 'petshop'
      },
      "log" => {
        "level" => 'warn'
      },
      "message" => 'shop is running low on dog food'
    }
    assert_equal JSON.parse(msg), expected_log
  end

  it 'merges the outputs of the context provider into messages logs' do
    provider = -> { { 'request' => { 'id' => '1234567890' } } }
    formatter = Twiglet::Formatter.new(
      'petshop', now: @now, validator: Twiglet::Validator.new({}.to_json),
                 context_provider: provider
    )
    msg = formatter.call('warn', nil, nil, 'shop is running low on dog food')
    expected_log = {
      "ecs" => {
        "version" => '1.5.0'
      },
      "@timestamp" => '2020-05-11T15:01:01.000Z',
      "service" => {
        "name" => 'petshop'
      },
      "log" => {
        "level" => 'warn'
      },
      "message" => 'shop is running low on dog food',
      "request" => {
        'id' => '1234567890'
      }
    }
    assert_equal JSON.parse(msg), expected_log
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
twiglet-3.10.0 test/formatter_test.rb
twiglet-3.9.2 test/formatter_test.rb
twiglet-3.9.1 test/formatter_test.rb
twiglet-3.9.0 test/formatter_test.rb
twiglet-3.8.0 test/formatter_test.rb
twiglet-3.7.2 test/formatter_test.rb
twiglet-3.7.1 test/formatter_test.rb
twiglet-3.7.0 test/formatter_test.rb
twiglet-3.6.6 test/formatter_test.rb
twiglet-3.6.5 test/formatter_test.rb
twiglet-3.6.4 test/formatter_test.rb
twiglet-3.6.3 test/formatter_test.rb
twiglet-3.6.2 test/formatter_test.rb
twiglet-3.6.1 test/formatter_test.rb
twiglet-3.6.0 test/formatter_test.rb
twiglet-3.5.4 test/formatter_test.rb
twiglet-3.5.2 test/formatter_test.rb
twiglet-3.5.1 test/formatter_test.rb
twiglet-3.5.0 test/formatter_test.rb