github.com/Finschia/finschia-sdk@v0.48.1/x/bank/types/params_test.go (about) 1 package types 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 sdk "github.com/Finschia/finschia-sdk/types" 9 ) 10 11 func Test_validateSendEnabledParam(t *testing.T) { 12 type args struct { 13 i interface{} 14 } 15 tests := []struct { 16 name string 17 args args 18 wantErr bool 19 }{ 20 {"invalid type", args{sdk.NewCoin(sdk.DefaultBondDenom, sdk.OneInt())}, true}, 21 22 {"invalid empty denom send enabled", args{*NewSendEnabled("", true)}, true}, 23 {"invalid empty denom send disabled", args{*NewSendEnabled("", false)}, true}, 24 25 {"valid denom send enabled", args{*NewSendEnabled(sdk.DefaultBondDenom, true)}, false}, 26 {"valid denom send disabled", args{*NewSendEnabled(sdk.DefaultBondDenom, false)}, false}, 27 28 {"invalid denom send enabled", args{*NewSendEnabled("0FOO", true)}, true}, 29 {"invalid denom send disabled", args{*NewSendEnabled("0FOO", false)}, true}, 30 } 31 for _, tt := range tests { 32 tt := tt 33 t.Run(tt.name, func(t *testing.T) { 34 require.Equal(t, tt.wantErr, validateSendEnabled(tt.args.i) != nil) 35 }) 36 } 37 } 38 39 func Test_sendParamEqual(t *testing.T) { 40 paramsA := NewSendEnabled(sdk.DefaultBondDenom, true) 41 paramsB := NewSendEnabled(sdk.DefaultBondDenom, true) 42 paramsC := NewSendEnabled("foodenom", false) 43 44 ok := paramsA.Equal(paramsB) 45 require.True(t, ok) 46 47 ok = paramsA.Equal(paramsC) 48 require.False(t, ok) 49 } 50 51 func Test_sendParamString(t *testing.T) { 52 paramString := "denom: foo\nenabled: false\n" 53 param := NewSendEnabled("foo", false) 54 55 require.Equal(t, paramString, param.String()) 56 } 57 58 func Test_validateParams(t *testing.T) { 59 params := DefaultParams() 60 61 // default params have no error 62 require.NoError(t, params.Validate()) 63 64 // default case is all denoms are enabled for sending 65 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 66 require.True(t, params.SendEnabledDenom("foodenom")) 67 68 params.DefaultSendEnabled = false 69 params = params.SetSendEnabledParam("foodenom", true) 70 71 require.NoError(t, validateSendEnabledParams(params.SendEnabled)) 72 require.True(t, params.SendEnabledDenom("foodenom")) 73 require.False(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 74 75 params.DefaultSendEnabled = true 76 params = params.SetSendEnabledParam("foodenom", false) 77 78 require.NoError(t, validateSendEnabledParams(params.SendEnabled)) 79 require.False(t, params.SendEnabledDenom("foodenom")) 80 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 81 82 params = params.SetSendEnabledParam("foodenom", true) 83 require.True(t, params.SendEnabledDenom("foodenom")) 84 85 params = params.SetSendEnabledParam("foodenom", false) 86 require.False(t, params.SendEnabledDenom("foodenom")) 87 88 require.True(t, params.SendEnabledDenom("foodenom2")) 89 params = params.SetSendEnabledParam("foodenom2", false) 90 require.True(t, params.SendEnabledDenom("")) 91 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 92 require.False(t, params.SendEnabledDenom("foodenom2")) 93 94 paramYaml := `send_enabled: 95 - denom: foodenom 96 enabled: false 97 - denom: foodenom2 98 enabled: false 99 default_send_enabled: true 100 ` 101 require.Equal(t, paramYaml, params.String()) 102 103 // Ensure proper format of yaml output when false 104 params.DefaultSendEnabled = false 105 paramYaml = `send_enabled: 106 - denom: foodenom 107 enabled: false 108 - denom: foodenom2 109 enabled: false 110 ` 111 require.Equal(t, paramYaml, params.String()) 112 113 params = NewParams(true, SendEnabledParams{ 114 NewSendEnabled("foodenom", false), 115 NewSendEnabled("foodenom", true), // this is not allowed 116 }) 117 118 // fails due to duplicate entries. 119 require.Error(t, params.Validate()) 120 121 // fails due to invalid type 122 require.Error(t, validateSendEnabledParams(NewSendEnabled("foodenom", true))) 123 124 require.Error(t, validateSendEnabledParams(SendEnabledParams{NewSendEnabled("INVALIDDENOM", true)})) 125 }