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}