package internal

import (
	"context"
	"time"

	"golang.org/x/exp/event"
	"golang.org/x/exp/event/keys"
)

var (
	// TODO: these should be in event/keys.
	LevelKey = keys.Int("level")
	NameKey  = keys.String("name")
	ErrorKey = keys.Value("error")
)

type TestHandler struct {
	Got event.Event
}

func (h *TestHandler) Log(_ context.Context, ev *event.Event) {
	h.Got = *ev
	h.Got.Labels = make([]event.Label, len(ev.Labels))
	copy(h.Got.Labels, ev.Labels)
}

func (h *TestHandler) Annotate(_ context.Context, _ *event.Event)                {}
func (h *TestHandler) Metric(_ context.Context, _ *event.Event)                  {}
func (h *TestHandler) Start(ctx context.Context, _ *event.Event) context.Context { return ctx }
func (h *TestHandler) End(_ context.Context, _ *event.Event)                     {}

var TestAt = time.Now()

func NewTestExporter() (*event.Exporter, *TestHandler) {
	te := &TestHandler{}
	return event.NewExporter(te, &event.ExporterOptions{Now: func() time.Time { return TestAt }}), te
}
