// 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)
			}
		})
	}
}
