config_test.go

 1package launchpad
 2
 3import (
 4	"testing"
 5
 6	"github.com/stretchr/testify/assert"
 7)
 8
 9func TestSplitURL(t *testing.T) {
10	type args struct {
11		url string
12	}
13	type want struct {
14		project string
15		err     error
16	}
17	tests := []struct {
18		name string
19		args args
20		want want
21	}{
22		{
23			name: "default project url",
24			args: args{
25				url: "https://launchpad.net/ubuntu",
26			},
27			want: want{
28				project: "ubuntu",
29				err:     nil,
30			},
31		},
32		{
33			name: "project bugs url",
34			args: args{
35				url: "https://bugs.launchpad.net/ubuntu",
36			},
37			want: want{
38				project: "ubuntu",
39				err:     nil,
40			},
41		},
42		{
43			name: "bad url",
44			args: args{
45				url: "https://launchpa.net/ubuntu",
46			},
47			want: want{
48				err: ErrBadProjectURL,
49			},
50		},
51	}
52
53	for _, tt := range tests {
54		t.Run(tt.name, func(t *testing.T) {
55			project, err := splitURL(tt.args.url)
56			assert.Equal(t, tt.want.err, err)
57			assert.Equal(t, tt.want.project, project)
58		})
59	}
60}
61
62func TestValidateProject(t *testing.T) {
63	type args struct {
64		project string
65	}
66	tests := []struct {
67		name string
68		args args
69		want bool
70	}{
71		{
72			name: "public project",
73			args: args{
74				project: "ubuntu",
75			},
76			want: true,
77		},
78		{
79			name: "non existing project",
80			args: args{
81				project: "cant-find-this",
82			},
83			want: false,
84		},
85	}
86
87	for _, tt := range tests {
88		t.Run(tt.name, func(t *testing.T) {
89			ok, _ := validateProject(tt.args.project)
90			assert.Equal(t, tt.want, ok)
91		})
92	}
93}