-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathloader_test.go
54 lines (50 loc) · 1.03 KB
/
loader_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
package xload
import (
"context"
"errors"
"testing"
)
func TestSerialLoader(t *testing.T) {
t.Parallel()
testcases := []testcase{
{
name: "serial loader",
input: &struct {
A string `env:"A"`
B string `env:"B"`
C string `env:"C"`
D string `env:"D"`
}{},
want: &struct {
A string `env:"A"`
B string `env:"B"`
C string `env:"C"`
D string `env:"D"`
}{
A: "loader-1: 1",
B: "loader-2: 2",
C: "loader-2: 3",
D: "",
},
loader: SerialLoader(
MapLoader{"A": "loader-1: 1", "B": "loader-1: 2"},
MapLoader{"B": "loader-2: 2", "C": "loader-2: 3"},
),
},
{
name: "serial loader: error",
input: &struct {
A string `env:"A"`
B string `env:"B"`
}{},
loader: SerialLoader(
MapLoader{"A": "loader-1: 1", "B": "loader-1: 2"},
LoaderFunc(func(ctx context.Context, key string) (string, error) {
return "", errors.New("error loading field")
}),
),
wantErr: errContains(errors.New("error loading field")),
},
}
runTestcases(t, testcases)
}