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}