diff options
| author | Channing Kimble-Brown <channing@golang.org> | 2019-03-28 22:10:26 -0400 |
|---|---|---|
| committer | Julie Qiu <julie@golang.org> | 2020-03-27 16:46:34 -0400 |
| commit | df4cb83df4f0100427ff4b1ce6b8c2a987f2d6eb (patch) | |
| tree | 18be7741e2a442755c454de9184f7591b24dfd64 /internal/postgres/postgres_test.go | |
| parent | bf0b20fb4c0ab59f0a610375a4ac16da5433c9c1 (diff) | |
| download | go-x-pkgsite-df4cb83df4f0100427ff4b1ce6b8c2a987f2d6eb.tar.xz | |
internal/postgres: add GetTaggedVersions and GetPseudoVersions
GetTaggedVersions and GetPseudoVersions both return a list of
versions for a specific package. These methods will be used
by the frontend to fetch the versions that will be displayed
in the 'versions' tab.
Fixes b/126550849
Change-Id: I169aad79823d67273cb7ab1f3995b700d75e8ac2
Reviewed-on: https://team-review.git.corp.google.com/c/golang/discovery/+/441783
Reviewed-by: Julie Qiu <julieqiu@google.com>
Diffstat (limited to 'internal/postgres/postgres_test.go')
| -rw-r--r-- | internal/postgres/postgres_test.go | 146 |
1 files changed, 144 insertions, 2 deletions
diff --git a/internal/postgres/postgres_test.go b/internal/postgres/postgres_test.go index 197589dd..b382ee6e 100644 --- a/internal/postgres/postgres_test.go +++ b/internal/postgres/postgres_test.go @@ -322,6 +322,149 @@ func TestPostgres_GetLatestPackage(t *testing.T) { } } +func TestPostgres_GetTaggedAndPseudoVersions(t *testing.T) { + var ( + now = time.Now() + pkg = &internal.Package{ + Path: "path.to/foo/bar", + Name: "bar", + } + series = &internal.Series{ + Path: "myseries", + } + module = &internal.Module{ + Path: "path.to/foo", + Series: series, + } + testVersions = []*internal.Version{ + &internal.Version{ + Module: module, + Version: "v1.0.1-alpha.1", + CommitTime: now, + Packages: []*internal.Package{pkg}, + VersionType: internal.VersionTypePrerelease, + }, + &internal.Version{ + Module: module, + Version: "v1.0.1", + CommitTime: now, + Packages: []*internal.Package{pkg}, + VersionType: internal.VersionTypeRelease, + }, + &internal.Version{ + Module: module, + Version: "v1.0.0-20190311183353-d8887717615a", + CommitTime: now, + Packages: []*internal.Package{pkg}, + VersionType: internal.VersionTypePseudo, + }, + &internal.Version{ + Module: module, + Version: "v1.0.1-beta", + CommitTime: now, + Packages: []*internal.Package{pkg}, + VersionType: internal.VersionTypePrerelease, + }, + } + ) + + testCases := []struct { + name, path string + versions []*internal.Version + wantVersions []*internal.Version + pseudo bool + }{ + { + name: "want_release_and_prerelease", + path: pkg.Path, + versions: testVersions, + wantVersions: []*internal.Version{ + &internal.Version{ + Module: &internal.Module{ + Path: module.Path, + }, + Version: "v1.0.1", + CommitTime: now, + }, + &internal.Version{ + Module: &internal.Module{ + Path: module.Path, + }, + Version: "v1.0.1-beta", + CommitTime: now, + }, + &internal.Version{ + Module: &internal.Module{ + Path: module.Path, + }, + Version: "v1.0.1-alpha.1", + CommitTime: now, + }, + }, + }, + { + name: "want_pseudo", + path: pkg.Path, + versions: testVersions, + wantVersions: []*internal.Version{ + &internal.Version{ + Module: &internal.Module{ + Path: module.Path, + }, + Version: "v1.0.0-20190311183353-d8887717615a", + CommitTime: now, + }, + }, + pseudo: true, + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + teardownTestCase, db := SetupCleanDB(t) + defer teardownTestCase(t) + + for _, v := range tc.versions { + if err := db.InsertVersion(v); err != nil { + t.Errorf("db.InsertVersion(%+v) error: %v", v, err) + } + } + + var ( + got []*internal.Version + diffErr, lenErr string + err error + ) + + if tc.pseudo { + got, err = db.GetPseudoVersions(tc.path) + if err != nil { + t.Fatalf("db.GetPseudoVersions(%v) error: %v", tc.path, err) + } + diffErr = "db.GetPseudoVersions(%q, %q) mismatch (-want +got):\n%s" + lenErr = "db.GetPseudoVersions(%q, %q) returned list of length %v, wanted %v" + } else { + got, err = db.GetTaggedVersions(tc.path) + if err != nil { + t.Fatalf("db.GetTaggedVersions(%v) error: %v", tc.path, err) + } + diffErr = "db.GetTaggedVersions(%q, %q) mismatch (-want +got):\n%s" + lenErr = "db.GetTaggedVersions(%q, %q) returned list of length %v, wanted %v" + } + + if len(got) != len(tc.wantVersions) { + t.Fatalf(lenErr, tc.path, err, len(got), len(tc.wantVersions)) + } + + for i, v := range got { + if diff := versionsDiff(v, tc.wantVersions[i]); diff != "" { + t.Errorf(diffErr, v, tc.wantVersions[i], diff) + } + } + }) + } +} + func TestPostgres_GetLatestPackageForPaths(t *testing.T) { teardownTestCase, db := SetupCleanDB(t) defer teardownTestCase(t) @@ -383,7 +526,7 @@ func TestPostgres_GetLatestPackageForPaths(t *testing.T) { ReadMe: []byte("readme"), CommitTime: now, Packages: []*internal.Package{pkg2}, - VersionType: internal.VersionTypePseudo, + VersionType: internal.VersionTypePrerelease, }, } ) @@ -449,7 +592,6 @@ func TestPostgres_GetLatestPackageForPaths(t *testing.T) { gotPkg, i, tc.wantPkgs[i], diff) } } - } func TestPostgress_InsertVersionLogs(t *testing.T) { |
