Exemple #1
0
// Verify ReleaseListOption's are applied to a ListReleasesRequest correctly.
func TestListReleases_VerifyOptions(t *testing.T) {
	// Options testdata
	var limit = 2
	var offset = "offset"
	var filter = "filter"
	var sortBy = int32(2)
	var sortOrd = int32(1)
	var codes = []rls.Status_Code{
		rls.Status_FAILED,
		rls.Status_DELETED,
		rls.Status_DEPLOYED,
		rls.Status_SUPERSEDED,
	}

	// Expected ListReleasesRequest message
	exp := &tpb.ListReleasesRequest{
		Limit:       int64(limit),
		Offset:      offset,
		Filter:      filter,
		SortBy:      tpb.ListSort_SortBy(sortBy),
		SortOrder:   tpb.ListSort_SortOrder(sortOrd),
		StatusCodes: codes,
	}

	// Options used in ListReleases
	ops := []ReleaseListOption{
		ReleaseListSort(sortBy),
		ReleaseListOrder(sortOrd),
		ReleaseListLimit(limit),
		ReleaseListOffset(offset),
		ReleaseListFilter(filter),
		ReleaseListStatuses(codes),
	}

	// BeforeCall option to intercept helm client ListReleasesRequest
	b4c := BeforeCall(func(_ context.Context, msg proto.Message) error {
		switch act := msg.(type) {
		case *tpb.ListReleasesRequest:
			t.Logf("ListReleasesRequest: %#+v\n", act)
			assert(t, exp, act)
		default:
			t.Fatalf("expected message of type ListReleasesRequest, got %T\n", act)
		}
		return errSkip
	})

	NewClient(b4c).ListReleases(ops...)
}
Exemple #2
0
// ReleaseListSort specifies how to sort a release list.
func ReleaseListSort(sort int32) ReleaseListOption {
	return func(opts *options) {
		opts.listReq.SortBy = rls.ListSort_SortBy(sort)
	}
}