aboutsummaryrefslogtreecommitdiff
path: root/internal/db/repos_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/repos_test.go')
-rw-r--r--internal/db/repos_test.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/internal/db/repos_test.go b/internal/db/repos_test.go
index d6bfcb0d..64b59d78 100644
--- a/internal/db/repos_test.go
+++ b/internal/db/repos_test.go
@@ -101,6 +101,9 @@ func TestRepos(t *testing.T) {
{"GetByName", reposGetByName},
{"Star", reposStar},
{"Touch", reposTouch},
+ {"ListByRepo", reposListWatches},
+ {"Watch", reposWatch},
+ {"HasForkedBy", reposHasForkedBy},
} {
t.Run(tc.name, func(t *testing.T) {
t.Cleanup(func() {
@@ -298,3 +301,65 @@ func reposTouch(t *testing.T, db *repos) {
require.NoError(t, err)
assert.False(t, got.IsBare)
}
+
+func reposListWatches(t *testing.T, db *repos) {
+ ctx := context.Background()
+
+ err := db.Watch(ctx, 1, 1)
+ require.NoError(t, err)
+ err = db.Watch(ctx, 2, 1)
+ require.NoError(t, err)
+ err = db.Watch(ctx, 2, 2)
+ require.NoError(t, err)
+
+ got, err := db.ListWatches(ctx, 1)
+ require.NoError(t, err)
+ for _, w := range got {
+ w.ID = 0
+ }
+
+ want := []*Watch{
+ {UserID: 1, RepoID: 1},
+ {UserID: 2, RepoID: 1},
+ }
+ assert.Equal(t, want, got)
+}
+
+func reposWatch(t *testing.T, db *repos) {
+ ctx := context.Background()
+
+ reposStore := NewReposStore(db.DB)
+ repo1, err := reposStore.Create(ctx, 1, CreateRepoOptions{Name: "repo1"})
+ require.NoError(t, err)
+
+ err = db.Watch(ctx, 2, repo1.ID)
+ require.NoError(t, err)
+
+ // It is OK to watch multiple times and just be noop.
+ err = db.Watch(ctx, 2, repo1.ID)
+ require.NoError(t, err)
+
+ repo1, err = reposStore.GetByID(ctx, repo1.ID)
+ require.NoError(t, err)
+ assert.Equal(t, 2, repo1.NumWatches) // The owner is watching the repo by default.
+}
+
+func reposHasForkedBy(t *testing.T, db *repos) {
+ ctx := context.Background()
+
+ has := db.HasForkedBy(ctx, 1, 2)
+ assert.False(t, has)
+
+ _, err := NewReposStore(db.DB).Create(
+ ctx,
+ 2,
+ CreateRepoOptions{
+ Name: "repo1",
+ ForkID: 1,
+ },
+ )
+ require.NoError(t, err)
+
+ has = db.HasForkedBy(ctx, 1, 2)
+ assert.True(t, has)
+}