/
honoka_test.go
139 lines (116 loc) · 3.81 KB
/
honoka_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package honoka
import (
"testing"
"path/filepath"
"time"
"strconv"
homedir "github.com/mitchellh/go-homedir"
// for Debug
// "github.com/davecgh/go-spew/spew"
)
func TestGetIndexPath(t *testing.T) {
actual, err := getIndexPath()
if err != nil {
t.Errorf("occurred error when get index path: %v", err)
}
home, _ := homedir.Dir()
expected := filepath.Join(home, ".honoka", "index")
if actual != expected {
t.Errorf("actual does not match expected. actual: %s , expected: %s", actual, expected)
}
}
func TestGetBucketsDirPath(t *testing.T) {
actual, err := getBucketsDirPath()
if err != nil {
t.Errorf("occurred error when get bucket directory path: %v", err)
}
home, _ := homedir.Dir()
expected := filepath.Join(home, ".honoka", "buckets")
if actual != expected {
t.Errorf("actual does not match expected. actual: %s , expected: %s", actual, expected)
}
}
func TestGetBucketPath(t *testing.T) {
dummyBucket := "foobar"
actual, err := getBucketPath(dummyBucket)
if err != nil {
t.Errorf("occurred error when get bucket directory path: %v", err)
}
home, _ := homedir.Dir()
expected := filepath.Join(home, ".honoka", "buckets", dummyBucket)
if actual != expected {
t.Errorf("actual does not match expected. actual: %s , expected: %s", actual, expected)
}
}
func TestNew(t *testing.T) {
_, err := New()
if err != nil {
t.Errorf("occurred error when get cache client: %#v", err)
}
}
func TestSaveCache(t *testing.T) {
cli, err := New()
if err != nil {
t.Errorf("occurred error when get cache client: %#v", err)
}
err = cli.Set("TestCacheString", "foobar", 100)
if err != nil {
t.Errorf("occurred error when set cache (string): %#v", err)
}
err = cli.Set("TestCacheInt", "12345656789", 100)
if err != nil {
t.Errorf("occurred error when set cache (slice): %#v", err)
}
err = cli.Set("TestCacheSlice", []string{"foo", "bar", "fizz"}, 100)
if err != nil {
t.Errorf("occurred error when set cache (slice): %#v", err)
}
}
func TestExpire(t *testing.T) {
cli, err := New()
if err != nil {
t.Errorf("occurred error when get cache client: %#v", err)
}
err = cli.Set("testCache", "foobar", 3)
if err != nil {
t.Errorf("occurred error when set cache (string): %#v", err)
}
b, err := cli.GetJson("testCache")
actual := string(b)
expected := "\"foobar\""
if actual != expected {
t.Errorf("actual does not match expected. actual: %s , expected: %s", b, expected)
}
time.Sleep(3 * time.Second)
b, err = cli.GetJson("testCache")
if err != CacheIsExpired {
t.Errorf("cache is not expired: %#v", err)
}
}
func TestUpdate(t *testing.T) {
callback := func() (interface{}, error) {
i := 1000 + 1
val := "test.update." + strconv.Itoa(i)
return val, nil
}
cli, err := New()
if err != nil {
t.Errorf("occurred error when get cache client: %#v", err)
}
var output interface{}
actual, err := cli.Update("testUpdate", callback, 100, &output)
if err != nil {
t.Errorf("occurred error when update cache: %#v", err)
}
expected := "test.update.1001"
if actual != expected {
t.Errorf("actual does not match expected. actual: %v , expected: %v", actual, expected)
}
}
// func TestUpdateIndexFile(t *testing.T) {
// idx := []byte("{\"test\": {\"key\":\"test\",\"bucket\":\"qwertyuiopasdfghjkl567ghjk\",\"expiration\":32528049000},\"foobar\": {\"key\":\"foobar\",\"bucket\":\"qwertyuioyujhgdhjkl567ghjk\",\"expiration\": 32518049000}}")
// err := updateIndexFile(idx)
// if err != nil {
// t.Errorf("occurred error when update index file: %v", err)
// }
// }