98 lines
2.0 KiB
Go
98 lines
2.0 KiB
Go
|
|
package util
|
||
|
|
|
||
|
|
import (
|
||
|
|
"net/url"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestJoinURL(t *testing.T) {
|
||
|
|
type args struct {
|
||
|
|
base string
|
||
|
|
paths []string
|
||
|
|
}
|
||
|
|
tests := []struct {
|
||
|
|
name string
|
||
|
|
args args
|
||
|
|
want string
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "single path",
|
||
|
|
args: args{
|
||
|
|
base: "https://www.google.co.uk/",
|
||
|
|
paths: []string{"search"},
|
||
|
|
},
|
||
|
|
want: "https://www.google.co.uk/search",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "multiple path",
|
||
|
|
args: args{
|
||
|
|
base: "https://www.google.co.uk",
|
||
|
|
paths: []string{"search", "string"},
|
||
|
|
},
|
||
|
|
want: "https://www.google.co.uk/search/string",
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "multiple path with slashes",
|
||
|
|
args: args{
|
||
|
|
base: "https://www.google.co.uk/",
|
||
|
|
paths: []string{"/search/", "/string/"},
|
||
|
|
},
|
||
|
|
want: "https://www.google.co.uk/search/string",
|
||
|
|
},
|
||
|
|
}
|
||
|
|
for _, tt := range tests {
|
||
|
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
|
if got := JoinURL(tt.args.base, tt.args.paths...); got != tt.want {
|
||
|
|
t.Errorf("JoinURL() = %v, want %v", got, tt.want)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestURLWithQuery(t *testing.T) {
|
||
|
|
type args struct {
|
||
|
|
base string
|
||
|
|
q url.Values
|
||
|
|
}
|
||
|
|
tests := []struct {
|
||
|
|
name string
|
||
|
|
args args
|
||
|
|
want string
|
||
|
|
wantErr bool
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "url with values",
|
||
|
|
args: args{
|
||
|
|
base: JoinURL("https://api.trakt.tv", "search", "tvdb", "12345"),
|
||
|
|
q: url.Values{
|
||
|
|
"extended": []string{"full"},
|
||
|
|
"type": []string{"show"},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
want: "https://api.trakt.tv/search/tvdb/12345?extended=full&type=show",
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "url without values",
|
||
|
|
args: args{
|
||
|
|
base: JoinURL("https://api.trakt.tv", "search", "tvdb", "12345"),
|
||
|
|
q: nil,
|
||
|
|
},
|
||
|
|
want: "https://api.trakt.tv/search/tvdb/12345",
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
for _, tt := range tests {
|
||
|
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
|
got, err := URLWithQuery(tt.args.base, tt.args.q)
|
||
|
|
if (err != nil) != tt.wantErr {
|
||
|
|
t.Errorf("URLWithQuery() error = %v, wantErr %v", err, tt.wantErr)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
if got != tt.want {
|
||
|
|
t.Errorf("URLWithQuery() got = %v, want %v", got, tt.want)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|