status-im/status-go

View on GitHub
logutils/zap_adapter_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package logutils

import (
    "bytes"
    "errors"
    "testing"

    "github.com/stretchr/testify/require"
    "go.uber.org/zap"

    "github.com/ethereum/go-ethereum/log"
)

func TestNewZapAdapter(t *testing.T) {
    buf := bytes.NewBuffer(nil)
    logger := log.New()
    handler := log.StreamHandler(buf, log.LogfmtFormat())
    logger.SetHandler(handler)

    cfg := zap.NewDevelopmentConfig()
    adapter := NewZapAdapter(logger, cfg.Level)

    zapLogger := zap.New(adapter)

    buf.Reset()
    zapLogger.
        With(zap.Error(errors.New("some error"))).
        Error("some message with error level")
    require.Contains(t, buf.String(), `lvl=eror msg="some message with error level" error="some error`)

    buf.Reset()
    zapLogger.
        With(zap.Int("counter", 100)).
        Info("some message with param", zap.String("another-field", "another-value"))
    require.Contains(t, buf.String(), `lvl=info msg="some message with param" counter=100 another-field=another-value`)

    buf.Reset()
    zapLogger.
        With(zap.Namespace("some-namespace")).
        With(zap.String("site", "SomeSite")).
        Info("some message with param")
    require.Contains(t, buf.String(), `lvl=info msg="some message with param" namespace=some-namespace site=SomeSite`)
}

func TestNewZapLoggerWithAdapter(t *testing.T) {
    buf := bytes.NewBuffer(nil)
    logger := log.New()
    handler := log.StreamHandler(buf, log.LogfmtFormat())
    logger.SetHandler(handler)

    zapLogger, err := NewZapLoggerWithAdapter(logger)
    require.NoError(t, err)

    buf.Reset()
    zapLogger.
        With(zap.Error(errors.New("some error"))).
        Error("some message with error level")
    require.Contains(t, buf.String(), `lvl=eror msg="some message with error level" error="some error`)
}

func TestZapLoggerTerminalFormat(t *testing.T) {
    buf := bytes.NewBuffer(nil)
    logger := log.New()
    handler := log.StreamHandler(buf, log.TerminalFormat(false))
    logger.SetHandler(handler)

    zapLogger, err := NewZapLoggerWithAdapter(logger)
    require.NoError(t, err)

    zapLogger.Info("some message with error level")
    require.Contains(t, buf.String(), `logutils/zap_adapter_test.go:70`)
}