-
Notifications
You must be signed in to change notification settings - Fork 1
/
join_test.go
75 lines (70 loc) · 1.83 KB
/
join_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
package urls_test
import (
"testing"
"github.com/kaluza-tech/urls"
"gotest.tools/assert"
)
func TestJoin(t *testing.T) {
t.Parallel()
table := []struct {
name string
args []string
expected string
}{
{
name: "Same as path.Join",
args: []string{"hello/world", "addition"},
expected: "hello/world/addition",
},
{
name: "Same as path.Join with trailing slash",
args: []string{"hello/world/", "addition"},
expected: "hello/world/addition",
},
{
name: "Multiple additions to path",
args: []string{"hello/world", "addition/", "/another/", "/again"},
expected: "hello/world/addition/another/again",
},
{
name: "URL protocol",
args: []string{"https://hello/world/", "addition"},
expected: "https://hello/world/addition",
},
{
name: "0 args",
args: []string{},
expected: "",
},
{
name: "Query Params are dealt with elegantly",
args: []string{"https://hello/world?query=param&hello=world", "addition"},
expected: "https://hello/world/addition?query=param&hello=world",
},
{
name: "Query Params without URL protocol are dealt with elegantly",
args: []string{"hello/world?query=param&hello=world", "addition"},
expected: "hello/world/addition?query=param&hello=world",
},
{
name: "Continuations are dealt with elegantly",
args: []string{"https://hello/world#idOfSomeThing", "addition"},
expected: "https://hello/world/addition#idOfSomeThing",
},
}
for _, test := range table {
tc := test
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
result, err := urls.Join(tc.args...)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, tc.expected, result)
})
}
}
func TestJoinError(t *testing.T) {
_, err := urls.Join(string(0x7f))
assert.ErrorContains(t, err, "url.Parse")
}