Skip to content

Commit 016a5d0

Browse files
lunnytechknowlogick
authored andcommitted
Move some actions to notification/action (#8779)
* Move some actions to notification/action * Fix test * fix test
1 parent fb459f2 commit 016a5d0

File tree

10 files changed

+88
-107
lines changed

10 files changed

+88
-107
lines changed

models/action.go

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -283,49 +283,6 @@ func (a *Action) GetIssueContent() string {
283283
return issue.Content
284284
}
285285

286-
func newRepoAction(e Engine, u *User, repo *Repository) (err error) {
287-
if err = notifyWatchers(e, &Action{
288-
ActUserID: u.ID,
289-
ActUser: u,
290-
OpType: ActionCreateRepo,
291-
RepoID: repo.ID,
292-
Repo: repo,
293-
IsPrivate: repo.IsPrivate,
294-
}); err != nil {
295-
return fmt.Errorf("notify watchers '%d/%d': %v", u.ID, repo.ID, err)
296-
}
297-
298-
log.Trace("action.newRepoAction: %s/%s", u.Name, repo.Name)
299-
return err
300-
}
301-
302-
// NewRepoAction adds new action for creating repository.
303-
func NewRepoAction(u *User, repo *Repository) (err error) {
304-
return newRepoAction(x, u, repo)
305-
}
306-
307-
func renameRepoAction(e Engine, actUser *User, oldRepoName string, repo *Repository) (err error) {
308-
if err = notifyWatchers(e, &Action{
309-
ActUserID: actUser.ID,
310-
ActUser: actUser,
311-
OpType: ActionRenameRepo,
312-
RepoID: repo.ID,
313-
Repo: repo,
314-
IsPrivate: repo.IsPrivate,
315-
Content: oldRepoName,
316-
}); err != nil {
317-
return fmt.Errorf("notify watchers: %v", err)
318-
}
319-
320-
log.Trace("action.renameRepoAction: %s/%s", actUser.Name, repo.Name)
321-
return nil
322-
}
323-
324-
// RenameRepoAction adds new action for renaming a repository.
325-
func RenameRepoAction(actUser *User, oldRepoName string, repo *Repository) error {
326-
return renameRepoAction(x, actUser, oldRepoName, repo)
327-
}
328-
329286
// PushCommit represents a commit in a push operation.
330287
type PushCommit struct {
331288
Sha1 string

models/action_test.go

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package models
22

33
import (
44
"path"
5-
"strings"
65
"testing"
76

87
"code.gitea.io/gitea/modules/setting"
@@ -28,58 +27,6 @@ func TestAction_GetRepoLink(t *testing.T) {
2827
assert.Equal(t, expected, action.GetRepoLink())
2928
}
3029

31-
func TestNewRepoAction(t *testing.T) {
32-
assert.NoError(t, PrepareTestDatabase())
33-
34-
user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
35-
repo := AssertExistsAndLoadBean(t, &Repository{OwnerID: user.ID}).(*Repository)
36-
repo.Owner = user
37-
38-
actionBean := &Action{
39-
OpType: ActionCreateRepo,
40-
ActUserID: user.ID,
41-
RepoID: repo.ID,
42-
ActUser: user,
43-
Repo: repo,
44-
IsPrivate: repo.IsPrivate,
45-
}
46-
47-
AssertNotExistsBean(t, actionBean)
48-
assert.NoError(t, NewRepoAction(user, repo))
49-
AssertExistsAndLoadBean(t, actionBean)
50-
CheckConsistencyFor(t, &Action{})
51-
}
52-
53-
func TestRenameRepoAction(t *testing.T) {
54-
assert.NoError(t, PrepareTestDatabase())
55-
56-
user := AssertExistsAndLoadBean(t, &User{ID: 2}).(*User)
57-
repo := AssertExistsAndLoadBean(t, &Repository{OwnerID: user.ID}).(*Repository)
58-
repo.Owner = user
59-
60-
oldRepoName := repo.Name
61-
const newRepoName = "newRepoName"
62-
repo.Name = newRepoName
63-
repo.LowerName = strings.ToLower(newRepoName)
64-
65-
actionBean := &Action{
66-
OpType: ActionRenameRepo,
67-
ActUserID: user.ID,
68-
ActUser: user,
69-
RepoID: repo.ID,
70-
Repo: repo,
71-
IsPrivate: repo.IsPrivate,
72-
Content: oldRepoName,
73-
}
74-
AssertNotExistsBean(t, actionBean)
75-
assert.NoError(t, RenameRepoAction(user, oldRepoName, repo))
76-
AssertExistsAndLoadBean(t, actionBean)
77-
78-
_, err := x.ID(repo.ID).Cols("name", "lower_name").Update(repo)
79-
assert.NoError(t, err)
80-
CheckConsistencyFor(t, &Action{})
81-
}
82-
8330
func TestPushCommits_ToAPIPayloadCommits(t *testing.T) {
8431
pushCommits := NewPushCommits()
8532
pushCommits.Commits = []*PushCommit{

models/repo.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,8 +1469,15 @@ func createRepository(e *xorm.Session, doer, u *User, repo *Repository) (err err
14691469
return fmt.Errorf("watchRepo: %v", err)
14701470
}
14711471
}
1472-
if err = newRepoAction(e, doer, repo); err != nil {
1473-
return fmt.Errorf("newRepoAction: %v", err)
1472+
if err = notifyWatchers(e, &Action{
1473+
ActUserID: doer.ID,
1474+
ActUser: doer,
1475+
OpType: ActionCreateRepo,
1476+
RepoID: repo.ID,
1477+
Repo: repo,
1478+
IsPrivate: repo.IsPrivate,
1479+
}); err != nil {
1480+
return fmt.Errorf("notify watchers '%d/%d': %v", doer.ID, repo.ID, err)
14741481
}
14751482

14761483
if err = copyDefaultWebhooksToRepo(e, repo.ID); err != nil {

modules/notification/action/action.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var (
2020
_ base.Notifier = &actionNotifier{}
2121
)
2222

23-
// NewNotifier create a new webhookNotifier notifier
23+
// NewNotifier create a new actionNotifier notifier
2424
func NewNotifier() base.Notifier {
2525
return &actionNotifier{}
2626
}
@@ -75,3 +75,19 @@ func (a *actionNotifier) NotifyNewPullRequest(pull *models.PullRequest) {
7575
log.Error("NotifyWatchers: %v", err)
7676
}
7777
}
78+
79+
func (a *actionNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
80+
if err := models.NotifyWatchers(&models.Action{
81+
ActUserID: doer.ID,
82+
ActUser: doer,
83+
OpType: models.ActionRenameRepo,
84+
RepoID: repo.ID,
85+
Repo: repo,
86+
IsPrivate: repo.IsPrivate,
87+
Content: oldName,
88+
}); err != nil {
89+
log.Error("notify watchers: %v", err)
90+
} else {
91+
log.Trace("action.renameRepoAction: %s/%s", doer.Name, repo.Name)
92+
}
93+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2019 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package action
6+
7+
import (
8+
"path/filepath"
9+
"strings"
10+
"testing"
11+
12+
"code.gitea.io/gitea/models"
13+
"github.com/stretchr/testify/assert"
14+
)
15+
16+
func TestMain(m *testing.M) {
17+
models.MainTest(m, filepath.Join("..", "..", ".."))
18+
}
19+
20+
func TestRenameRepoAction(t *testing.T) {
21+
assert.NoError(t, models.PrepareTestDatabase())
22+
23+
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
24+
repo := models.AssertExistsAndLoadBean(t, &models.Repository{OwnerID: user.ID}).(*models.Repository)
25+
repo.Owner = user
26+
27+
oldRepoName := repo.Name
28+
const newRepoName = "newRepoName"
29+
repo.Name = newRepoName
30+
repo.LowerName = strings.ToLower(newRepoName)
31+
32+
actionBean := &models.Action{
33+
OpType: models.ActionRenameRepo,
34+
ActUserID: user.ID,
35+
ActUser: user,
36+
RepoID: repo.ID,
37+
Repo: repo,
38+
IsPrivate: repo.IsPrivate,
39+
Content: oldRepoName,
40+
}
41+
models.AssertNotExistsBean(t, actionBean)
42+
43+
NewNotifier().NotifyRenameRepository(user, repo, oldRepoName)
44+
45+
models.AssertExistsAndLoadBean(t, actionBean)
46+
models.CheckConsistencyFor(t, &models.Action{})
47+
}

modules/notification/base/notifier.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Notifier interface {
1717
NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository)
1818
NotifyDeleteRepository(doer *models.User, repo *models.Repository)
1919
NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository)
20+
NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string)
2021

2122
NotifyNewIssue(*models.Issue)
2223
NotifyIssueChangeStatus(*models.User, *models.Issue, bool)

modules/notification/base/null.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ func (*NullNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repo
6666
func (*NullNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
6767
}
6868

69+
// NotifyRenameRepository places a place holder function
70+
func (*NullNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
71+
}
72+
6973
// NotifyNewRelease places a place holder function
7074
func (*NullNotifier) NotifyNewRelease(rel *models.Release) {
7175
}

modules/notification/notification.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ func NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
115115
}
116116
}
117117

118+
// NotifyRenameRepository notifies repository renamed
119+
func NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
120+
for _, notifier := range notifiers {
121+
notifier.NotifyRenameRepository(doer, repo, oldName)
122+
}
123+
}
124+
118125
// NotifyNewRelease notifies new release to notifiers
119126
func NotifyNewRelease(rel *models.Release) {
120127
for _, notifier := range notifiers {

routers/api/v1/repo/repo.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -603,11 +603,7 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err
603603
return err
604604
}
605605

606-
if err := models.RenameRepoAction(ctx.User, oldRepoName, repo); err != nil {
607-
log.Error("RenameRepoAction: %v", err)
608-
ctx.Error(http.StatusInternalServerError, "RenameRepoActions", err)
609-
return err
610-
}
606+
notification.NotifyRenameRepository(ctx.User, repo, oldRepoName)
611607

612608
log.Trace("Repository name changed: %s/%s -> %s", ctx.Repo.Owner.Name, repo.Name, newRepoName)
613609
}

routers/repo/setting.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"code.gitea.io/gitea/modules/context"
2121
"code.gitea.io/gitea/modules/git"
2222
"code.gitea.io/gitea/modules/log"
23+
"code.gitea.io/gitea/modules/notification"
2324
"code.gitea.io/gitea/modules/setting"
2425
"code.gitea.io/gitea/modules/timeutil"
2526
"code.gitea.io/gitea/modules/validation"
@@ -121,9 +122,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
121122
log.Trace("Repository basic settings updated: %s/%s", ctx.Repo.Owner.Name, repo.Name)
122123

123124
if isNameChanged {
124-
if err := models.RenameRepoAction(ctx.User, oldRepoName, repo); err != nil {
125-
log.Error("RenameRepoAction: %v", err)
126-
}
125+
notification.NotifyRenameRepository(ctx.User, repo, oldRepoName)
127126
}
128127

129128
ctx.Flash.Success(ctx.Tr("repo.settings.update_settings_success"))

0 commit comments

Comments
 (0)