aboutsummaryrefslogtreecommitdiff
path: root/internal/postgres/path_test.go
diff options
context:
space:
mode:
authorJulie Qiu <julie@golang.org>2021-01-08 12:53:54 -0500
committerJulie Qiu <julie@golang.org>2021-01-12 15:15:12 +0000
commitd9032b00d599ed72445dbbe210eec9fdfdbae994 (patch)
tree8b3e6d2b6415402f0d83b824ec15676b9981de53 /internal/postgres/path_test.go
parent53f2e1b2c2bb421d3271397ff7c9afcc50e6386e (diff)
downloadgo-x-pkgsite-d9032b00d599ed72445dbbe210eec9fdfdbae994.tar.xz
internal/postgres: GetLatestMajorPathForV1Path
GetLatestMajorPathForV1Path returns the path that is the latest major for the v1path. Change-Id: Iec02b0771427b535817b5bd3794f6aa1a807280d Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/282617 Trust: Julie Qiu <julie@golang.org> Run-TryBot: Julie Qiu <julie@golang.org> TryBot-Result: kokoro <noreply+kokoro@google.com> Reviewed-by: Jonathan Amsterdam <jba@google.com>
Diffstat (limited to 'internal/postgres/path_test.go')
-rw-r--r--internal/postgres/path_test.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/internal/postgres/path_test.go b/internal/postgres/path_test.go
new file mode 100644
index 00000000..bdadb276
--- /dev/null
+++ b/internal/postgres/path_test.go
@@ -0,0 +1,85 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package postgres
+
+import (
+ "context"
+ "testing"
+
+ "golang.org/x/pkgsite/internal/testing/sample"
+)
+
+func TestGetLatestMajorPathForV1Path(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
+ defer cancel()
+
+ checkLatest := func(t *testing.T, versions []string, v1path string, wantVersion string) {
+ t.Helper()
+ got, err := testDB.GetLatestMajorPathForV1Path(ctx, v1path)
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := sample.ModulePath
+ if wantVersion != "" {
+ want = want + "/" + wantVersion
+ }
+ if got != want {
+ t.Errorf("GetLatestMajorPathForV1Path(%q) = %q, want %q", v1path, got, want)
+ }
+ }
+
+ for _, test := range []struct {
+ name, want string
+ versions []string
+ }{
+ {
+ "want highest major version",
+ "v11",
+ []string{"", "v2", "v11"},
+ },
+ {
+ "only v1 version",
+ "",
+ []string{""},
+ },
+ {
+ "no v1 version",
+ "v4",
+ []string{"v4"},
+ },
+ } {
+ t.Run(test.name, func(t *testing.T) {
+ ResetTestDB(testDB, t)
+ suffix := "a/b/c"
+
+ for _, v := range test.versions {
+ modpath := sample.ModulePath
+ if v != "" {
+ modpath = modpath + "/" + v
+ }
+ if v == "" {
+ v = sample.VersionString
+ } else {
+ v = v + ".0.0"
+ }
+ m := sample.Module(modpath, v, suffix)
+ if err := testDB.InsertModule(ctx, m); err != nil {
+ t.Fatal(err)
+ }
+ }
+ t.Run("module", func(t *testing.T) {
+ v1path := sample.ModulePath
+ checkLatest(t, test.versions, v1path, test.want)
+ })
+ t.Run("package", func(t *testing.T) {
+ if test.want != "" {
+ test.want += "/"
+ }
+ v1path := sample.ModulePath + "/" + suffix
+ checkLatest(t, test.versions, v1path, test.want+suffix)
+ })
+ })
+ }
+}