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