package logging

import (
	"github.com/UpmeshLTD/urus-aio/infrastructure/config/mocks"
	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
)

var _ = Describe("zap driver", func() {
	var (
		cp     *mocks.Provider
		conf   *Config
		logger Logger
	)

	BeforeEach(func() {
		conf = &Config{}
		cp = &mocks.Provider{}
		cp.On("Get", ConfigName).Return(conf)
	})

	Describe("NewZapDriverLogger", func() {
		DescribeTable("with different configs", func(isDevelopment bool, level string) {
			conf.IsDevelopment = isDevelopment
			conf.Level = level

			logger = NewZapDriverLogger(cp)
			Expect(logger).ShouldNot(BeNil())
		},
			Entry("development, debug", true, "debug"),
			Entry("production, info", false, "info"),
			Entry("production, malformed level", false, "non-existed"),
		)
	})

	Describe("With", func() {
		It("should return", func() {
			logger = NewZapDriverLogger(cp)
			Expect(logger.With("key", "value")).ShouldNot(BeNil())
		})
	})
})
