package store

import (
	"context"
	"testing"
)

type testHook struct {
	f bool
}

func (t *testHook) Exists(fn FuncExists) FuncExists {
	return func(ctx context.Context, key string, opts ...ExistsOption) error {
		t.f = true
		return fn(ctx, key, opts...)
	}
}

func TestHook(t *testing.T) {
	h := &testHook{}

	s := NewStore(Hooks(HookExists(h.Exists)))

	if err := s.Init(); err != nil {
		t.Fatal(err)
	}

	if err := s.Exists(context.TODO(), "test"); err != nil {
		t.Fatal(err)
	}

	if !h.f {
		t.Fatal("hook not works")
	}
}