package logging

import (
	"context"

	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
)

var _ = Describe("context", func() {
	var (
		ctx    context.Context
		logger Logger
	)

	BeforeEach(func() {
		ctx = context.TODO()
		logger = NewNopLogger()
	})

	Describe("NewContext", func() {
		It("should return new context with value", func() {
			cctx := NewContext(ctx, logger)
			Expect(cctx.Value(contextKey{})).Should(Equal(logger))
		})
	})

	Describe("FromContext", func() {
		It("should return logger in context", func() {
			cctx := NewContext(ctx, logger)
			Expect(FromContext(cctx)).Should(Equal(logger))
		})

		It("should return default logger if no logger associated", func() {
			cctx := context.TODO()
			Expect(FromContext(cctx)).Should(Equal(defaultLogger))
		})
	})

	Describe("SetDefaultLogger", func() {
		It("should set", func() {
			anotherLogger := NewNopLogger()
			SetDefaultLogger(anotherLogger)

			Expect(defaultLogger).Should(Equal(anotherLogger))
		})
	})
})
