-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathexists_test.go
108 lines (101 loc) · 3.11 KB
/
exists_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
package storage
import (
"context"
"github.com/stretchr/testify/assert"
"github.com/viant/endly"
"github.com/viant/endly/model/location"
"strings"
"testing"
)
func TestService_Exists(t *testing.T) {
var useCases = []struct {
description string
request *ExistsRequest
populate []*location.Resource
expectError bool
expect map[string]bool
}{
{
description: "single asset exists",
populate: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case001/f1"),
},
expect: map[string]bool{
location.NewResource("mem://127.0.0.1/test/storage/exists/case001/f1").URL: true,
},
request: &ExistsRequest{
Assets: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case001/f1"),
},
},
},
{
description: "multi asset exists",
populate: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case002/f1"),
},
expect: map[string]bool{
location.NewResource("mem://127.0.0.1/test/storage/exists/case002/f1").URL: true,
location.NewResource("mem://127.0.0.1/test/storage/exists/case002/f2").URL: false,
},
request: &ExistsRequest{
Assets: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case002/f1"),
location.NewResource("mem://127.0.0.1/test/storage/exists/case002/f2"),
},
},
},
{
description: "invalid request error",
request: &ExistsRequest{},
expectError: true,
},
{
description: "invalid asset URL error",
request: &ExistsRequest{
Assets: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case003/f1"),
location.NewResource("err://127.0.0.1/test/storage/exists/case003/f2"),
},
},
expectError: true,
},
{
description: "multi asset exists with assert",
populate: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f1"),
},
expect: map[string]bool{
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f1").URL: true,
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f2").URL: false,
},
request: &ExistsRequest{
Assets: []*location.Resource{
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f1"),
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f2"),
},
Expect: map[string]bool{
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f1").URL: true,
location.NewResource("mem://127.0.0.1/test/storage/exists/case004/f2").URL: false,
},
},
},
}
for _, useCase := range useCases {
if len(useCase.populate) > 0 {
for _, resource := range useCase.populate {
_ = fs.Upload(context.Background(), resource.URL, 0644, strings.NewReader("test"))
}
}
response := &ExistsResponse{}
err := endly.Run(nil, useCase.request, response)
if useCase.expectError {
assert.NotNil(t, err, useCase.description)
continue
}
if !assert.Nil(t, err, useCase.description) {
continue
}
assert.EqualValues(t, useCase.expect, response.Exists, useCase.description)
}
}