Skip to content

Commit 0e0b20c

Browse files
authored
add discrete tests for initialize step (#618)
1 parent ddbac1c commit 0e0b20c

File tree

2 files changed

+172
-0
lines changed

2 files changed

+172
-0
lines changed

middleware/shared_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package middleware
22

33
import (
44
"context"
5+
"reflect"
56
"testing"
67
)
78

@@ -72,3 +73,24 @@ func mockDeserializeMiddleware(id string) DeserializeMiddleware {
7273
return next.HandleDeserialize(ctx, in)
7374
})
7475
}
76+
77+
func expectID(t *testing.T, m ider, expect string) {
78+
t.Helper()
79+
if m == nil {
80+
t.Error("expect is nil")
81+
return
82+
}
83+
if actual := m.ID(); expect != actual {
84+
t.Errorf("expect %q, got %q", expect, actual)
85+
}
86+
}
87+
88+
func expectIDList(t *testing.T, expect, actual []string) {
89+
t.Helper()
90+
if len(expect) == 0 && len(actual) == 0 {
91+
return
92+
}
93+
if !reflect.DeepEqual(expect, actual) {
94+
t.Errorf("%v !=\n%v", expect, actual)
95+
}
96+
}

middleware/step_initialize_test.go

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
package middleware
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestInitializeStep_Get(t *testing.T) {
8+
step := NewInitializeStep()
9+
step.Add(mockInitializeMiddleware("A"), After)
10+
step.Add(mockInitializeMiddleware("B"), After)
11+
12+
got, _ := step.Get("A")
13+
expectID(t, got, "A")
14+
got, _ = step.Get("B")
15+
expectID(t, got, "B")
16+
17+
if _, ok := step.Get("NOT REAL"); ok {
18+
t.Errorf("shouldn't get fake middleware from list but you did")
19+
}
20+
21+
// empty
22+
step = NewInitializeStep()
23+
if _, ok := step.Get("A"); ok {
24+
t.Errorf("shouldn't get something from nothing but you did")
25+
}
26+
}
27+
28+
func TestInitializeStep_Add(t *testing.T) {
29+
step := NewInitializeStep()
30+
31+
step.Add(mockInitializeMiddleware("A"), After)
32+
expectIDList(t, []string{"A"}, step.List())
33+
34+
step.Add(mockInitializeMiddleware("B"), After)
35+
expectIDList(t, []string{"A", "B"}, step.List())
36+
37+
step.Add(mockInitializeMiddleware("C"), Before)
38+
expectIDList(t, []string{"C", "A", "B"}, step.List())
39+
}
40+
41+
func TestInitializeStep_Insert(t *testing.T) {
42+
step := NewInitializeStep()
43+
step.Add(mockInitializeMiddleware("A"), After)
44+
step.Add(mockInitializeMiddleware("B"), After)
45+
step.Add(mockInitializeMiddleware("C"), After)
46+
47+
// before + at the front
48+
err := step.Insert(mockInitializeMiddleware("D"), "A", Before)
49+
noError(t, err)
50+
expectIDList(t, []string{"D", "A", "B", "C"}, step.List())
51+
52+
// after + at the end
53+
err = step.Insert(mockInitializeMiddleware("E"), "C", After)
54+
noError(t, err)
55+
expectIDList(t, []string{"D", "A", "B", "C", "E"}, step.List())
56+
57+
// before + somewhere in the middle
58+
err = step.Insert(mockInitializeMiddleware("F"), "B", Before)
59+
noError(t, err)
60+
expectIDList(t, []string{"D", "A", "F", "B", "C", "E"}, step.List())
61+
62+
// after + somewhere in the middleware
63+
err = step.Insert(mockInitializeMiddleware("G"), "F", After)
64+
noError(t, err)
65+
expectIDList(t, []string{"D", "A", "F", "G", "B", "C", "E"}, step.List())
66+
67+
// not found
68+
err = step.Insert(mockInitializeMiddleware("H"), "FALSE", Before)
69+
if err == nil {
70+
t.Error("expect err, got none")
71+
}
72+
73+
// empty
74+
step = NewInitializeStep()
75+
if err := step.Insert(mockInitializeMiddleware("B"), "A", After); err == nil {
76+
t.Error("expect err, got none")
77+
}
78+
}
79+
80+
func TestInitializeStep_Swap(t *testing.T) {
81+
step := NewInitializeStep()
82+
step.Add(mockInitializeMiddleware("A"), After)
83+
step.Add(mockInitializeMiddleware("B"), After)
84+
step.Add(mockInitializeMiddleware("C"), After)
85+
86+
swapped, err := step.Swap("B", mockInitializeMiddleware("D"))
87+
noError(t, err)
88+
expectID(t, swapped, "B")
89+
expectIDList(t, []string{"A", "D", "C"}, step.List())
90+
91+
// not found
92+
if _, err := step.Swap("LIES", mockInitializeMiddleware("G")); err == nil {
93+
t.Error("expect err, got none")
94+
}
95+
}
96+
97+
func TestInitializeStep_Remove(t *testing.T) {
98+
step := NewInitializeStep()
99+
step.Add(mockInitializeMiddleware("A"), After)
100+
step.Add(mockInitializeMiddleware("B"), After)
101+
step.Add(mockInitializeMiddleware("C"), After)
102+
step.Add(mockInitializeMiddleware("D"), After)
103+
step.Add(mockInitializeMiddleware("E"), After)
104+
105+
// not found
106+
if _, err := step.Remove("DECEIT"); err == nil {
107+
t.Error("expect err, got none")
108+
}
109+
110+
// at the front
111+
removed, err := step.Remove("A")
112+
noError(t, err)
113+
expectID(t, removed, "A")
114+
expectIDList(t, []string{"B", "C", "D", "E"}, step.List())
115+
116+
// at the end
117+
removed, err = step.Remove("E")
118+
noError(t, err)
119+
expectID(t, removed, "E")
120+
expectIDList(t, []string{"B", "C", "D"}, step.List())
121+
122+
// somewhere in the middle
123+
removed, err = step.Remove("C")
124+
noError(t, err)
125+
expectID(t, removed, "C")
126+
expectIDList(t, []string{"B", "D"}, step.List())
127+
128+
// it's the only one (have to remove two to get there)
129+
step.Remove("B")
130+
removed, err = step.Remove("D")
131+
noError(t, err)
132+
expectID(t, removed, "D")
133+
expectIDList(t, nil, step.List())
134+
135+
// empty
136+
if _, err := step.Remove("ILLUSION"); err == nil {
137+
t.Error("expect err, got none")
138+
}
139+
}
140+
141+
func TestInitializeStep_Clear(t *testing.T) {
142+
step := NewInitializeStep()
143+
step.Add(mockInitializeMiddleware("A"), After)
144+
step.Add(mockInitializeMiddleware("B"), After)
145+
step.Add(mockInitializeMiddleware("C"), After)
146+
147+
expectIDList(t, []string{"A", "B", "C"}, step.List())
148+
step.Clear()
149+
expectIDList(t, nil, step.List())
150+
}

0 commit comments

Comments
 (0)