diff options
author | Ethan Koenig <etk39@cornell.edu> | 2017-02-17 03:02:11 -0500 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2017-02-17 16:02:11 +0800 |
commit | be48b32e639eacc88e075aae2a4b55b95745d685 (patch) | |
tree | 29249e2de453ffc1edc95e962a8b5bc11c2ff516 /models/repo_watch_test.go | |
parent | 847527fd6dd8e53eea918e6e41da6ebc64be1388 (diff) | |
download | gitea-be48b32e639eacc88e075aae2a4b55b95745d685.tar.gz gitea-be48b32e639eacc88e075aae2a4b55b95745d685.zip |
Unit tests for repo watching (#963)
Diffstat (limited to 'models/repo_watch_test.go')
-rw-r--r-- | models/repo_watch_test.go | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/models/repo_watch_test.go b/models/repo_watch_test.go new file mode 100644 index 0000000000..a1543566c1 --- /dev/null +++ b/models/repo_watch_test.go @@ -0,0 +1,98 @@ +// Copyright 2017 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 models + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIsWatching(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + assert.True(t, IsWatching(1, 1)) + assert.True(t, IsWatching(4, 1)) + + assert.False(t, IsWatching(1, 5)) + assert.False(t, IsWatching(NonexistentID, NonexistentID)) +} + +func TestWatchRepo(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + const repoID = 3 + const userID = 2 + + assert.NoError(t, WatchRepo(userID, repoID, true)) + AssertExistsAndLoadBean(t, &Watch{RepoID: repoID, UserID: userID}) + CheckConsistencyFor(t, &Repository{ID: repoID}) + + assert.NoError(t, WatchRepo(userID, repoID, false)) + AssertNotExistsBean(t, &Watch{RepoID: repoID, UserID: userID}) + CheckConsistencyFor(t, &Repository{ID: repoID}) +} + +func TestGetWatchers(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + repo := AssertExistsAndLoadBean(t, &Repository{ID: 1}).(*Repository) + watches, err := GetWatchers(repo.ID) + assert.NoError(t, err) + assert.Len(t, watches, repo.NumWatches) + for _, watch := range watches { + assert.EqualValues(t, repo.ID, watch.RepoID) + } + + watches, err = GetWatchers(NonexistentID) + assert.NoError(t, err) + assert.Len(t, watches, 0) +} + +func TestRepository_GetWatchers(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) + for _, watcher := range watchers { + AssertExistsAndLoadBean(t, &Watch{UserID: watcher.ID, RepoID: repo.ID}) + } + + repo = AssertExistsAndLoadBean(t, &Repository{ID: 10}).(*Repository) + watchers, err = repo.GetWatchers(1) + assert.NoError(t, err) + assert.Len(t, watchers, 0) +} + +func TestNotifyWatchers(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + action := &Action{ + ActUserID: 8, + RepoID: 1, + OpType: ActionStarRepo, + } + assert.NoError(t, NotifyWatchers(action)) + + AssertExistsAndLoadBean(t, &Action{ + ActUserID: action.ActUserID, + UserID: 1, + RepoID: action.RepoID, + OpType: action.OpType, + }) + AssertExistsAndLoadBean(t, &Action{ + ActUserID: action.ActUserID, + UserID: 4, + RepoID: action.RepoID, + OpType: action.OpType, + }) + AssertExistsAndLoadBean(t, &Action{ + ActUserID: action.ActUserID, + UserID: 8, + RepoID: action.RepoID, + OpType: action.OpType, + }) +} |