github.com/Finschia/finschia-sdk@v0.49.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 t.Run(tt.name, func(t *testing.T) { 33 require.Equal(t, tt.wantErr, validateSendEnabled(tt.args.i) != nil) 34 }) 35 } 36 } 37 38 func Test_sendParamEqual(t *testing.T) { 39 paramsA := NewSendEnabled(sdk.DefaultBondDenom, true) 40 paramsB := NewSendEnabled(sdk.DefaultBondDenom, true) 41 paramsC := NewSendEnabled("foodenom", false) 42 43 ok := paramsA.Equal(paramsB) 44 require.True(t, ok) 45 46 ok = paramsA.Equal(paramsC) 47 require.False(t, ok) 48 } 49 50 func Test_sendParamString(t *testing.T) { 51 paramString := "denom: foo\nenabled: false\n" 52 param := NewSendEnabled("foo", false) 53 54 require.Equal(t, paramString, param.String()) 55 } 56 57 func Test_validateParams(t *testing.T) { 58 params := DefaultParams() 59 60 // default params have no error 61 require.NoError(t, params.Validate()) 62 63 // default case is all denoms are enabled for sending 64 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 65 require.True(t, params.SendEnabledDenom("foodenom")) 66 67 params.DefaultSendEnabled = false 68 params = params.SetSendEnabledParam("foodenom", true) 69 70 require.NoError(t, validateSendEnabledParams(params.SendEnabled)) 71 require.True(t, params.SendEnabledDenom("foodenom")) 72 require.False(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 73 74 params.DefaultSendEnabled = true 75 params = params.SetSendEnabledParam("foodenom", false) 76 77 require.NoError(t, validateSendEnabledParams(params.SendEnabled)) 78 require.False(t, params.SendEnabledDenom("foodenom")) 79 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 80 81 params = params.SetSendEnabledParam("foodenom", true) 82 require.True(t, params.SendEnabledDenom("foodenom")) 83 84 params = params.SetSendEnabledParam("foodenom", false) 85 require.False(t, params.SendEnabledDenom("foodenom")) 86 87 require.True(t, params.SendEnabledDenom("foodenom2")) 88 params = params.SetSendEnabledParam("foodenom2", false) 89 require.True(t, params.SendEnabledDenom("")) 90 require.True(t, params.SendEnabledDenom(sdk.DefaultBondDenom)) 91 require.False(t, params.SendEnabledDenom("foodenom2")) 92 93 paramYaml := `send_enabled: 94 - denom: foodenom 95 enabled: false 96 - denom: foodenom2 97 enabled: false 98 default_send_enabled: true 99 ` 100 require.Equal(t, paramYaml, params.String()) 101 102 // Ensure proper format of yaml output when false 103 params.DefaultSendEnabled = false 104 paramYaml = `send_enabled: 105 - denom: foodenom 106 enabled: false 107 - denom: foodenom2 108 enabled: false 109 ` 110 require.Equal(t, paramYaml, params.String()) 111 112 params = NewParams(true, SendEnabledParams{ 113 NewSendEnabled("foodenom", false), 114 NewSendEnabled("foodenom", true), // this is not allowed 115 }) 116 117 // fails due to duplicate entries. 118 require.Error(t, params.Validate()) 119 120 // fails due to invalid type 121 require.Error(t, validateSendEnabledParams(NewSendEnabled("foodenom", true))) 122 123 require.Error(t, validateSendEnabledParams(SendEnabledParams{NewSendEnabled("INVALIDDENOM", true)})) 124 }