diff options
| author | Julie Qiu <julie@golang.org> | 2021-01-08 12:53:54 -0500 |
|---|---|---|
| committer | Julie Qiu <julie@golang.org> | 2021-01-12 15:15:12 +0000 |
| commit | d9032b00d599ed72445dbbe210eec9fdfdbae994 (patch) | |
| tree | 8b3e6d2b6415402f0d83b824ec15676b9981de53 /internal/postgres/path_test.go | |
| parent | 53f2e1b2c2bb421d3271397ff7c9afcc50e6386e (diff) | |
| download | go-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.go | 85 |
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) + }) + }) + } +} |
