Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 9 additions & 38 deletions internal/services/projects.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,11 @@ func FindProject(
}

for i := 0; i < len(resp.Projects); i++ {
if resp.Projects[i].Name == projectName {
project := resp.Projects[i]
if project.Name == projectName {
projectTags, _ := cmd.Flags().GetString(commonParams.ProjectTagList)
projectPrivatePackage, _ := cmd.Flags().GetString(commonParams.ProjecPrivatePackageFlag)
return updateProject(
resp,
cmd,
projectsWrapper,
groupsWrapper,
accessManagementWrapper,
applicationWrapper,
projectName,
applicationID,
projectTags,
projectPrivatePackage,
featureFlagsWrapper)
return updateProject(&project, cmd, projectsWrapper, applicationWrapper, applicationID, projectTags, projectPrivatePackage)
}
}

Expand Down Expand Up @@ -174,34 +164,15 @@ func verifyApplicationAssociationDone(applicationName, projectID string, applica
}

//nolint:gocyclo
func updateProject(
resp *wrappers.ProjectsCollectionResponseModel,
cmd *cobra.Command,
projectsWrapper wrappers.ProjectsWrapper,
groupsWrapper wrappers.GroupsWrapper,
accessManagementWrapper wrappers.AccessManagementWrapper,
applicationsWrapper wrappers.ApplicationsWrapper,
projectName string,
applicationID []string,
projectTags string,
projectPrivatePackage string,
featureFlagsWrapper wrappers.FeatureFlagsWrapper,

) (string, error) {
func updateProject(project *wrappers.ProjectResponseModel,
cmd *cobra.Command, projectsWrapper wrappers.ProjectsWrapper, applicationsWrapper wrappers.ApplicationsWrapper,
applicationID []string, projectTags string, projectPrivatePackage string) (string, error) {
var projectID string
applicationName, _ := cmd.Flags().GetString(commonParams.ApplicationName)
var projModel = wrappers.Project{}
for i := 0; i < len(resp.Projects); i++ {
if resp.Projects[i].Name == projectName {
projectID = resp.Projects[i].ID
}
if resp.Projects[i].MainBranch != "" {
projModel.MainBranch = resp.Projects[i].MainBranch
}
if resp.Projects[i].RepoURL != "" {
projModel.RepoURL = resp.Projects[i].RepoURL
}
}
projectID = project.ID
projModel.MainBranch = project.MainBranch
projModel.RepoURL = project.RepoURL
if projectTags == "" && projectPrivatePackage == "" && len(applicationID) == 0 {
logger.PrintIfVerbose("No applicationId or tags to update. Skipping project update.")
return projectID, nil
Expand Down
135 changes: 72 additions & 63 deletions internal/services/projects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,15 +181,14 @@ func Test_createProject(t *testing.T) {

func Test_updateProject(t *testing.T) {
type args struct {
resp *wrappers.ProjectsCollectionResponseModel
project *wrappers.ProjectResponseModel
cmd *cobra.Command
projectsWrapper wrappers.ProjectsWrapper
groupsWrapper wrappers.GroupsWrapper
accessManagementWrapper wrappers.AccessManagementWrapper
applicationsWrapper wrappers.ApplicationsWrapper
projectName string
applicationID []string
projectGroups string
projectTags string
projectPrivatePackage string
featureFlagsWrapper wrappers.FeatureFlagsWrapper
Expand All @@ -200,75 +199,85 @@ func Test_updateProject(t *testing.T) {
want string
wantErr bool
}{
{name: "When called with existing project, update the project and return the project Id", args: args{
resp: &wrappers.ProjectsCollectionResponseModel{
Projects: []wrappers.ProjectResponseModel{
{ID: "ID-project-name", Name: "project-name"}},
{
name: "When called with existing project, update the project and return the project Id",
args: args{
project: &wrappers.ProjectResponseModel{
ID: "ID-project-name",
Name: "project-name",
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
applicationID: nil,
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
applicationID: nil,
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
}, want: "ID-project-name", wantErr: false},
{name: "without app ID and with project tags", args: args{
resp: &wrappers.ProjectsCollectionResponseModel{
Projects: []wrappers.ProjectResponseModel{
{ID: "ID-project-name", Name: "project-name"}},
want: "ID-project-name",
wantErr: false,
},
{
name: "without app ID and with project tags",
args: args{
project: &wrappers.ProjectResponseModel{
ID: "ID-project-name",
Name: "project-name",
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
projectTags: "tag1,tag2",
applicationID: nil,
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
projectTags: "tag1,tag2",
applicationID: nil,
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
}, want: "ID-project-name", wantErr: false},
{name: "When called with application ID", args: args{
resp: &wrappers.ProjectsCollectionResponseModel{
Projects: []wrappers.ProjectResponseModel{
{ID: "ID-project-name", Name: "project-name"}},
want: "ID-project-name",
wantErr: false,
},
{
name: "When called with application ID",
args: args{
project: &wrappers.ProjectResponseModel{
ID: "ID-project-name",
Name: "project-name",
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
projectPrivatePackage: "true",
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
projectName: "project-name",
projectPrivatePackage: "true",
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
}, want: "ID-project-name", wantErr: false},
{name: "When called with mock fake error model return fake error from project create", args: args{
projectName: "mock-some-error-model",
resp: &wrappers.ProjectsCollectionResponseModel{
Projects: []wrappers.ProjectResponseModel{
{ID: "ID-mock-some-error-model", Name: "mock-some-error-model"}},
want: "ID-project-name",
wantErr: false,
},
{
name: "When called with mock fake error model return fake error from project create",
args: args{
projectName: "mock-some-error-model",
project: &wrappers.ProjectResponseModel{
ID: "ID-mock-some-error-model",
Name: "mock-some-error-model",
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
applicationID: []string{"1"},
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
},
cmd: &cobra.Command{},
projectsWrapper: &mock.ProjectsMockWrapper{},
groupsWrapper: &mock.GroupsMockWrapper{},
accessManagementWrapper: &mock.AccessManagementMockWrapper{},
applicationID: []string{"1"},
featureFlagsWrapper: &mock.FeatureFlagsMockWrapper{},
}, want: "", wantErr: true},
want: "",
wantErr: true,
},
}
for _, tt := range tests {
ttt := tt
t.Run(tt.name, func(t *testing.T) {
got, err := updateProject(
ttt.args.resp,
ttt.args.cmd,
ttt.args.projectsWrapper,
ttt.args.groupsWrapper,
ttt.args.accessManagementWrapper,
ttt.args.applicationsWrapper,
ttt.args.projectName,
ttt.args.applicationID,
ttt.args.projectTags,
ttt.args.projectPrivatePackage,
ttt.args.featureFlagsWrapper)
got, err := updateProject(ttt.args.project, ttt.args.cmd, ttt.args.projectsWrapper,
ttt.args.applicationsWrapper, ttt.args.applicationID, ttt.args.projectTags, ttt.args.projectPrivatePackage)
if (err != nil) != ttt.wantErr {
t.Errorf("updateProject() error = %v, wantErr %v", err, ttt.wantErr)
return
Expand Down
Loading