1package gitlab
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7)
8
9func TestProjectPath(t *testing.T) {
10 type args struct {
11 url string
12 }
13 type want struct {
14 path string
15 err error
16 }
17 tests := []struct {
18 name string
19 args args
20 want want
21 }{
22 {
23 name: "default url",
24 args: args{
25 url: "https://gitlab.com/MichaelMure/git-bug",
26 },
27 want: want{
28 path: "MichaelMure/git-bug",
29 err: nil,
30 },
31 },
32 {
33 name: "multiple sub groups",
34 args: args{
35 url: "https://gitlab.com/MichaelMure/group/subgroup/git-bug",
36 },
37 want: want{
38 path: "MichaelMure/group/subgroup/git-bug",
39 err: nil,
40 },
41 },
42 {
43 name: "default url with git extension",
44 args: args{
45 url: "https://gitlab.com/MichaelMure/git-bug.git",
46 },
47 want: want{
48 path: "MichaelMure/git-bug",
49 err: nil,
50 },
51 },
52 {
53 name: "url with git protocol",
54 args: args{
55 url: "git://gitlab.com/MichaelMure/git-bug.git",
56 },
57 want: want{
58 path: "MichaelMure/git-bug",
59 err: nil,
60 },
61 },
62 {
63 name: "ssh url",
64 args: args{
65 url: "git@gitlab.com/MichaelMure/git-bug.git",
66 },
67 want: want{
68 path: "MichaelMure/git-bug",
69 err: nil,
70 },
71 },
72 {
73 name: "bad url",
74 args: args{
75 url: "---,%gitlab.com/MichaelMure/git-bug.git",
76 },
77 want: want{
78 err: ErrBadProjectURL,
79 },
80 },
81 }
82
83 for _, tt := range tests {
84 t.Run(tt.name, func(t *testing.T) {
85 path, err := getProjectPath(defaultBaseURL, tt.args.url)
86 assert.Equal(t, tt.want.path, path)
87 assert.Equal(t, tt.want.err, err)
88 })
89 }
90}