github.com/argoproj/argo-cd/v2@v2.10.9/applicationset/services/pull_request/utils_test.go (about) 1 package pull_request 2 3 import ( 4 "context" 5 "testing" 6 7 argoprojiov1alpha1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func strp(s string) *string { 12 return &s 13 } 14 func TestFilterBranchMatchBadRegexp(t *testing.T) { 15 provider, _ := NewFakeService( 16 context.Background(), 17 []*PullRequest{ 18 { 19 Number: 1, 20 Branch: "branch1", 21 TargetBranch: "master", 22 HeadSHA: "089d92cbf9ff857a39e6feccd32798ca700fb958", 23 }, 24 }, 25 nil, 26 ) 27 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{ 28 { 29 BranchMatch: strp("("), 30 }, 31 } 32 _, err := ListPullRequests(context.Background(), provider, filters) 33 assert.Error(t, err) 34 } 35 36 func TestFilterBranchMatch(t *testing.T) { 37 provider, _ := NewFakeService( 38 context.Background(), 39 []*PullRequest{ 40 { 41 Number: 1, 42 Branch: "one", 43 TargetBranch: "master", 44 HeadSHA: "189d92cbf9ff857a39e6feccd32798ca700fb958", 45 }, 46 { 47 Number: 2, 48 Branch: "two", 49 TargetBranch: "master", 50 HeadSHA: "289d92cbf9ff857a39e6feccd32798ca700fb958", 51 }, 52 { 53 Number: 3, 54 Branch: "three", 55 TargetBranch: "master", 56 HeadSHA: "389d92cbf9ff857a39e6feccd32798ca700fb958", 57 }, 58 { 59 Number: 4, 60 Branch: "four", 61 TargetBranch: "master", 62 HeadSHA: "489d92cbf9ff857a39e6feccd32798ca700fb958", 63 }, 64 }, 65 nil, 66 ) 67 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{ 68 { 69 BranchMatch: strp("w"), 70 }, 71 } 72 pullRequests, err := ListPullRequests(context.Background(), provider, filters) 73 assert.NoError(t, err) 74 assert.Len(t, pullRequests, 1) 75 assert.Equal(t, "two", pullRequests[0].Branch) 76 } 77 78 func TestFilterTargetBranchMatch(t *testing.T) { 79 provider, _ := NewFakeService( 80 context.Background(), 81 []*PullRequest{ 82 { 83 Number: 1, 84 Branch: "one", 85 TargetBranch: "master", 86 HeadSHA: "189d92cbf9ff857a39e6feccd32798ca700fb958", 87 }, 88 { 89 Number: 2, 90 Branch: "two", 91 TargetBranch: "branch1", 92 HeadSHA: "289d92cbf9ff857a39e6feccd32798ca700fb958", 93 }, 94 { 95 Number: 3, 96 Branch: "three", 97 TargetBranch: "branch2", 98 HeadSHA: "389d92cbf9ff857a39e6feccd32798ca700fb958", 99 }, 100 { 101 Number: 4, 102 Branch: "four", 103 TargetBranch: "branch3", 104 HeadSHA: "489d92cbf9ff857a39e6feccd32798ca700fb958", 105 }, 106 }, 107 nil, 108 ) 109 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{ 110 { 111 TargetBranchMatch: strp("1"), 112 }, 113 } 114 pullRequests, err := ListPullRequests(context.Background(), provider, filters) 115 assert.NoError(t, err) 116 assert.Len(t, pullRequests, 1) 117 assert.Equal(t, "two", pullRequests[0].Branch) 118 } 119 120 func TestMultiFilterOr(t *testing.T) { 121 provider, _ := NewFakeService( 122 context.Background(), 123 []*PullRequest{ 124 { 125 Number: 1, 126 Branch: "one", 127 TargetBranch: "master", 128 HeadSHA: "189d92cbf9ff857a39e6feccd32798ca700fb958", 129 }, 130 { 131 Number: 2, 132 Branch: "two", 133 TargetBranch: "master", 134 HeadSHA: "289d92cbf9ff857a39e6feccd32798ca700fb958", 135 }, 136 { 137 Number: 3, 138 Branch: "three", 139 TargetBranch: "master", 140 HeadSHA: "389d92cbf9ff857a39e6feccd32798ca700fb958", 141 }, 142 { 143 Number: 4, 144 Branch: "four", 145 TargetBranch: "master", 146 HeadSHA: "489d92cbf9ff857a39e6feccd32798ca700fb958", 147 }, 148 }, 149 nil, 150 ) 151 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{ 152 { 153 BranchMatch: strp("w"), 154 }, 155 { 156 BranchMatch: strp("r"), 157 }, 158 } 159 pullRequests, err := ListPullRequests(context.Background(), provider, filters) 160 assert.NoError(t, err) 161 assert.Len(t, pullRequests, 3) 162 assert.Equal(t, "two", pullRequests[0].Branch) 163 assert.Equal(t, "three", pullRequests[1].Branch) 164 assert.Equal(t, "four", pullRequests[2].Branch) 165 } 166 167 func TestMultiFilterOrWithTargetBranchFilter(t *testing.T) { 168 provider, _ := NewFakeService( 169 context.Background(), 170 []*PullRequest{ 171 { 172 Number: 1, 173 Branch: "one", 174 TargetBranch: "master", 175 HeadSHA: "189d92cbf9ff857a39e6feccd32798ca700fb958", 176 }, 177 { 178 Number: 2, 179 Branch: "two", 180 TargetBranch: "branch1", 181 HeadSHA: "289d92cbf9ff857a39e6feccd32798ca700fb958", 182 }, 183 { 184 Number: 3, 185 Branch: "three", 186 TargetBranch: "branch2", 187 HeadSHA: "389d92cbf9ff857a39e6feccd32798ca700fb958", 188 }, 189 { 190 Number: 4, 191 Branch: "four", 192 TargetBranch: "branch3", 193 HeadSHA: "489d92cbf9ff857a39e6feccd32798ca700fb958", 194 }, 195 }, 196 nil, 197 ) 198 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{ 199 { 200 BranchMatch: strp("w"), 201 TargetBranchMatch: strp("1"), 202 }, 203 { 204 BranchMatch: strp("r"), 205 TargetBranchMatch: strp("3"), 206 }, 207 } 208 pullRequests, err := ListPullRequests(context.Background(), provider, filters) 209 assert.NoError(t, err) 210 assert.Len(t, pullRequests, 2) 211 assert.Equal(t, "two", pullRequests[0].Branch) 212 assert.Equal(t, "four", pullRequests[1].Branch) 213 } 214 215 func TestNoFilters(t *testing.T) { 216 provider, _ := NewFakeService( 217 context.Background(), 218 []*PullRequest{ 219 { 220 Number: 1, 221 Branch: "one", 222 TargetBranch: "master", 223 HeadSHA: "189d92cbf9ff857a39e6feccd32798ca700fb958", 224 }, 225 { 226 Number: 2, 227 Branch: "two", 228 TargetBranch: "master", 229 HeadSHA: "289d92cbf9ff857a39e6feccd32798ca700fb958", 230 }, 231 }, 232 nil, 233 ) 234 filters := []argoprojiov1alpha1.PullRequestGeneratorFilter{} 235 repos, err := ListPullRequests(context.Background(), provider, filters) 236 assert.NoError(t, err) 237 assert.Len(t, repos, 2) 238 assert.Equal(t, "one", repos[0].Branch) 239 assert.Equal(t, "two", repos[1].Branch) 240 }