From fd7bbd7e8d2c5a05c577fd3dbb04ad6e9ea5d006 Mon Sep 17 00:00:00 2001 From: atheeshp <59333759+atheeshp@users.noreply.github.com> Date: Mon, 6 Feb 2023 19:26:00 +0530 Subject: [PATCH] fix: `x/group` pagination from CLI (#14923) --- tests/e2e/group/query.go | 124 +++++++++++++++++++++++++++++++++++- x/group/client/cli/query.go | 16 ++++- 2 files changed, 138 insertions(+), 2 deletions(-) diff --git a/tests/e2e/group/query.go b/tests/e2e/group/query.go index d63af89b1f..27c7b609e6 100644 --- a/tests/e2e/group/query.go +++ b/tests/e2e/group/query.go @@ -117,9 +117,24 @@ func (s *E2ETestSuite) TestQueryGroupsByMembers() { 0, []*group.GroupInfo{}, }, + { + "expect one group (request with pagination)", + []string{ + members.Members[0].Member.Address, + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=1", + }, + false, + "", + 1, + groups.Groups, + }, { "expect one group", - []string{members.Members[0].Member.Address, fmt.Sprintf("--%s=json", flags.FlagOutput)}, + []string{ + members.Members[0].Member.Address, + fmt.Sprintf("--%s=json", flags.FlagOutput), + }, false, "", 1, @@ -233,6 +248,27 @@ func (s *E2ETestSuite) TestQueryGroupMembers() { }, }, }, + { + "members found (request with pagination)", + []string{ + strconv.FormatUint(s.group.Id, 10), + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=1", + }, + false, + "", + 0, + []*group.GroupMember{ + { + GroupId: s.group.Id, + Member: &group.Member{ + Address: val.Address.String(), + Weight: "3", + Metadata: validMetadata, + }, + }, + }, + }, } for _, tc := range testCases { @@ -299,6 +335,20 @@ func (s *E2ETestSuite) TestQueryGroupsByAdmin() { s.group, }, }, + { + "found groups (request with pagination)", + []string{ + val.Address.String(), + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.GroupInfo{ + s.group, + }, + }, } for _, tc := range testCases { @@ -427,6 +477,21 @@ func (s *E2ETestSuite) TestQueryGroupPoliciesByGroup() { s.groupPolicies[5], }, }, + { + "found group policies (request with pagination)", + []string{ + strconv.FormatUint(s.group.Id, 10), + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.GroupPolicyInfo{ + s.groupPolicies[0], + s.groupPolicies[1], + }, + }, } for _, tc := range testCases { @@ -503,6 +568,21 @@ func (s *E2ETestSuite) TestQueryGroupPoliciesByAdmin() { s.groupPolicies[5], }, }, + { + "found group policies (request with pagination)", + []string{ + val.Address.String(), + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.GroupPolicyInfo{ + s.groupPolicies[0], + s.groupPolicies[1], + }, + }, } for _, tc := range testCases { @@ -617,6 +697,20 @@ func (s *E2ETestSuite) TestQueryProposalsByGroupPolicy() { s.proposal, }, }, + { + "found proposals (request with pagination)", + []string{ + s.groupPolicies[0].Address, + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.Proposal{ + s.proposal, + }, + }, } for _, tc := range testCases { @@ -723,6 +817,20 @@ func (s *E2ETestSuite) TestQueryVotesByProposal() { s.vote, }, }, + { + "found votes (request with pagination)", + []string{ + "1", + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.Vote{ + s.vote, + }, + }, } for _, tc := range testCases { @@ -786,6 +894,20 @@ func (s *E2ETestSuite) TestQueryVotesByVoter() { s.vote, }, }, + { + "found votes (request with pagination)", + []string{ + val.Address.String(), + fmt.Sprintf("--%s=json", flags.FlagOutput), + "--limit=2", + }, + false, + "", + 0, + []*group.Vote{ + s.vote, + }, + }, } for _, tc := range testCases { diff --git a/x/group/client/cli/query.go b/x/group/client/cli/query.go index 809bd29a6b..88d2582473 100644 --- a/x/group/client/cli/query.go +++ b/x/group/client/cli/query.go @@ -52,9 +52,15 @@ func QueryGroupsByMemberCmd() *cobra.Command { return err } + pageReq, err := client.ReadPageRequest(cmd.Flags()) + if err != nil { + return err + } + queryClient := group.NewQueryClient(clientCtx) res, err := queryClient.GroupsByMember(cmd.Context(), &group.QueryGroupsByMemberRequest{ - Address: args[0], + Address: args[0], + Pagination: pageReq, }) if err != nil { return err @@ -171,6 +177,7 @@ func QueryGroupMembersCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "group-members") return cmd } @@ -207,6 +214,7 @@ func QueryGroupsByAdminCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "groups-by-admin") return cmd } @@ -248,6 +256,7 @@ func QueryGroupPoliciesByGroupCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "groups-policies-by-group") return cmd } @@ -284,6 +293,7 @@ func QueryGroupPoliciesByAdminCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "group-policies-by-admin") return cmd } @@ -355,6 +365,7 @@ func QueryProposalsByGroupPolicyCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "proposals-by-group-policy") return cmd } @@ -432,6 +443,7 @@ func QueryVotesByProposalCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "votes-by-proposal") return cmd } @@ -503,10 +515,12 @@ func QueryVotesByVoterCmd() *cobra.Command { } flags.AddQueryFlagsToCmd(cmd) + flags.AddPaginationFlagsToCmd(cmd, "votes-by-voter") return cmd } +// QueryGroupsCmd creates a CLI command for Query/Groups. func QueryGroupsCmd() *cobra.Command { cmd := &cobra.Command{ Use: "groups",