1package store
2
3import (
4	"context"
5	"errors"
6	"testing"
7
8	corev2 "github.com/sensu/sensu-go/api/core/v2"
9	"github.com/sensu/sensu-go/types"
10)
11
12type mockEventStore struct {
13	id string
14}
15
16func (m mockEventStore) DeleteEventByEntityCheck(ctx context.Context, entity, check string) error {
17	return errors.New(m.id)
18}
19
20func (mockEventStore) GetEvents(ctx context.Context, pred *SelectionPredicate) ([]*corev2.Event, error) {
21	return nil, nil
22}
23
24func (mockEventStore) GetEventsByEntity(ctx context.Context, entity string, pred *SelectionPredicate) ([]*corev2.Event, error) {
25	return nil, nil
26}
27
28func (mockEventStore) GetEventByEntityCheck(ctx context.Context, entity, check string) (*types.Event, error) {
29	return nil, nil
30}
31
32func (mockEventStore) UpdateEvent(ctx context.Context, event *types.Event) (old, new *types.Event, err error) {
33	return nil, nil, nil
34}
35
36func TestEventStoreProxy(t *testing.T) {
37	storeA := mockEventStore{"a"}
38	storeB := mockEventStore{"b"}
39
40	proxy := NewEventStoreProxy(storeA)
41	ctx := context.Background()
42
43	err := proxy.DeleteEventByEntityCheck(ctx, "", "")
44	if got, want := err.Error(), "a"; got != want {
45		t.Fatalf("bad response from event store: got %s, want %s", got, want)
46	}
47
48	proxy.UpdateEventStore(storeB)
49
50	err = proxy.DeleteEventByEntityCheck(ctx, "", "")
51	if got, want := err.Error(), "b"; got != want {
52		t.Fatalf("bad response from event store: got %s, want %s", got, want)
53	}
54}
55