Skip to content

Commit f761b3e

Browse files
CLI | Fix Primary branch deletion in CxOne (AST-74968) (#968)
* fix llinter * fix linter * simplify * refactor * delete unused function --------- Co-authored-by: AlvoBen <[email protected]>
1 parent f407a06 commit f761b3e

File tree

2 files changed

+81
-101
lines changed

2 files changed

+81
-101
lines changed

internal/services/projects.go

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,11 @@ func FindProject(
3737
}
3838

3939
for i := 0; i < len(resp.Projects); i++ {
40-
if resp.Projects[i].Name == projectName {
40+
project := resp.Projects[i]
41+
if project.Name == projectName {
4142
projectTags, _ := cmd.Flags().GetString(commonParams.ProjectTagList)
4243
projectPrivatePackage, _ := cmd.Flags().GetString(commonParams.ProjecPrivatePackageFlag)
43-
return updateProject(
44-
resp,
45-
cmd,
46-
projectsWrapper,
47-
groupsWrapper,
48-
accessManagementWrapper,
49-
applicationWrapper,
50-
projectName,
51-
applicationID,
52-
projectTags,
53-
projectPrivatePackage,
54-
featureFlagsWrapper)
44+
return updateProject(&project, cmd, projectsWrapper, applicationWrapper, applicationID, projectTags, projectPrivatePackage)
5545
}
5646
}
5747

@@ -174,34 +164,15 @@ func verifyApplicationAssociationDone(applicationName, projectID string, applica
174164
}
175165

176166
//nolint:gocyclo
177-
func updateProject(
178-
resp *wrappers.ProjectsCollectionResponseModel,
179-
cmd *cobra.Command,
180-
projectsWrapper wrappers.ProjectsWrapper,
181-
groupsWrapper wrappers.GroupsWrapper,
182-
accessManagementWrapper wrappers.AccessManagementWrapper,
183-
applicationsWrapper wrappers.ApplicationsWrapper,
184-
projectName string,
185-
applicationID []string,
186-
projectTags string,
187-
projectPrivatePackage string,
188-
featureFlagsWrapper wrappers.FeatureFlagsWrapper,
189-
190-
) (string, error) {
167+
func updateProject(project *wrappers.ProjectResponseModel,
168+
cmd *cobra.Command, projectsWrapper wrappers.ProjectsWrapper, applicationsWrapper wrappers.ApplicationsWrapper,
169+
applicationID []string, projectTags string, projectPrivatePackage string) (string, error) {
191170
var projectID string
192171
applicationName, _ := cmd.Flags().GetString(commonParams.ApplicationName)
193172
var projModel = wrappers.Project{}
194-
for i := 0; i < len(resp.Projects); i++ {
195-
if resp.Projects[i].Name == projectName {
196-
projectID = resp.Projects[i].ID
197-
}
198-
if resp.Projects[i].MainBranch != "" {
199-
projModel.MainBranch = resp.Projects[i].MainBranch
200-
}
201-
if resp.Projects[i].RepoURL != "" {
202-
projModel.RepoURL = resp.Projects[i].RepoURL
203-
}
204-
}
173+
projectID = project.ID
174+
projModel.MainBranch = project.MainBranch
175+
projModel.RepoURL = project.RepoURL
205176
if projectTags == "" && projectPrivatePackage == "" && len(applicationID) == 0 {
206177
logger.PrintIfVerbose("No applicationId or tags to update. Skipping project update.")
207178
return projectID, nil

internal/services/projects_test.go

Lines changed: 72 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,14 @@ func Test_createProject(t *testing.T) {
181181

182182
func Test_updateProject(t *testing.T) {
183183
type args struct {
184-
resp *wrappers.ProjectsCollectionResponseModel
184+
project *wrappers.ProjectResponseModel
185185
cmd *cobra.Command
186186
projectsWrapper wrappers.ProjectsWrapper
187187
groupsWrapper wrappers.GroupsWrapper
188188
accessManagementWrapper wrappers.AccessManagementWrapper
189189
applicationsWrapper wrappers.ApplicationsWrapper
190190
projectName string
191191
applicationID []string
192-
projectGroups string
193192
projectTags string
194193
projectPrivatePackage string
195194
featureFlagsWrapper wrappers.FeatureFlagsWrapper
@@ -200,75 +199,85 @@ func Test_updateProject(t *testing.T) {
200199
want string
201200
wantErr bool
202201
}{
203-
{name: "When called with existing project, update the project and return the project Id", args: args{
204-
resp: &wrappers.ProjectsCollectionResponseModel{
205-
Projects: []wrappers.ProjectResponseModel{
206-
{ID: "ID-project-name", Name: "project-name"}},
202+
{
203+
name: "When called with existing project, update the project and return the project Id",
204+
args: args{
205+
project: &wrappers.ProjectResponseModel{
206+
ID: "ID-project-name",
207+
Name: "project-name",
208+
},
209+
cmd: &cobra.Command{},
210+
projectsWrapper: &mock.ProjectsMockWrapper{},
211+
groupsWrapper: &mock.GroupsMockWrapper{},
212+
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
213+
projectName: "project-name",
214+
applicationID: nil,
215+
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
207216
},
208-
cmd: &cobra.Command{},
209-
projectsWrapper: &mock.ProjectsMockWrapper{},
210-
groupsWrapper: &mock.GroupsMockWrapper{},
211-
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
212-
projectName: "project-name",
213-
applicationID: nil,
214-
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
215-
}, want: "ID-project-name", wantErr: false},
216-
{name: "without app ID and with project tags", args: args{
217-
resp: &wrappers.ProjectsCollectionResponseModel{
218-
Projects: []wrappers.ProjectResponseModel{
219-
{ID: "ID-project-name", Name: "project-name"}},
217+
want: "ID-project-name",
218+
wantErr: false,
219+
},
220+
{
221+
name: "without app ID and with project tags",
222+
args: args{
223+
project: &wrappers.ProjectResponseModel{
224+
ID: "ID-project-name",
225+
Name: "project-name",
226+
},
227+
cmd: &cobra.Command{},
228+
projectsWrapper: &mock.ProjectsMockWrapper{},
229+
groupsWrapper: &mock.GroupsMockWrapper{},
230+
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
231+
projectName: "project-name",
232+
projectTags: "tag1,tag2",
233+
applicationID: nil,
234+
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
220235
},
221-
cmd: &cobra.Command{},
222-
projectsWrapper: &mock.ProjectsMockWrapper{},
223-
groupsWrapper: &mock.GroupsMockWrapper{},
224-
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
225-
projectName: "project-name",
226-
projectTags: "tag1,tag2",
227-
applicationID: nil,
228-
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
229-
}, want: "ID-project-name", wantErr: false},
230-
{name: "When called with application ID", args: args{
231-
resp: &wrappers.ProjectsCollectionResponseModel{
232-
Projects: []wrappers.ProjectResponseModel{
233-
{ID: "ID-project-name", Name: "project-name"}},
236+
want: "ID-project-name",
237+
wantErr: false,
238+
},
239+
{
240+
name: "When called with application ID",
241+
args: args{
242+
project: &wrappers.ProjectResponseModel{
243+
ID: "ID-project-name",
244+
Name: "project-name",
245+
},
246+
cmd: &cobra.Command{},
247+
projectsWrapper: &mock.ProjectsMockWrapper{},
248+
groupsWrapper: &mock.GroupsMockWrapper{},
249+
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
250+
projectName: "project-name",
251+
projectPrivatePackage: "true",
252+
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
234253
},
235-
cmd: &cobra.Command{},
236-
projectsWrapper: &mock.ProjectsMockWrapper{},
237-
groupsWrapper: &mock.GroupsMockWrapper{},
238-
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
239-
projectName: "project-name",
240-
projectPrivatePackage: "true",
241-
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
242-
}, want: "ID-project-name", wantErr: false},
243-
{name: "When called with mock fake error model return fake error from project create", args: args{
244-
projectName: "mock-some-error-model",
245-
resp: &wrappers.ProjectsCollectionResponseModel{
246-
Projects: []wrappers.ProjectResponseModel{
247-
{ID: "ID-mock-some-error-model", Name: "mock-some-error-model"}},
254+
want: "ID-project-name",
255+
wantErr: false,
256+
},
257+
{
258+
name: "When called with mock fake error model return fake error from project create",
259+
args: args{
260+
projectName: "mock-some-error-model",
261+
project: &wrappers.ProjectResponseModel{
262+
ID: "ID-mock-some-error-model",
263+
Name: "mock-some-error-model",
264+
},
265+
cmd: &cobra.Command{},
266+
projectsWrapper: &mock.ProjectsMockWrapper{},
267+
groupsWrapper: &mock.GroupsMockWrapper{},
268+
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
269+
applicationID: []string{"1"},
270+
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
248271
},
249-
cmd: &cobra.Command{},
250-
projectsWrapper: &mock.ProjectsMockWrapper{},
251-
groupsWrapper: &mock.GroupsMockWrapper{},
252-
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
253-
applicationID: []string{"1"},
254-
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
255-
}, want: "", wantErr: true},
272+
want: "",
273+
wantErr: true,
274+
},
256275
}
257276
for _, tt := range tests {
258277
ttt := tt
259278
t.Run(tt.name, func(t *testing.T) {
260-
got, err := updateProject(
261-
ttt.args.resp,
262-
ttt.args.cmd,
263-
ttt.args.projectsWrapper,
264-
ttt.args.groupsWrapper,
265-
ttt.args.accessManagementWrapper,
266-
ttt.args.applicationsWrapper,
267-
ttt.args.projectName,
268-
ttt.args.applicationID,
269-
ttt.args.projectTags,
270-
ttt.args.projectPrivatePackage,
271-
ttt.args.featureFlagsWrapper)
279+
got, err := updateProject(ttt.args.project, ttt.args.cmd, ttt.args.projectsWrapper,
280+
ttt.args.applicationsWrapper, ttt.args.applicationID, ttt.args.projectTags, ttt.args.projectPrivatePackage)
272281
if (err != nil) != ttt.wantErr {
273282
t.Errorf("updateProject() error = %v, wantErr %v", err, ttt.wantErr)
274283
return

0 commit comments

Comments
 (0)