aboutsummaryrefslogtreecommitdiff
path: root/internal/db/repos_test.go
diff options
context:
space:
mode:
authorJoe Chen <jc@unknwon.io>2023-02-07 23:39:00 +0800
committerGitHub <noreply@github.com>2023-02-07 23:39:00 +0800
commit133b9d90441008ee175e1f8e6369e06309e1392a (patch)
tree70f29798055962f6700ba6a93b023a8328a5eff4 /internal/db/repos_test.go
parent7c453d5b3632a6bbdbd99205c518303a9e25a4e1 (diff)
refactor(db): finish migrate methods off `user.go` (#7337)
Diffstat (limited to 'internal/db/repos_test.go')
-rw-r--r--internal/db/repos_test.go41
1 files changed, 40 insertions, 1 deletions
diff --git a/internal/db/repos_test.go b/internal/db/repos_test.go
index 09289729..d6bfcb0d 100644
--- a/internal/db/repos_test.go
+++ b/internal/db/repos_test.go
@@ -85,7 +85,7 @@ func TestRepos(t *testing.T) {
}
t.Parallel()
- tables := []any{new(Repository), new(Access)}
+ tables := []any{new(Repository), new(Access), new(Watch), new(User), new(EmailAddress), new(Star)}
db := &repos{
DB: dbtest.NewDB(t, "repos", tables...),
}
@@ -97,7 +97,9 @@ func TestRepos(t *testing.T) {
{"Create", reposCreate},
{"GetByCollaboratorID", reposGetByCollaboratorID},
{"GetByCollaboratorIDWithAccessMode", reposGetByCollaboratorIDWithAccessMode},
+ {"GetByID", reposGetByID},
{"GetByName", reposGetByName},
+ {"Star", reposStar},
{"Touch", reposTouch},
} {
t.Run(tc.name, func(t *testing.T) {
@@ -154,6 +156,7 @@ func reposCreate(t *testing.T, db *repos) {
repo, err = db.GetByName(ctx, repo.OwnerID, repo.Name)
require.NoError(t, err)
assert.Equal(t, db.NowFunc().Format(time.RFC3339), repo.Created.UTC().Format(time.RFC3339))
+ assert.Equal(t, 1, repo.NumWatches) // The owner is watching the repo by default.
}
func reposGetByCollaboratorID(t *testing.T, db *repos) {
@@ -214,6 +217,21 @@ func reposGetByCollaboratorIDWithAccessMode(t *testing.T, db *repos) {
assert.Equal(t, AccessModeAdmin, accessModes[repo2.ID])
}
+func reposGetByID(t *testing.T, db *repos) {
+ ctx := context.Background()
+
+ repo1, err := db.Create(ctx, 1, CreateRepoOptions{Name: "repo1"})
+ require.NoError(t, err)
+
+ got, err := db.GetByID(ctx, repo1.ID)
+ require.NoError(t, err)
+ assert.Equal(t, repo1.Name, got.Name)
+
+ _, err = db.GetByID(ctx, 404)
+ wantErr := ErrRepoNotExist{args: errutil.Args{"repoID": int64(404)}}
+ assert.Equal(t, wantErr, err)
+}
+
func reposGetByName(t *testing.T, db *repos) {
ctx := context.Background()
@@ -232,6 +250,27 @@ func reposGetByName(t *testing.T, db *repos) {
assert.Equal(t, wantErr, err)
}
+func reposStar(t *testing.T, db *repos) {
+ ctx := context.Background()
+
+ repo1, err := db.Create(ctx, 1, CreateRepoOptions{Name: "repo1"})
+ require.NoError(t, err)
+ usersStore := NewUsersStore(db.DB)
+ alice, err := usersStore.Create(ctx, "alice", "alice@example.com", CreateUserOptions{})
+ require.NoError(t, err)
+
+ err = db.Star(ctx, alice.ID, repo1.ID)
+ require.NoError(t, err)
+
+ repo1, err = db.GetByID(ctx, repo1.ID)
+ require.NoError(t, err)
+ assert.Equal(t, 1, repo1.NumStars)
+
+ alice, err = usersStore.GetByID(ctx, alice.ID)
+ require.NoError(t, err)
+ assert.Equal(t, 1, alice.NumStars)
+}
+
func reposTouch(t *testing.T, db *repos) {
ctx := context.Background()