From 138da0f969bbf73df48e52b37f8cfacad5feb4a9 Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Mon, 6 Feb 2023 08:28:38 +1100 Subject: [PATCH] Fix adding/removing projects using flags for edit commands (#6955) --- pkg/cmd/issue/edit/edit_test.go | 8 ++++---- pkg/cmd/pr/edit/edit_test.go | 12 +++++------- pkg/cmd/pr/shared/editable.go | 21 ++++++++++++--------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/pkg/cmd/issue/edit/edit_test.go b/pkg/cmd/issue/edit/edit_test.go index e378ef6b36b..891fe24144a 100644 --- a/pkg/cmd/issue/edit/edit_test.go +++ b/pkg/cmd/issue/edit/edit_test.go @@ -284,8 +284,8 @@ func Test_editRun(t *testing.T) { }, Projects: prShared.EditableProjects{ EditableSlice: prShared.EditableSlice{ - Add: []string{"Cleanup", "RoadmapV2"}, - Remove: []string{"Roadmap", "CleanupV2"}, + Add: []string{"Cleanup", "CleanupV2"}, + Remove: []string{"Roadmap", "RoadmapV2"}, Edited: true, }, }, @@ -332,7 +332,7 @@ func Test_editRun(t *testing.T) { eo.Labels.Value = []string{"feature", "TODO", "bug"} eo.Labels.Add = []string{"feature", "TODO", "bug"} eo.Labels.Remove = []string{"docs"} - eo.Projects.Value = []string{"Cleanup", "RoadmapV2"} + eo.Projects.Value = []string{"Cleanup", "CleanupV2"} eo.Milestone.Value = "GA" return nil }, @@ -404,7 +404,7 @@ func mockIssueProjectItemsGet(_ *testing.T, reg *httpmock.Registry) { { "data": { "repository": { "issue": { "projectItems": { "nodes": [ - { "id": "ITEMID", "project": { "title": "CleanupV2" } } + { "id": "ITEMID", "project": { "title": "RoadmapV2" } } ] } } } } }`), diff --git a/pkg/cmd/pr/edit/edit_test.go b/pkg/cmd/pr/edit/edit_test.go index 1eccd53bf7d..f81e08cd153 100644 --- a/pkg/cmd/pr/edit/edit_test.go +++ b/pkg/cmd/pr/edit/edit_test.go @@ -347,8 +347,8 @@ func Test_editRun(t *testing.T) { }, Projects: shared.EditableProjects{ EditableSlice: shared.EditableSlice{ - Add: []string{"Cleanup", "RoadmapV2"}, - Remove: []string{"CleanupV2", "Roadmap"}, + Add: []string{"Cleanup", "CleanupV2"}, + Remove: []string{"Roadmap", "RoadmapV2"}, Edited: true, }, }, @@ -401,8 +401,8 @@ func Test_editRun(t *testing.T) { }, Projects: shared.EditableProjects{ EditableSlice: shared.EditableSlice{ - Add: []string{"Cleanup", "RoadmapV2"}, - Remove: []string{"CleanupV2", "Roadmap"}, + Add: []string{"Cleanup", "CleanupV2"}, + Remove: []string{"Roadmap", "RoadmapV2"}, Edited: true, }, }, @@ -655,9 +655,7 @@ func (s testSurveyor) EditFields(e *shared.Editable, _ string) error { e.Labels.Value = []string{"feature", "TODO", "bug"} e.Labels.Add = []string{"feature", "TODO", "bug"} e.Labels.Remove = []string{"docs"} - e.Projects.Value = []string{"Cleanup", "RoadmapV2"} - e.Projects.Add = []string{"Cleanup", "RoadmapV2"} - e.Projects.Remove = []string{"CleanupV2", "Roadmap"} + e.Projects.Value = []string{"Cleanup", "CleanupV2"} e.Milestone.Value = "GA" return nil } diff --git a/pkg/cmd/pr/shared/editable.go b/pkg/cmd/pr/shared/editable.go index 225dad484b0..7564c24cd58 100644 --- a/pkg/cmd/pr/shared/editable.go +++ b/pkg/cmd/pr/shared/editable.go @@ -153,17 +153,20 @@ func (e Editable) ProjectV2Ids() (*[]string, *[]string, error) { // titles of projects to add addTitles := set.NewStringSet() - addTitles.AddValues(e.Projects.Value) - addTitles.AddValues(e.Projects.Add) - addTitles.RemoveValues(e.Projects.Default) - addTitles.RemoveValues(e.Projects.Remove) - // titles of projects to remove removeTitles := set.NewStringSet() - removeTitles.AddValues(e.Projects.Default) - removeTitles.AddValues(e.Projects.Remove) - removeTitles.RemoveValues(e.Projects.Value) - removeTitles.RemoveValues(e.Projects.Add) + + if len(e.Projects.Add) != 0 || len(e.Projects.Remove) != 0 { + // Projects were selected using flags. + addTitles.AddValues(e.Projects.Add) + removeTitles.AddValues(e.Projects.Remove) + } else { + // Projects were selected interactively. + addTitles.AddValues(e.Projects.Value) + addTitles.RemoveValues(e.Projects.Default) + removeTitles.AddValues(e.Projects.Default) + removeTitles.RemoveValues(e.Projects.Value) + } var addIds []string var removeIds []string