diff --git a/x/group/keeper/invariants.go b/x/group/keeper/invariants.go index 78572afa1912..139991e00dfa 100644 --- a/x/group/keeper/invariants.go +++ b/x/group/keeper/invariants.go @@ -85,7 +85,7 @@ func GroupTotalWeightInvariantHelper(ctx sdk.Context, key storetypes.StoreKey, g } } - groupWeight, err := groupmath.NewPositiveDecFromString(groupInfo.GetTotalWeight()) + groupWeight, err := groupmath.NewNonNegativeDecFromString(groupInfo.GetTotalWeight()) if err != nil { msg += fmt.Sprintf("error while parsing non-nengative decimal for group with ID %d\n%v\n", groupInfo.Id, err) return msg, broken diff --git a/x/group/keeper/keeper_test.go b/x/group/keeper/keeper_test.go index 59cb7e4c2f16..f5ef2c74fa68 100644 --- a/x/group/keeper/keeper_test.go +++ b/x/group/keeper/keeper_test.go @@ -2753,7 +2753,7 @@ func (s *TestSuite) TestLeaveGroup() { math.NewDecFromInt64(0), }, { - "valid testcase: decision policy is not present", + "valid testcase: decision policy is not present (and group total weight can be 0)", &group.MsgLeaveGroup{ GroupId: groupID2, Address: member1.String(), diff --git a/x/group/keeper/msg_server.go b/x/group/keeper/msg_server.go index 17fa669b79b6..60312a4d5d53 100644 --- a/x/group/keeper/msg_server.go +++ b/x/group/keeper/msg_server.go @@ -97,9 +97,9 @@ func (k Keeper) CreateGroup(goCtx context.Context, req *group.MsgCreateGroup) (* func (k Keeper) UpdateGroupMembers(goCtx context.Context, req *group.MsgUpdateGroupMembers) (*group.MsgUpdateGroupMembersResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) action := func(g *group.GroupInfo) error { - totalWeight, err := math.NewPositiveDecFromString(g.TotalWeight) + totalWeight, err := math.NewNonNegativeDecFromString(g.TotalWeight) if err != nil { - return err + return sdkerrors.Wrap(err, "group total weight") } for i := range req.MemberUpdates { if err := k.assertMetadataLength(req.MemberUpdates[i].Metadata, "group member metadata"); err != nil { @@ -800,7 +800,7 @@ func (k Keeper) LeaveGroup(goCtx context.Context, req *group.MsgLeaveGroup) (*gr return nil, sdkerrors.Wrap(err, "group") } - groupWeight, err := math.NewPositiveDecFromString(groupInfo.TotalWeight) + groupWeight, err := math.NewNonNegativeDecFromString(groupInfo.TotalWeight) if err != nil { return nil, err }