189 lines
3.5 KiB
Go
189 lines
3.5 KiB
Go
package rediskv
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
type redisMock struct {
|
|
reply interface{}
|
|
err error
|
|
}
|
|
|
|
func (r redisMock) Err() error {
|
|
return r.err
|
|
}
|
|
|
|
func (r redisMock) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func (r redisMock) Receive() (reply interface{}, err error) {
|
|
return r.reply, r.err
|
|
}
|
|
|
|
func (r redisMock) Flush() error {
|
|
return nil
|
|
}
|
|
|
|
func (r redisMock) Send(commandName string, args ...interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
func (r redisMock) Do(cmd string, args ...interface{}) (reply interface{}, err error) {
|
|
return r.reply, r.err
|
|
}
|
|
|
|
func TestGetSet(t *testing.T) {
|
|
mock := redisMock{}
|
|
kvStorage := Rediskv{}
|
|
kvStorage.c = &mock
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
err := kvStorage.Set("value", `"{"name": "simulator", "value": "20"}"`)
|
|
if err != nil {
|
|
t.Error("Couln't set value name:simulator, value:20")
|
|
}
|
|
|
|
mock.reply = `"{"name": "simulator", "value": "20"}"`
|
|
mock.err = nil
|
|
|
|
value, err := kvStorage.Get("value")
|
|
if err != nil {
|
|
t.Error("Couln't get value for initialized value")
|
|
t.Error(err)
|
|
}
|
|
|
|
if value != `"{"name": "simulator", "value": "20"}"` {
|
|
t.Error("Unexpected get value for initialized value")
|
|
}
|
|
}
|
|
|
|
func TestDel(t *testing.T) {
|
|
mock := redisMock{}
|
|
kvStorage := Rediskv{}
|
|
kvStorage.c = &mock
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
err := kvStorage.Set("value", `{"name": "simulator", "value": "20"}`)
|
|
if err != nil {
|
|
t.Error("Couln't set value name:simulator, value:20")
|
|
}
|
|
|
|
mock.reply = `{"name": "simulator", "value": "20"}`
|
|
mock.err = nil
|
|
|
|
value, err := kvStorage.Get("value")
|
|
if err != nil {
|
|
t.Error("Couln't get value for initialized value")
|
|
}
|
|
|
|
if value != `{"name": "simulator", "value": "20"}` {
|
|
t.Errorf("Unexpected get value for initialized value got: %v", value)
|
|
}
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
ok, err := kvStorage.Del("value")
|
|
if err != nil {
|
|
t.Error("Couln't del value")
|
|
}
|
|
if !ok {
|
|
t.Error("No value deleted")
|
|
}
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
value, err = kvStorage.Get("value")
|
|
if err == nil {
|
|
t.Error("Couln't get value for initialized value")
|
|
}
|
|
|
|
if value != "" {
|
|
t.Error("Unexpected get value for removed value")
|
|
}
|
|
}
|
|
|
|
func TestHGetHSet(t *testing.T) {
|
|
mock := redisMock{}
|
|
kvStorage := Rediskv{}
|
|
kvStorage.c = &mock
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
err := kvStorage.HSet("value", "name", "simulator")
|
|
if err != nil {
|
|
t.Error("Couln't hset value with field name and value simulator")
|
|
}
|
|
|
|
mock.reply = "simulator"
|
|
mock.err = nil
|
|
|
|
value, err := kvStorage.HGet("value", "name")
|
|
if err != nil {
|
|
t.Error("Couln't hget value for field name")
|
|
}
|
|
|
|
if value != "simulator" {
|
|
t.Error("Unexpected hget value for field name")
|
|
}
|
|
}
|
|
|
|
func TestHDel(t *testing.T) {
|
|
mock := redisMock{}
|
|
kvStorage := Rediskv{}
|
|
kvStorage.c = &mock
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
err := kvStorage.HSet("value", "name", "simulator")
|
|
if err != nil {
|
|
t.Error("Couln't hset value with field name and value simulator")
|
|
}
|
|
|
|
mock.reply = "simulator"
|
|
mock.err = nil
|
|
|
|
value, err := kvStorage.HGet("value", "name")
|
|
if err != nil {
|
|
t.Error("Couln't hget value for field name")
|
|
}
|
|
|
|
if value != "simulator" {
|
|
t.Error("Unexpected hget value for field name")
|
|
}
|
|
|
|
mock.reply = nil
|
|
mock.err = nil
|
|
|
|
err = kvStorage.HDel("value", "name")
|
|
if err != nil {
|
|
t.Error("Couln't del value")
|
|
}
|
|
}
|
|
|
|
func TestKeys(t *testing.T) {
|
|
mock := redisMock{}
|
|
kvStorage := Rediskv{}
|
|
kvStorage.c = &mock
|
|
|
|
mock.reply = nil
|
|
mock.err = fmt.Errorf("test-err")
|
|
|
|
k, err := kvStorage.Keys("*")
|
|
if err.Error() != "test-err" {
|
|
t.Errorf("keys error didnt match: %s (%v)", err.Error(), err)
|
|
}
|
|
if k != nil {
|
|
t.Error("keys must be nil")
|
|
}
|
|
}
|