diff options
Diffstat (limited to 'internal/db/repos_test.go')
-rw-r--r-- | internal/db/repos_test.go | 65 |
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) +} |