Verified Commit 85e2b010 authored by Zubeen's avatar Zubeen 🤖 Committed by GitLab
Browse files

feat(merge_requests): add milestone and merge_after to create and update options

Changelog: Improvements
parent 23eb0a84
Loading
Loading
Loading
Loading
+4 −0
Changes for merge_requests.go: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -721,6 +721,8 @@ type CreateMergeRequestOptions struct {
	ReviewerIDs        *[]int64      `url:"reviewer_ids,omitempty" json:"reviewer_ids,omitempty"`
	TargetProjectID    *int64        `url:"target_project_id,omitempty" json:"target_project_id,omitempty"`
	MilestoneID        *int64        `url:"milestone_id,omitempty" json:"milestone_id,omitempty"`
	Milestone          *string       `url:"milestone,omitempty" json:"milestone,omitempty"`
	MergeAfter         *time.Time    `url:"merge_after,omitempty" json:"merge_after,omitempty"`
	RemoveSourceBranch *bool         `url:"remove_source_branch,omitempty" json:"remove_source_branch,omitempty"`
	Squash             *bool         `url:"squash,omitempty" json:"squash,omitempty"`
	AllowCollaboration *bool         `url:"allow_collaboration,omitempty" json:"allow_collaboration,omitempty"`
@@ -758,6 +760,8 @@ type UpdateMergeRequestOptions struct {
	AddLabels          *LabelOptions `url:"add_labels,comma,omitempty" json:"add_labels,omitempty"`
	RemoveLabels       *LabelOptions `url:"remove_labels,comma,omitempty" json:"remove_labels,omitempty"`
	MilestoneID        *int64        `url:"milestone_id,omitempty" json:"milestone_id,omitempty"`
	Milestone          *string       `url:"milestone,omitempty" json:"milestone,omitempty"`
	MergeAfter         *time.Time    `url:"merge_after,omitempty" json:"merge_after,omitempty"`
	StateEvent         *string       `url:"state_event,omitempty" json:"state_event,omitempty"`
	RemoveSourceBranch *bool         `url:"remove_source_branch,omitempty" json:"remove_source_branch,omitempty"`
	Squash             *bool         `url:"squash,omitempty" json:"squash,omitempty"`
+62 −0
Changes for merge_requests_test.go: 62 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -807,3 +807,65 @@ func TestListGroupMergeRequests_search(t *testing.T) {

	assert.Contains(t, mr.Description, "Renovate")
}

func TestCreateMergeRequest_milestoneAndMergeAfter(t *testing.T) {
	t.Parallel()
	mux, client := setup(t)

	mux.HandleFunc("/api/v4/projects/1/merge_requests", func(w http.ResponseWriter, r *http.Request) {
		testMethod(t, r, http.MethodPost)
		testBodyJSON(t, r, map[string]any{
			"title":         "New MR",
			"source_branch": "feature",
			"target_branch": "main",
			"milestone":     "v1.0",
			"merge_after":   "2019-03-15T08:00:00Z",
		})
		mustWriteHTTPResponse(t, w, "testdata/get_merge_request.json")
	})

	// GIVEN options with milestone title and merge_after
	opt := &CreateMergeRequestOptions{
		Title:        new("New MR"),
		SourceBranch: new("feature"),
		TargetBranch: new("main"),
		Milestone:    new("v1.0"),
		MergeAfter:   mustParseTime("2019-03-15T08:00:00Z"),
	}

	// WHEN creating the merge request
	mr, resp, err := client.MergeRequests.CreateMergeRequest(1, opt)

	// THEN both attributes are sent
	require.NoError(t, err)
	require.NotNil(t, resp)
	require.NotNil(t, mr)
}

func TestUpdateMergeRequest_milestoneAndMergeAfter(t *testing.T) {
	t.Parallel()
	mux, client := setup(t)

	mux.HandleFunc("/api/v4/projects/1/merge_requests/2", func(w http.ResponseWriter, r *http.Request) {
		testMethod(t, r, http.MethodPut)
		testBodyJSON(t, r, map[string]any{
			"milestone":   "v1.0",
			"merge_after": "2019-03-15T08:00:00Z",
		})
		mustWriteHTTPResponse(t, w, "testdata/get_merge_request.json")
	})

	// GIVEN options with milestone title and merge_after
	opt := &UpdateMergeRequestOptions{
		Milestone:  new("v1.0"),
		MergeAfter: mustParseTime("2019-03-15T08:00:00Z"),
	}

	// WHEN updating the merge request
	mr, resp, err := client.MergeRequests.UpdateMergeRequest(1, 2, opt)

	// THEN both attributes are sent
	require.NoError(t, err)
	require.NotNil(t, resp)
	require.NotNil(t, mr)
}