blob: ae8d77768a00e68c33a73ad0cee1d57b26c4bb49 [file] [log] [blame]
// Copyright 2019 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 index
import (
"context"
"testing"
"time"
"github.com/google/go-cmp/cmp"
"golang.org/x/pkgsite/internal"
)
func TestGetVersions(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
allVersions := []*internal.IndexVersion{
{Path: "github.com/my/module", Version: "v1.0.0"},
{Path: "github.com/my/module", Version: "v1.1.0"},
{Path: "github.com/my/module/v2", Version: "v2.0.0"},
}
for _, test := range []struct {
name string
limit int
versions []*internal.IndexVersion
want []*internal.IndexVersion
}{
{
name: "get all versions",
limit: 10,
versions: allVersions,
want: allVersions,
}, {
name: "get partial versions",
limit: 2,
versions: allVersions,
want: allVersions[:2],
}, {
name: "empty versions",
limit: 10,
},
} {
t.Run(test.name, func(t *testing.T) {
client, teardown := SetupTestIndex(t, test.versions)
defer teardown()
since := time.Time{}
got, err := client.GetVersions(ctx, since, test.limit)
if err != nil {
t.Fatal(err)
}
if diff := cmp.Diff(test.want, got); diff != "" {
t.Errorf("client.GetVersions(ctx, %q) mismatch (-want +got):\n%s", since, diff)
}
})
}
}