summaryrefslogtreecommitdiffstats
path: root/modules/notification
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2019-11-09 04:54:50 +0800
committertechknowlogick <techknowlogick@gitea.io>2019-11-08 15:54:50 -0500
commit016a5d0438e551d4630819683dd6dc4fccb0cb51 (patch)
treebe5adb9e41fdd3e0b1528cca0c9e111ff81b4eb7 /modules/notification
parentfb459f2c2c32dda29870731b6dae1452bbab625f (diff)
downloadgitea-016a5d0438e551d4630819683dd6dc4fccb0cb51.tar.gz
gitea-016a5d0438e551d4630819683dd6dc4fccb0cb51.zip
Move some actions to notification/action (#8779)
* Move some actions to notification/action * Fix test * fix test
Diffstat (limited to 'modules/notification')
-rw-r--r--modules/notification/action/action.go18
-rw-r--r--modules/notification/action/action_test.go47
-rw-r--r--modules/notification/base/notifier.go1
-rw-r--r--modules/notification/base/null.go4
-rw-r--r--modules/notification/notification.go7
5 files changed, 76 insertions, 1 deletions
diff --git a/modules/notification/action/action.go b/modules/notification/action/action.go
index 15228f65e7..52471c1107 100644
--- a/modules/notification/action/action.go
+++ b/modules/notification/action/action.go
@@ -20,7 +20,7 @@ var (
_ base.Notifier = &actionNotifier{}
)
-// NewNotifier create a new webhookNotifier notifier
+// NewNotifier create a new actionNotifier notifier
func NewNotifier() base.Notifier {
return &actionNotifier{}
}
@@ -75,3 +75,19 @@ func (a *actionNotifier) NotifyNewPullRequest(pull *models.PullRequest) {
log.Error("NotifyWatchers: %v", err)
}
}
+
+func (a *actionNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+ if err := models.NotifyWatchers(&models.Action{
+ ActUserID: doer.ID,
+ ActUser: doer,
+ OpType: models.ActionRenameRepo,
+ RepoID: repo.ID,
+ Repo: repo,
+ IsPrivate: repo.IsPrivate,
+ Content: oldName,
+ }); err != nil {
+ log.Error("notify watchers: %v", err)
+ } else {
+ log.Trace("action.renameRepoAction: %s/%s", doer.Name, repo.Name)
+ }
+}
diff --git a/modules/notification/action/action_test.go b/modules/notification/action/action_test.go
new file mode 100644
index 0000000000..cdfe4bd663
--- /dev/null
+++ b/modules/notification/action/action_test.go
@@ -0,0 +1,47 @@
+// Copyright 2019 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package action
+
+import (
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "code.gitea.io/gitea/models"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMain(m *testing.M) {
+ models.MainTest(m, filepath.Join("..", "..", ".."))
+}
+
+func TestRenameRepoAction(t *testing.T) {
+ assert.NoError(t, models.PrepareTestDatabase())
+
+ user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
+ repo := models.AssertExistsAndLoadBean(t, &models.Repository{OwnerID: user.ID}).(*models.Repository)
+ repo.Owner = user
+
+ oldRepoName := repo.Name
+ const newRepoName = "newRepoName"
+ repo.Name = newRepoName
+ repo.LowerName = strings.ToLower(newRepoName)
+
+ actionBean := &models.Action{
+ OpType: models.ActionRenameRepo,
+ ActUserID: user.ID,
+ ActUser: user,
+ RepoID: repo.ID,
+ Repo: repo,
+ IsPrivate: repo.IsPrivate,
+ Content: oldRepoName,
+ }
+ models.AssertNotExistsBean(t, actionBean)
+
+ NewNotifier().NotifyRenameRepository(user, repo, oldRepoName)
+
+ models.AssertExistsAndLoadBean(t, actionBean)
+ models.CheckConsistencyFor(t, &models.Action{})
+}
diff --git a/modules/notification/base/notifier.go b/modules/notification/base/notifier.go
index 72bf52c938..9510afc978 100644
--- a/modules/notification/base/notifier.go
+++ b/modules/notification/base/notifier.go
@@ -17,6 +17,7 @@ type Notifier interface {
NotifyMigrateRepository(doer *models.User, u *models.User, repo *models.Repository)
NotifyDeleteRepository(doer *models.User, repo *models.Repository)
NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository)
+ NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string)
NotifyNewIssue(*models.Issue)
NotifyIssueChangeStatus(*models.User, *models.Issue, bool)
diff --git a/modules/notification/base/null.go b/modules/notification/base/null.go
index a9d9d6a164..2341b8d2a7 100644
--- a/modules/notification/base/null.go
+++ b/modules/notification/base/null.go
@@ -66,6 +66,10 @@ func (*NullNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repo
func (*NullNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
}
+// NotifyRenameRepository places a place holder function
+func (*NullNotifier) NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+}
+
// NotifyNewRelease places a place holder function
func (*NullNotifier) NotifyNewRelease(rel *models.Release) {
}
diff --git a/modules/notification/notification.go b/modules/notification/notification.go
index 5ac09a72e5..fdfcc62ffe 100644
--- a/modules/notification/notification.go
+++ b/modules/notification/notification.go
@@ -115,6 +115,13 @@ func NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
}
}
+// NotifyRenameRepository notifies repository renamed
+func NotifyRenameRepository(doer *models.User, repo *models.Repository, oldName string) {
+ for _, notifier := range notifiers {
+ notifier.NotifyRenameRepository(doer, repo, oldName)
+ }
+}
+
// NotifyNewRelease notifies new release to notifiers
func NotifyNewRelease(rel *models.Release) {
for _, notifier := range notifiers {