Files
nabarr/cache/get_test.go
2021-02-19 22:20:02 +00:00

86 lines
1.5 KiB
Go

package cache
import (
"github.com/rs/zerolog"
"reflect"
"testing"
"time"
)
func TestClient_Get(t *testing.T) {
type fields struct {
log zerolog.Logger
}
type args struct {
bucket string
key string
}
tests := []struct {
name string
fields fields
args args
sleep time.Duration
put bool
ttl time.Duration
want []byte
wantErr bool
}{
{
name: "no value",
fields: fields{
log: zerolog.Logger{},
},
args: args{
bucket: "get",
key: "test",
},
want: nil,
wantErr: true,
},
{
name: "with value ttl",
fields: fields{
log: zerolog.Logger{},
},
args: args{
bucket: "get",
key: "test",
},
sleep: 1 * time.Second,
put: true,
ttl: 2 * time.Second,
want: []byte("test"),
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
c := &Client{
log: tt.fields.log,
db: newDb(t),
}
if tt.put {
if err := c.Put(tt.args.bucket, tt.args.key, tt.want, tt.ttl); (err != nil) != tt.wantErr && tt.sleep == 0 {
t.Errorf("Put() error = %v, wantErr %v", err, tt.wantErr)
}
}
time.Sleep(tt.sleep)
got, err := c.Get(tt.args.bucket, tt.args.key)
if (err != nil) != tt.wantErr {
t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("Get() got = %v, want %v", got, tt.want)
}
if err := c.Close(); err != nil {
t.Errorf("Close() error = %v, wantErr %v", err, nil)
}
})
}
}