+++ /dev/null
-package sdlgo_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/mock"
- "gerrit.oran-osc.org/r/ric-plt/sdlgo"
-)
-
-type mockDB struct {
- mock.Mock
-}
-
-func (m *mockDB) MSet(pairs ...interface{}) error {
- a := m.Called(pairs)
- return a.Error(0)
-}
-
-func (m *mockDB) MGet(keys []string) ([]interface{}, error) {
- a := m.Called(keys)
- return a.Get(0).([]interface{}), a.Error(1)
-}
-
-func (m *mockDB) Close() error {
- a := m.Called()
- return a.Error(0)
-}
-
-func (m *mockDB) Del(keys []string) error {
- a := m.Called(keys)
- return a.Error(0)
-}
-
-func (m *mockDB) Keys(pattern string) ([]string, error) {
- a := m.Called(pattern)
- return a.Get(0).([]string), a.Error(1)
-}
-
-func setup() (*mockDB, *sdlgo.SdlInstance) {
- m := new(mockDB)
- i := &sdlgo.SdlInstance{
- NameSpace: "namespace",
- NsPrefix: "{namespace},",
- Idatabase: m,
- }
- return m, i
-}
-
-func TestGetOneKey(t *testing.T) {
- m, i := setup()
-
- mgetExpected := []string{"{namespace},key"}
- mReturn := []interface{}{"somevalue"}
- mReturnExpected := make(map[string]interface{})
- mReturnExpected["key"] = "somevalue"
-
- m.On("MGet", mgetExpected).Return(mReturn, nil)
- retVal, err := i.Get([]string{"key"})
- assert.Nil(t, err)
- assert.Equal(t, mReturnExpected, retVal)
- m.AssertExpectations(t)
-}
-
-func TestGetSeveralKeys(t *testing.T) {
- m, i := setup()
-
- mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
- mReturn := []interface{}{"somevalue1", 2, "someothervalue"}
- mReturnExpected := make(map[string]interface{})
- mReturnExpected["key1"] = "somevalue1"
- mReturnExpected["key2"] = 2
- mReturnExpected["key3"] = "someothervalue"
-
- m.On("MGet", mgetExpected).Return(mReturn, nil)
- retVal, err := i.Get([]string{"key1", "key2", "key3"})
- assert.Nil(t, err)
- assert.Equal(t, mReturnExpected, retVal)
- m.AssertExpectations(t)
-}
-
-func TestGetSeveralKeysSomeFail(t *testing.T) {
- m, i := setup()
-
- mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
- mReturn := []interface{}{"somevalue1", nil, "someothervalue"}
- mReturnExpected := make(map[string]interface{})
- mReturnExpected["key1"] = "somevalue1"
- mReturnExpected["key2"] = nil
- mReturnExpected["key3"] = "someothervalue"
-
- m.On("MGet", mgetExpected).Return(mReturn, nil)
- retVal, err := i.Get([]string{"key1", "key2", "key3"})
- assert.Nil(t, err)
- assert.Equal(t, mReturnExpected, retVal)
- m.AssertExpectations(t)
-}
-
-func TestGetKeyReturnError(t *testing.T) {
- m, i := setup()
-
- mgetExpected := []string{"{namespace},key"}
- mReturn := []interface{}{nil}
- mReturnExpected := make(map[string]interface{})
-
- m.On("MGet", mgetExpected).Return(mReturn, errors.New("Some error"))
- retVal, err := i.Get([]string{"key"})
- assert.NotNil(t, err)
- assert.Equal(t, mReturnExpected, retVal)
- m.AssertExpectations(t)
-}
-
-func TestGetEmptyList(t *testing.T) {
- m, i := setup()
-
- mgetExpected := []string{}
-
- retval, err := i.Get([]string{})
- assert.Nil(t, err)
- assert.Len(t, retval, 0)
- m.AssertNotCalled(t, "MGet", mgetExpected)
-}
-
-func TestWriteOneKey(t *testing.T) {
- m, i := setup()
-
- msetExpected := []interface{}{"{namespace},key1", "data1"}
-
- m.On("MSet", msetExpected).Return(nil)
- err := i.Set("key1", "data1")
- assert.Nil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestWriteSeveralKeysSlice(t *testing.T) {
- m, i := setup()
-
- msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", 22}
-
- m.On("MSet", msetExpected).Return(nil)
- err := i.Set([]interface{}{"key1", "data1", "key2", 22})
- assert.Nil(t, err)
- m.AssertExpectations(t)
-
-}
-
-func TestWriteSeveralKeysArray(t *testing.T) {
- m, i := setup()
-
- msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", "data2"}
-
- m.On("MSet", msetExpected).Return(nil)
- err := i.Set([4]string{"key1", "data1", "key2", "data2"})
- assert.Nil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestWriteFail(t *testing.T) {
- m, i := setup()
-
- msetExpected := []interface{}{"{namespace},key1", "data1"}
-
- m.On("MSet", msetExpected).Return(errors.New("Some error"))
- err := i.Set("key1", "data1")
- assert.NotNil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestWriteEmptyList(t *testing.T) {
- m, i := setup()
-
- msetExpected := []interface{}{}
- err := i.Set()
- assert.Nil(t, err)
- m.AssertNotCalled(t, "MSet", msetExpected)
-}
-
-func TestRemoveSuccessfully(t *testing.T) {
- m, i := setup()
-
- msetExpected := []string{"{namespace},key1", "{namespace},key2"}
- m.On("Del", msetExpected).Return(nil)
-
- err := i.Remove([]string{"key1", "key2"})
- assert.Nil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestRemoveFail(t *testing.T) {
- m, i := setup()
-
- msetExpected := []string{"{namespace},key"}
- m.On("Del", msetExpected).Return(errors.New("Some error"))
-
- err := i.Remove([]string{"key"})
- assert.NotNil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestRemoveEmptyList(t *testing.T) {
- m, i := setup()
-
- err := i.Remove([]string{})
- assert.Nil(t, err)
- m.AssertNotCalled(t, "Del", []string{})
-}
-
-func TestGetAllSuccessfully(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- mReturnExpected := []string{"{namespace},key1", "{namespace},key2"}
- expectedReturn := []string{"key1", "key2"}
- m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
- retVal, err := i.GetAll()
- assert.Nil(t, err)
- assert.Equal(t, expectedReturn, retVal)
- m.AssertExpectations(t)
-}
-
-func TestGetAllFail(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- mReturnExpected := []string{}
- m.On("Keys", mKeysExpected).Return(mReturnExpected, errors.New("some error"))
- retVal, err := i.GetAll()
- assert.NotNil(t, err)
- assert.Nil(t, retVal)
- assert.Equal(t, len(retVal), 0)
- m.AssertExpectations(t)
-}
-
-func TestGetAllReturnEmpty(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- var mReturnExpected []string = nil
- m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
- retVal, err := i.GetAll()
- assert.Nil(t, err)
- assert.Nil(t, retVal)
- assert.Equal(t, len(retVal), 0)
- m.AssertExpectations(t)
-
-}
-
-func TestRemoveAllSuccessfully(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
- mDelExpected := mKeysReturn
- m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
- m.On("Del", mDelExpected).Return(nil)
- err := i.RemoveAll()
- assert.Nil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestRemoveAllNoKeysFound(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- var mKeysReturn []string = nil
- m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
- m.AssertNumberOfCalls(t, "Del", 0)
- err := i.RemoveAll()
- assert.Nil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestRemoveAllKeysReturnError(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- var mKeysReturn []string = nil
- m.On("Keys", mKeysExpected).Return(mKeysReturn, errors.New("Some error"))
- m.AssertNumberOfCalls(t, "Del", 0)
- err := i.RemoveAll()
- assert.NotNil(t, err)
- m.AssertExpectations(t)
-}
-
-func TestRemoveAllDelReturnError(t *testing.T) {
- m, i := setup()
-
- mKeysExpected := string("{namespace},*")
- mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
- mDelExpected := mKeysReturn
- m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
- m.On("Del", mDelExpected).Return(errors.New("Some Error"))
- err := i.RemoveAll()
- assert.NotNil(t, err)
- m.AssertExpectations(t)
-}