diff --git a/services/repository/template.go b/services/repository/template.go index 96033cb98d..c49e2cdde0 100644 --- a/services/repository/template.go +++ b/services/repository/template.go @@ -33,11 +33,12 @@ func GenerateIssueLabels(ctx context.Context, templateRepo, generateRepo *repo_m newLabels := make([]*issues_model.Label, 0, len(templateLabels)) for _, templateLabel := range templateLabels { newLabels = append(newLabels, &issues_model.Label{ - RepoID: generateRepo.ID, - Name: templateLabel.Name, - Exclusive: templateLabel.Exclusive, - Description: templateLabel.Description, - Color: templateLabel.Color, + RepoID: generateRepo.ID, + Name: templateLabel.Name, + Exclusive: templateLabel.Exclusive, + ExclusiveOrder: templateLabel.ExclusiveOrder, + Description: templateLabel.Description, + Color: templateLabel.Color, }) } return db.Insert(ctx, newLabels) diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index 1841598285..b036ffff35 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -13,6 +13,8 @@ import ( "testing" "time" + "code.gitea.io/gitea/models/db" + issues_model "code.gitea.io/gitea/models/issues" repo_model "code.gitea.io/gitea/models/repo" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/unittest" @@ -525,19 +527,39 @@ func TestGenerateRepository(t *testing.T) { user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) repo44 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 44}) + tmplRepoLabels := []*issues_model.Label{ + {RepoID: 44, Name: "priority/high", Exclusive: true, ExclusiveOrder: 2, Color: "#ee0000", Description: "desc-high"}, + {RepoID: 44, Name: "priority/low", Exclusive: true, ExclusiveOrder: 1, Color: "#0000ee", Description: "desc-low"}, + } + + require.NoError(t, issues_model.NewLabels(t.Context(), tmplRepoLabels...)) + generatedRepo, err := repo_service.GenerateRepository(t.Context(), user2, user2, repo44, repo_service.GenerateRepoOptions{ - Name: "generated-from-template-44", - GitContent: true, + Name: "generated-from-template-44", + GitContent: true, + IssueLabels: true, }) - assert.NoError(t, err) - assert.NotNil(t, generatedRepo) + require.NoError(t, err) + require.NotNil(t, generatedRepo) exist, err := util.IsExist(repo_model.RepoPath(user2.Name, generatedRepo.Name)) - assert.NoError(t, err) - assert.True(t, exist) + require.NoError(t, err) + require.True(t, exist) unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: generatedRepo.Name}) + generatedLabels, err := issues_model.GetLabelsByRepoID(t.Context(), generatedRepo.ID, "", db.ListOptions{}) + require.NoError(t, err) + require.Len(t, generatedLabels, len(tmplRepoLabels)) + for i, tmplLabel := range tmplRepoLabels { + genLabel := generatedLabels[i] + assert.Equal(t, tmplLabel.Name, genLabel.Name) + assert.Equal(t, tmplLabel.Exclusive, genLabel.Exclusive) + assert.Equal(t, tmplLabel.ExclusiveOrder, genLabel.ExclusiveOrder) + assert.Equal(t, tmplLabel.Color, genLabel.Color) + assert.Equal(t, tmplLabel.Description, genLabel.Description) + } + err = repo_service.DeleteRepositoryDirectly(t.Context(), generatedRepo.ID) assert.NoError(t, err)