summaryrefslogtreecommitdiffstats
path: root/models/repo_watch_test.go
diff options
context:
space:
mode:
authorguillep2k <18600385+guillep2k@users.noreply.github.com>2019-11-10 06:22:19 -0300
committerzeripath <art27@cantab.net>2019-11-10 09:22:19 +0000
commit01a4a7cb14b3a48f9e8115d5bc93af7ae17f1275 (patch)
tree56c8a4cb8058c817165182c2e7872ed0c72c0792 /models/repo_watch_test.go
parent8eeb2877d5803d0501815466d651a519b32bbd3a (diff)
downloadgitea-01a4a7cb14b3a48f9e8115d5bc93af7ae17f1275.tar.gz
gitea-01a4a7cb14b3a48f9e8115d5bc93af7ae17f1275.zip
Auto-subscribe user to repository when they commit/tag to it (#7657)
* Add support for AUTO_WATCH_ON_CHANGES and AUTO_WATCH_ON_CLONE * Update models/repo_watch.go Co-Authored-By: Lauris BH <lauris@nix.lv> * Round up changes suggested by lafriks * Added changes suggested from automated tests * Updated deleteUser to take RepoWatchModeDont into account, corrected inverted DefaultWatchOnClone and DefaultWatchOnChanges behaviour, updated and added tests. * Reinsert import "github.com/Unknwon/com" on http.go * Add migration for new column `watch`.`mode` * Remove serv code * Remove WATCH_ON_CLONE; use hooks, add integrations * Renamed watch_test.go to repo_watch_test.go * Correct fmt * Add missing EOL * Correct name of test function * Reword cheat and ini descriptions * Add update to migration to ensure column value * Clarify comment Co-Authored-By: zeripath <art27@cantab.net> * Simplify if condition
Diffstat (limited to 'models/repo_watch_test.go')
-rw-r--r--models/repo_watch_test.go90
1 files changed, 89 insertions, 1 deletions
diff --git a/models/repo_watch_test.go b/models/repo_watch_test.go
index 852f09f1c7..c3d40ec919 100644
--- a/models/repo_watch_test.go
+++ b/models/repo_watch_test.go
@@ -7,6 +7,8 @@ package models
import (
"testing"
+ "code.gitea.io/gitea/modules/setting"
+
"github.com/stretchr/testify/assert"
)
@@ -15,8 +17,10 @@ func TestIsWatching(t *testing.T) {
assert.True(t, IsWatching(1, 1))
assert.True(t, IsWatching(4, 1))
+ assert.True(t, IsWatching(11, 1))
assert.False(t, IsWatching(1, 5))
+ assert.False(t, IsWatching(8, 1))
assert.False(t, IsWatching(NonexistentID, NonexistentID))
}
@@ -78,7 +82,7 @@ func TestNotifyWatchers(t *testing.T) {
}
assert.NoError(t, NotifyWatchers(action))
- // One watchers are inactive, thus action is only created for user 8, 1, 4
+ // One watchers are inactive, thus action is only created for user 8, 1, 4, 11
AssertExistsAndLoadBean(t, &Action{
ActUserID: action.ActUserID,
UserID: 8,
@@ -97,4 +101,88 @@ func TestNotifyWatchers(t *testing.T) {
RepoID: action.RepoID,
OpType: action.OpType,
})
+ AssertExistsAndLoadBean(t, &Action{
+ ActUserID: action.ActUserID,
+ UserID: 11,
+ RepoID: action.RepoID,
+ OpType: action.OpType,
+ })
+}
+
+func TestWatchIfAuto(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository)
+ watchers, err := repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, repo.NumWatches)
+
+ setting.Service.AutoWatchOnChanges = false
+
+ prevCount := repo.NumWatches
+
+ // Must not add watch
+ assert.NoError(t, WatchIfAuto(8, 1, true))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+
+ // Should not add watch
+ assert.NoError(t, WatchIfAuto(10, 1, true))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+
+ setting.Service.AutoWatchOnChanges = true
+
+ // Must not add watch
+ assert.NoError(t, WatchIfAuto(8, 1, true))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+
+ // Should not add watch
+ assert.NoError(t, WatchIfAuto(12, 1, false))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+
+ // Should add watch
+ assert.NoError(t, WatchIfAuto(12, 1, true))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount+1)
+
+ // Should remove watch, inhibit from adding auto
+ assert.NoError(t, WatchRepo(12, 1, false))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+
+ // Must not add watch
+ assert.NoError(t, WatchIfAuto(12, 1, true))
+ watchers, err = repo.GetWatchers(1)
+ assert.NoError(t, err)
+ assert.Len(t, watchers, prevCount)
+}
+
+func TestWatchRepoMode(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1}, 0)
+
+ assert.NoError(t, WatchRepoMode(12, 1, RepoWatchModeAuto))
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1}, 1)
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1, Mode: RepoWatchModeAuto}, 1)
+
+ assert.NoError(t, WatchRepoMode(12, 1, RepoWatchModeNormal))
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1}, 1)
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1, Mode: RepoWatchModeNormal}, 1)
+
+ assert.NoError(t, WatchRepoMode(12, 1, RepoWatchModeDont))
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1}, 1)
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1, Mode: RepoWatchModeDont}, 1)
+
+ assert.NoError(t, WatchRepoMode(12, 1, RepoWatchModeNone))
+ AssertCount(t, &Watch{UserID: 12, RepoID: 1}, 0)
}