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  }