combluotion/store/factory_test.go
2025-01-24 16:27:05 -06:00

67 lines
1.5 KiB
Go

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)
}