7 "github.com/stretchr/testify/assert"
8 "github.com/stretchr/testify/mock"
9 "gerrit.oran-osc.org/r/ric-plt/sdlgo"
16 func (m *mockDB) MSet(pairs ...interface{}) error {
21 func (m *mockDB) MGet(keys []string) ([]interface{}, error) {
23 return a.Get(0).([]interface{}), a.Error(1)
26 func (m *mockDB) Close() error {
31 func (m *mockDB) Del(keys []string) error {
36 func (m *mockDB) Keys(pattern string) ([]string, error) {
37 a := m.Called(pattern)
38 return a.Get(0).([]string), a.Error(1)
41 func setup() (*mockDB, *sdlgo.SdlInstance) {
43 i := &sdlgo.SdlInstance{
44 NameSpace: "namespace",
45 NsPrefix: "{namespace},",
51 func TestGetOneKey(t *testing.T) {
54 mgetExpected := []string{"{namespace},key"}
55 mReturn := []interface{}{"somevalue"}
56 mReturnExpected := make(map[string]interface{})
57 mReturnExpected["key"] = "somevalue"
59 m.On("MGet", mgetExpected).Return(mReturn, nil)
60 retVal, err := i.Get([]string{"key"})
62 assert.Equal(t, mReturnExpected, retVal)
63 m.AssertExpectations(t)
66 func TestGetSeveralKeys(t *testing.T) {
69 mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
70 mReturn := []interface{}{"somevalue1", 2, "someothervalue"}
71 mReturnExpected := make(map[string]interface{})
72 mReturnExpected["key1"] = "somevalue1"
73 mReturnExpected["key2"] = 2
74 mReturnExpected["key3"] = "someothervalue"
76 m.On("MGet", mgetExpected).Return(mReturn, nil)
77 retVal, err := i.Get([]string{"key1", "key2", "key3"})
79 assert.Equal(t, mReturnExpected, retVal)
80 m.AssertExpectations(t)
83 func TestGetSeveralKeysSomeFail(t *testing.T) {
86 mgetExpected := []string{"{namespace},key1", "{namespace},key2", "{namespace},key3"}
87 mReturn := []interface{}{"somevalue1", nil, "someothervalue"}
88 mReturnExpected := make(map[string]interface{})
89 mReturnExpected["key1"] = "somevalue1"
90 mReturnExpected["key2"] = nil
91 mReturnExpected["key3"] = "someothervalue"
93 m.On("MGet", mgetExpected).Return(mReturn, nil)
94 retVal, err := i.Get([]string{"key1", "key2", "key3"})
96 assert.Equal(t, mReturnExpected, retVal)
97 m.AssertExpectations(t)
100 func TestGetKeyReturnError(t *testing.T) {
103 mgetExpected := []string{"{namespace},key"}
104 mReturn := []interface{}{nil}
105 mReturnExpected := make(map[string]interface{})
107 m.On("MGet", mgetExpected).Return(mReturn, errors.New("Some error"))
108 retVal, err := i.Get([]string{"key"})
109 assert.NotNil(t, err)
110 assert.Equal(t, mReturnExpected, retVal)
111 m.AssertExpectations(t)
114 func TestGetEmptyList(t *testing.T) {
117 mgetExpected := []string{}
119 retval, err := i.Get([]string{})
121 assert.Len(t, retval, 0)
122 m.AssertNotCalled(t, "MGet", mgetExpected)
125 func TestWriteOneKey(t *testing.T) {
128 msetExpected := []interface{}{"{namespace},key1", "data1"}
130 m.On("MSet", msetExpected).Return(nil)
131 err := i.Set("key1", "data1")
133 m.AssertExpectations(t)
136 func TestWriteSeveralKeysSlice(t *testing.T) {
139 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", 22}
141 m.On("MSet", msetExpected).Return(nil)
142 err := i.Set([]interface{}{"key1", "data1", "key2", 22})
144 m.AssertExpectations(t)
148 func TestWriteSeveralKeysArray(t *testing.T) {
151 msetExpected := []interface{}{"{namespace},key1", "data1", "{namespace},key2", "data2"}
153 m.On("MSet", msetExpected).Return(nil)
154 err := i.Set([4]string{"key1", "data1", "key2", "data2"})
156 m.AssertExpectations(t)
159 func TestWriteFail(t *testing.T) {
162 msetExpected := []interface{}{"{namespace},key1", "data1"}
164 m.On("MSet", msetExpected).Return(errors.New("Some error"))
165 err := i.Set("key1", "data1")
166 assert.NotNil(t, err)
167 m.AssertExpectations(t)
170 func TestWriteEmptyList(t *testing.T) {
173 msetExpected := []interface{}{}
176 m.AssertNotCalled(t, "MSet", msetExpected)
179 func TestRemoveSuccessfully(t *testing.T) {
182 msetExpected := []string{"{namespace},key1", "{namespace},key2"}
183 m.On("Del", msetExpected).Return(nil)
185 err := i.Remove([]string{"key1", "key2"})
187 m.AssertExpectations(t)
190 func TestRemoveFail(t *testing.T) {
193 msetExpected := []string{"{namespace},key"}
194 m.On("Del", msetExpected).Return(errors.New("Some error"))
196 err := i.Remove([]string{"key"})
197 assert.NotNil(t, err)
198 m.AssertExpectations(t)
201 func TestRemoveEmptyList(t *testing.T) {
204 err := i.Remove([]string{})
206 m.AssertNotCalled(t, "Del", []string{})
209 func TestGetAllSuccessfully(t *testing.T) {
212 mKeysExpected := string("{namespace},*")
213 mReturnExpected := []string{"{namespace},key1", "{namespace},key2"}
214 expectedReturn := []string{"key1", "key2"}
215 m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
216 retVal, err := i.GetAll()
218 assert.Equal(t, expectedReturn, retVal)
219 m.AssertExpectations(t)
222 func TestGetAllFail(t *testing.T) {
225 mKeysExpected := string("{namespace},*")
226 mReturnExpected := []string{}
227 m.On("Keys", mKeysExpected).Return(mReturnExpected, errors.New("some error"))
228 retVal, err := i.GetAll()
229 assert.NotNil(t, err)
230 assert.Nil(t, retVal)
231 assert.Equal(t, len(retVal), 0)
232 m.AssertExpectations(t)
235 func TestGetAllReturnEmpty(t *testing.T) {
238 mKeysExpected := string("{namespace},*")
239 var mReturnExpected []string = nil
240 m.On("Keys", mKeysExpected).Return(mReturnExpected, nil)
241 retVal, err := i.GetAll()
243 assert.Nil(t, retVal)
244 assert.Equal(t, len(retVal), 0)
245 m.AssertExpectations(t)
249 func TestRemoveAllSuccessfully(t *testing.T) {
252 mKeysExpected := string("{namespace},*")
253 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
254 mDelExpected := mKeysReturn
255 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
256 m.On("Del", mDelExpected).Return(nil)
259 m.AssertExpectations(t)
262 func TestRemoveAllNoKeysFound(t *testing.T) {
265 mKeysExpected := string("{namespace},*")
266 var mKeysReturn []string = nil
267 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
268 m.AssertNumberOfCalls(t, "Del", 0)
271 m.AssertExpectations(t)
274 func TestRemoveAllKeysReturnError(t *testing.T) {
277 mKeysExpected := string("{namespace},*")
278 var mKeysReturn []string = nil
279 m.On("Keys", mKeysExpected).Return(mKeysReturn, errors.New("Some error"))
280 m.AssertNumberOfCalls(t, "Del", 0)
282 assert.NotNil(t, err)
283 m.AssertExpectations(t)
286 func TestRemoveAllDelReturnError(t *testing.T) {
289 mKeysExpected := string("{namespace},*")
290 mKeysReturn := []string{"{namespace},key1", "{namespace},key2"}
291 mDelExpected := mKeysReturn
292 m.On("Keys", mKeysExpected).Return(mKeysReturn, nil)
293 m.On("Del", mDelExpected).Return(errors.New("Some Error"))
295 assert.NotNil(t, err)
296 m.AssertExpectations(t)