Skip to content

Commit

Permalink
test: add cli_test for fswap module (#1391) (#1399)
Browse files Browse the repository at this point in the history
* test: add cli_test for query

Signed-off-by: 170210 <j170210@icloud.com>

* test: add cli_test for tx

Signed-off-by: 170210 <j170210@icloud.com>

* chore: lint fix

Signed-off-by: 170210 <j170210@icloud.com>

* chore: update CHANGLOG.md

Signed-off-by: 170210 <j170210@icloud.com>

* chore: lint fix

Signed-off-by: 170210 <j170210@icloud.com>

* test: add grpc query test

Signed-off-by: 170210 <j170210@icloud.com>

* fix: change fromDenom & toDenom

Signed-off-by: 170210 <j170210@icloud.com>

* fix: fix for comment

Signed-off-by: 170210 <j170210@icloud.com>

---------

Signed-off-by: 170210 <j170210@icloud.com>
(cherry picked from commit 621c03f)

Co-authored-by: 170210 <85928898+170210@users.noreply.github.com>
  • Loading branch information
mergify[bot] and 170210 authored May 24, 2024
1 parent ecea330 commit 3e73dfe
Show file tree
Hide file tree
Showing 6 changed files with 884 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
* (x/fswap) [\#1387](https://github.com/Finschia/finschia-sdk/pull/1387) add new Swap query to get a single swap
* (x/fswap) [\#1382](https://github.com/Finschia/finschia-sdk/pull/1382) add validation & unit tests in fswap module
* (x/fswap) [\#1396](https://github.com/Finschia/finschia-sdk/pull/1396) refactor to use snake_case in proto
* (x/fswap) [\#1391](https://github.com/Finschia/finschia-sdk/pull/1391) add cli_test for fswap module

### Bug Fixes
* (x/auth) [#1281](https://github.com/Finschia/finschia-sdk/pull/1281) `ModuleAccount.Validate` now reports a nil `.BaseAccount` instead of panicking. (backport #1274)
Expand Down
18 changes: 18 additions & 0 deletions x/fswap/client/testutil/cli_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//go:build norace
// +build norace

package testutil

import (
"testing"

"github.com/stretchr/testify/suite"

"github.com/Finschia/finschia-sdk/testutil/network"
)

func TestIntegrationTestSuite(t *testing.T) {
cfg := network.DefaultConfig()
cfg.NumValidators = 1
suite.Run(t, NewIntegrationTestSuite(cfg))
}
226 changes: 226 additions & 0 deletions x/fswap/client/testutil/grpc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
package testutil

import (
"fmt"

"github.com/gogo/protobuf/proto"

"github.com/Finschia/finschia-sdk/testutil"
"github.com/Finschia/finschia-sdk/testutil/rest"
sdk "github.com/Finschia/finschia-sdk/types"
grpctypes "github.com/Finschia/finschia-sdk/types/grpc"
"github.com/Finschia/finschia-sdk/types/query"
fswaptypes "github.com/Finschia/finschia-sdk/x/fswap/types"
)

func (s *IntegrationTestSuite) TestGRPCQuerySwap() {
val := s.network.Validators[0]
baseURL := val.APIAddress

testCases := []struct {
name string
url string
expectedErr bool
expected proto.Message
}{
{
"test query swap with valid query string",
fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=stake&to_denom=dummy", baseURL),
false,
&fswaptypes.QuerySwapResponse{
Swap: s.dummySwap,
},
},
{
"test query swap with not existed swap pairs",
fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=fake&to_denom=dummy", baseURL),
true,
&fswaptypes.QuerySwapResponse{},
},
{
"test query swap with nil to_denom",
fmt.Sprintf("%s/lbm/fswap/v1/swap?from_denom=stake", baseURL),
true,
&fswaptypes.QuerySwapResponse{},
},
{
"test query swap with nil from_denom",
fmt.Sprintf("%s/lbm/fswap/v1/swap?to_denom=dummy", baseURL),
true,
&fswaptypes.QuerySwapResponse{},
},
}

for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
resp, err := rest.GetRequest(tc.url)
s.Require().NoError(err)
var valRes fswaptypes.QuerySwapResponse
err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes)

if tc.expectedErr {
s.Require().Error(err)
} else {
s.Require().NoError(err)
s.Require().Equal(tc.expected.String(), valRes.String())
}
})
}
}

func (s *IntegrationTestSuite) TestGRPCQuerySwaps() {
val := s.network.Validators[0]
baseURL := val.APIAddress

testCases := []struct {
name string
url string
expectedErr bool
expected proto.Message
}{
{
"test query swaps",
fmt.Sprintf("%s/lbm/fswap/v1/swaps", baseURL),
false,
&fswaptypes.QuerySwapsResponse{
Swaps: []fswaptypes.Swap{s.dummySwap},
Pagination: &query.PageResponse{Total: 1},
},
},
}

for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
resp, err := rest.GetRequest(tc.url)
s.Require().NoError(err)
var valRes fswaptypes.QuerySwapsResponse
err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes)

if tc.expectedErr {
s.Require().Error(err)
} else {
s.Require().NoError(err)
s.Require().Equal(tc.expected.String(), valRes.String())
}
})
}
}

func (s *IntegrationTestSuite) TestGRPCQuerySwapped() {
val := s.network.Validators[0]
baseURL := val.APIAddress

testCases := []struct {
name string
url string
expectedErr bool
expected proto.Message
}{
{
"test query swapped with valid query string",
fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=stake&to_denom=dummy", baseURL),
false,
&fswaptypes.QuerySwappedResponse{
FromCoinAmount: sdk.NewCoin("stake", sdk.ZeroInt()),
ToCoinAmount: sdk.NewCoin("dummy", sdk.ZeroInt()),
},
},
{
"test query swapped with not existed swap pairs",
fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=fake&to_denom=dummy", baseURL),
true,
&fswaptypes.QuerySwappedResponse{},
},
{
"test query swapped with nil to_denom",
fmt.Sprintf("%s/lbm/fswap/v1/swapped?from_denom=stake", baseURL),
true,
&fswaptypes.QuerySwappedResponse{},
},
{
"test query swapped with nil from_denom",
fmt.Sprintf("%s/lbm/fswap/v1/swapped?to_denom=dummy", baseURL),
true,
&fswaptypes.QuerySwappedResponse{},
},
}

for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
resp, err := testutil.GetRequestWithHeaders(tc.url, map[string]string{
grpctypes.GRPCBlockHeightHeader: "1",
})
s.Require().NoError(err)
var valRes fswaptypes.QuerySwappedResponse
err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes)

if tc.expectedErr {
s.Require().Error(err)
} else {
s.Require().NoError(err)
s.Require().Equal(tc.expected.String(), valRes.String())
}
})
}
}

func (s *IntegrationTestSuite) TestGRPCQueryTotalSwappableAmount() {
val := s.network.Validators[0]
baseURL := val.APIAddress

testCases := []struct {
name string
url string
expectedErr bool
expected proto.Message
}{
{
"test query total_swappable_to_coin_amount with valid query string",
fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=stake&to_denom=dummy", baseURL),
false,
&fswaptypes.QueryTotalSwappableToCoinAmountResponse{
SwappableAmount: sdk.NewCoin("dummy", s.dummySwap.AmountCapForToDenom),
},
},
{
"test query total_swappable_to_coin_amount with not existed swap pairs",
fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=fake&to_denom=dummy", baseURL),
true,
&fswaptypes.QueryTotalSwappableToCoinAmountResponse{},
},
{
"test query total_swappable_to_coin_amount with nil to_denom",
fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?from_denom=stake", baseURL),
true,
&fswaptypes.QueryTotalSwappableToCoinAmountResponse{},
},
{
"test query total_swappable_to_coin_amount with nil from_denom",
fmt.Sprintf("%s/lbm/fswap/v1/total_swappable_to_coin_amount?to_denom=dummy", baseURL),
true,
&fswaptypes.QueryTotalSwappableToCoinAmountResponse{},
},
}

for _, tc := range testCases {
tc := tc
s.Run(tc.name, func() {
resp, err := testutil.GetRequestWithHeaders(tc.url, map[string]string{
grpctypes.GRPCBlockHeightHeader: "1",
})
s.Require().NoError(err)
var valRes fswaptypes.QueryTotalSwappableToCoinAmountResponse
err = val.ClientCtx.Codec.UnmarshalJSON(resp, &valRes)

if tc.expectedErr {
s.Require().Error(err)
} else {
s.Require().NoError(err)
s.Require().Equal(tc.expected.String(), valRes.String())
}
})
}
}
Loading

0 comments on commit 3e73dfe

Please sign in to comment.