// 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...) }
// ReleaseListOrder specifies how to order a list of releases. func ReleaseListOrder(order int32) ReleaseListOption { return func(opts *options) { opts.listReq.SortOrder = rls.ListSort_SortOrder(order) } }