package store import ( "testing" "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" "codeberg.org/danjones000/combluotion/config" storeMock "codeberg.org/danjones000/combluotion/internal/testmocks/store" ) func getStoreFactory(t *testing.T) (*gomock.Controller, StoreFactory) { t.Helper() ctrl := gomock.NewController(t) return ctrl, func(config.Config) (Store, error) { return storeMock.NewMockStore(ctrl), nil } } func TestAddFactory(t *testing.T) { _, f := getStoreFactory(t) AddFactory("mock", f) defer delete(factories, "mock") _, ok := factories["mock"] assert.True(t, ok) } func TestGetFactoryNil(t *testing.T) { f := GetFactory("mock") assert.Nil(t, f) } func TestGetFactoryNotNil(t *testing.T) { _, f := getStoreFactory(t) AddFactory("mock", f) defer delete(factories, "mock") f = GetFactory("mock") assert.NotNil(t, f) } func TestMakeStoreError(t *testing.T) { s, e := MakeStore("mock", config.Config{}) assert.Nil(t, s) assert.ErrorIs(t, e, ErrNoFactory) assert.ErrorContains(t, e, ErrNoFactory.Error()+": mock") } func TestMakeStoreNoError(t *testing.T) { _, f := getStoreFactory(t) AddFactory("mock", f) defer delete(factories, "mock") s, e := MakeStore("mock", config.Config{}) assert.NotNil(t, s) assert.NoError(t, e) } func TestMakeStoreNoName(t *testing.T) { _, f := getStoreFactory(t) AddFactory("mock", f) defer delete(factories, "mock") s, e := MakeStore("", config.Config{ Conn: config.ConnSettings{Store: "mock"}, }) assert.NotNil(t, s) assert.NoError(t, e) }