Skip to content

Commit d637005

Browse files
authored
Add message tests (#136)
* Add message tests - step 1 of adding testing to the tutorial Signed-off-by: Marko Baricevic <[email protected]> * minor changes * more test cases
1 parent da67f75 commit d637005

File tree

3 files changed

+160
-2
lines changed

3 files changed

+160
-2
lines changed

Makefile

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
PACKAGES=$(shell go list ./... | grep -v '/simulation')
2+
13
include Makefile.ledger
24
all: lint install
35

@@ -12,4 +14,7 @@ go.sum: go.mod
1214
lint:
1315
golangci-lint run
1416
@find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" | xargs gofmt -d -s
15-
go mod verify
17+
go mod verify
18+
19+
test:
20+
@go test -mod=readonly $(PACKAGES)

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ require (
1111
github.com/spf13/afero v1.2.2 // indirect
1212
github.com/spf13/cobra v0.0.5
1313
github.com/spf13/viper v1.3.2
14+
github.com/stretchr/testify v1.3.0
1415
github.com/tendermint/go-amino v0.15.0
1516
github.com/tendermint/tendermint v0.32.2
1617
github.com/tendermint/tm-db v0.1.1
1718
golang.org/x/sys v0.0.0-20190329044733-9eb1bfa1ce65 // indirect
18-
google.golang.org/appengine v1.4.0 // indirect
1919
google.golang.org/genproto v0.0.0-20190327125643-d831d65fe17d // indirect
2020
)
+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
package types
2+
3+
import (
4+
"testing"
5+
6+
sdk "github.com/cosmos/cosmos-sdk/types"
7+
"github.com/stretchr/testify/require"
8+
)
9+
10+
func TestMsgSetName(t *testing.T) {
11+
name := "maTurtle"
12+
value := "1"
13+
acc := sdk.AccAddress([]byte("me"))
14+
var msg = NewMsgSetName(name, value, acc)
15+
16+
require.Equal(t, msg.Route(), RouterKey)
17+
require.Equal(t, msg.Type(), "set_name")
18+
}
19+
20+
func TestMsgSetNameValidation(t *testing.T) {
21+
name := "maTurtle"
22+
value := "1"
23+
acc := sdk.AccAddress([]byte("me"))
24+
name2 := "a"
25+
value2 := "2"
26+
acc2 := sdk.AccAddress([]byte("you"))
27+
28+
cases := []struct {
29+
valid bool
30+
tx MsgSetName
31+
}{
32+
{true, NewMsgSetName(name, value, acc)},
33+
{true, NewMsgSetName(name2, value2, acc2)},
34+
{true, NewMsgSetName(name2, value, acc2)},
35+
{true, NewMsgSetName(name2, value2, acc)},
36+
{false, NewMsgSetName(name, value2, nil)},
37+
{false, NewMsgSetName("", value2, acc2)},
38+
{false, NewMsgSetName(name, "", acc2)},
39+
}
40+
41+
for _, tc := range cases {
42+
err := tc.tx.ValidateBasic()
43+
if tc.valid {
44+
require.Nil(t, err)
45+
} else {
46+
require.NotNil(t, err)
47+
}
48+
}
49+
}
50+
51+
func TestMsgSetNameGetSignBytes(t *testing.T) {
52+
name := "maTurtle"
53+
value := "1"
54+
acc := sdk.AccAddress([]byte("me"))
55+
56+
var msg = NewMsgSetName(name, value, acc)
57+
res := msg.GetSignBytes()
58+
59+
expected := `{"type":"nameservice/SetName","value":{"name":"maTurtle","owner":"cosmos1d4js690r9j","value":"1"}}`
60+
61+
require.Equal(t, expected, string(res))
62+
}
63+
64+
func TestMsgBuyName(t *testing.T) {
65+
name := "maTurtle"
66+
coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10))
67+
acc := sdk.AccAddress([]byte("me"))
68+
var msg = NewMsgBuyName(name, coins, acc)
69+
70+
require.Equal(t, msg.Route(), RouterKey)
71+
require.Equal(t, msg.Type(), "buy_name")
72+
}
73+
74+
func TestMsgBuyNameValidation(t *testing.T) {
75+
name := "maTurtle"
76+
acc := sdk.AccAddress([]byte("me"))
77+
name2 := "a"
78+
acc2 := sdk.AccAddress([]byte("you"))
79+
coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10))
80+
81+
cases := []struct {
82+
valid bool
83+
tx MsgBuyName
84+
}{
85+
{true, NewMsgBuyName(name, coins, acc)},
86+
{true, NewMsgBuyName(name2, coins, acc2)},
87+
}
88+
89+
for _, tc := range cases {
90+
err := tc.tx.ValidateBasic()
91+
if tc.valid {
92+
require.Nil(t, err)
93+
} else {
94+
require.NotNil(t, err)
95+
}
96+
}
97+
}
98+
99+
func TestMsgBuyNameGetSignBytes(t *testing.T) {
100+
name := "maTurtle"
101+
acc := sdk.AccAddress([]byte("me"))
102+
coins := sdk.NewCoins(sdk.NewInt64Coin("atom", 10))
103+
var msg = NewMsgBuyName(name, coins, acc)
104+
res := msg.GetSignBytes()
105+
106+
expected := `{"type":"nameservice/BuyName","value":{"bid":[{"amount":"10","denom":"atom"}],"buyer":"cosmos1d4js690r9j","name":"maTurtle"}}`
107+
108+
require.Equal(t, expected, string(res))
109+
}
110+
111+
func TestMsgDeleteName(t *testing.T) {
112+
name := "maTurtle"
113+
acc := sdk.AccAddress([]byte("me"))
114+
var msg = NewMsgDeleteName(name, acc)
115+
116+
require.Equal(t, msg.Route(), RouterKey)
117+
require.Equal(t, msg.Type(), "delete_name")
118+
}
119+
120+
func TestMsgDeleteNameValidation(t *testing.T) {
121+
name := "maTurtle"
122+
acc := sdk.AccAddress([]byte("me"))
123+
name2 := "a"
124+
acc2 := sdk.AccAddress([]byte("you"))
125+
126+
cases := []struct {
127+
valid bool
128+
tx MsgDeleteName
129+
}{
130+
{true, NewMsgDeleteName(name, acc)},
131+
{true, NewMsgDeleteName(name2, acc2)},
132+
}
133+
134+
for _, tc := range cases {
135+
err := tc.tx.ValidateBasic()
136+
if tc.valid {
137+
require.Nil(t, err)
138+
} else {
139+
require.NotNil(t, err)
140+
}
141+
}
142+
}
143+
144+
func TestMsgDeleteNameGetSignBytes(t *testing.T) {
145+
name := "maTurtle"
146+
acc := sdk.AccAddress([]byte("me"))
147+
var msg = NewMsgDeleteName(name, acc)
148+
res := msg.GetSignBytes()
149+
150+
expected := `{"type":"nameservice/DeleteName","value":{"name":"maTurtle","owner":"cosmos1d4js690r9j"}}`
151+
152+
require.Equal(t, expected, string(res))
153+
}

0 commit comments

Comments
 (0)