From 016a5d0438e551d4630819683dd6dc4fccb0cb51 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 9 Nov 2019 04:54:50 +0800 Subject: Move some actions to notification/action (#8779) * Move some actions to notification/action * Fix test * fix test --- modules/notification/action/action.go | 18 +++++++++++- modules/notification/action/action_test.go | 47 ++++++++++++++++++++++++++++++ modules/notification/base/notifier.go | 1 + modules/notification/base/null.go | 4 +++ modules/notification/notification.go | 7 +++++ 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 modules/notification/action/action_test.go (limited to 'modules/notification') 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 { -- cgit v1.2.3