2024-11-28 15:27:17 +00:00

35 lines
1.0 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package releases
import (
"context"
"github.com/Masterminds/semver"
"github.com/hashicorp/releases-api/pkg/models"
)
var _ VersionLister = (*MockClient)(nil)
// MockClient is an in-memory mock of a releases API client for use in testing.
type MockClient struct {
Versions []string
}
// NewMockClient takes a list of versions and returns a new mock releases API client.
func NewMockClient(versions []string) *MockClient {
return &MockClient{Versions: versions}
}
// ListVersions takes a context, product, edition, a ceiling version and floor version and returns
// all unique versions between the ceiling and floor range.
func (m *MockClient) ListVersions(ctx context.Context, product string, edition LicenseClass, ceil, floor *semver.Version) ([]string, error) {
releaseVersions := []*models.Release{}
for _, v := range m.Versions {
releaseVersions = append(releaseVersions, &models.Release{Version: v})
}
return selectReleaseVersions(releaseVersions, ceil, floor)
}