-
Notifications
You must be signed in to change notification settings - Fork 1
/
delete_all_test.go
109 lines (97 loc) · 2.36 KB
/
delete_all_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
package ro_test
import (
"context"
"testing"
"time"
"github.com/gomodule/redigo/redis"
"github.com/izumin5210/ro"
"github.com/izumin5210/ro/rq"
rotesting "github.com/izumin5210/ro/testing"
)
func TestRedisStore_DeleteAll(t *testing.T) {
defer teardown(t)
now := time.Now().UTC()
posts := []*rotesting.Post{
{
ID: 1,
Title: "post 1",
Body: "This is a post 1.",
UpdatedAt: now.UnixNano(),
},
{
ID: 2,
Title: "post 2",
Body: "This is a post 2.",
UpdatedAt: now.Add(-1 * 60 * time.Second).UnixNano(),
},
{
ID: 3,
Title: "post 3",
Body: "This is a post 3.",
UpdatedAt: now.Add(1 * 60 * time.Second).UnixNano(),
},
{
ID: 4,
Title: "post 4",
Body: "This is a post 4.",
UpdatedAt: now.Add(-2 * 60 * time.Second).UnixNano(),
},
{
ID: 5,
Title: "post 5",
Body: "This is a post 5.",
UpdatedAt: now.Add(1 * 60 * time.Second).UnixNano(),
},
}
store := ro.New(pool, &rotesting.Post{})
err := store.Put(context.TODO(), posts)
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
err = store.DeleteAll(
context.TODO(),
rq.Key("recent"),
rq.Gt(now.Add(-2*60*time.Second).UnixNano()),
rq.LtEq(now.Add(1*60*time.Second).UnixNano()),
)
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
conn := pool.Get()
defer conn.Close()
keys, err := redis.Strings(conn.Do("KEYS", "*"))
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if got, want := len(keys), 4; err != nil {
t.Errorf("Stored keys was %d, want %d", got, want)
}
v, err := redis.Values(conn.Do("HGETALL", "rotesting.Post:1"))
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if len(v) > 0 {
t.Errorf("Unexpected response: %v", v)
}
v, err = redis.Values(conn.Do("HGETALL", "rotesting.Post:2"))
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if len(v) > 0 {
t.Errorf("Unexpected response: %v", v)
}
v, err = redis.Values(conn.Do("HGETALL", "rotesting.Post:5"))
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if len(v) > 0 {
t.Errorf("Unexpected response: %v", v)
}
keys, err = redis.Strings(conn.Do("ZRANGE", "TestPoset/recent", 0, -1))
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if got, want := len(keys), 2; err != nil {
t.Errorf("Stored keys was %d, want %d", got, want)
}
}