github.com/Finschia/finschia-sdk@v0.49.1/x/fbridge/keeper/params_test.go (about) 1 package keeper 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 8 "github.com/Finschia/finschia-sdk/x/fbridge/testutil" 9 "github.com/Finschia/finschia-sdk/x/fbridge/types" 10 ) 11 12 func TestSetParams(t *testing.T) { 13 key, memKey, ctx, encCfg, authKeeper, bankKeeper, _ := testutil.PrepareFbridgeTest(t, 0) 14 keeper := NewKeeper(encCfg.Codec, key, memKey, authKeeper, bankKeeper, types.DefaultAuthority().String()) 15 16 tcs := map[string]struct { 17 malleate func() types.Params 18 isErr bool 19 }{ 20 "invalid guardian trust level": { 21 malleate: func() types.Params { 22 params := types.Params{} 23 params.GuardianTrustLevel = types.Fraction{Numerator: 4, Denominator: 3} 24 return params 25 }, 26 isErr: true, 27 }, 28 "invalid operator trust level": { 29 malleate: func() types.Params { 30 params := types.Params{} 31 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 32 params.OperatorTrustLevel = types.Fraction{Numerator: 4, Denominator: 3} 33 return params 34 }, 35 isErr: true, 36 }, 37 "invalid judge trust level": { 38 malleate: func() types.Params { 39 params := types.Params{} 40 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 41 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 42 params.JudgeTrustLevel = types.Fraction{Numerator: 4, Denominator: 3} 43 return params 44 }, 45 isErr: true, 46 }, 47 "invalid proposal period": { 48 malleate: func() types.Params { 49 params := types.Params{} 50 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 51 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 52 params.JudgeTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 53 params.ProposalPeriod = 0 54 return params 55 }, 56 isErr: true, 57 }, 58 "invalid timelock period": { 59 malleate: func() types.Params { 60 params := types.Params{} 61 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 62 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 63 params.JudgeTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 64 params.ProposalPeriod = 10 65 params.TimelockPeriod = 0 66 return params 67 }, 68 isErr: true, 69 }, 70 "invalid target denom": { 71 malleate: func() types.Params { 72 params := types.Params{} 73 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 74 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 75 params.JudgeTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 76 params.ProposalPeriod = 10 77 params.TimelockPeriod = 20 78 params.TargetDenom = "" 79 return params 80 }, 81 isErr: true, 82 }, 83 "missing some fields": { 84 malleate: func() types.Params { 85 params := types.Params{} 86 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 87 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 88 params.JudgeTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 89 params.TimelockPeriod = 20 90 return params 91 }, 92 isErr: true, 93 }, 94 "valid": { 95 malleate: func() types.Params { 96 params := types.Params{} 97 params.GuardianTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 98 params.OperatorTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 99 params.JudgeTrustLevel = types.Fraction{Numerator: 2, Denominator: 3} 100 params.ProposalPeriod = 10 101 params.TimelockPeriod = 20 102 params.TargetDenom = "stake" 103 return params 104 }, 105 isErr: false, 106 }, 107 } 108 109 for name, tc := range tcs { 110 t.Run(name, func(t *testing.T) { 111 params := tc.malleate() 112 if tc.isErr { 113 require.Error(t, keeper.SetParams(ctx, params)) 114 } else { 115 require.NoError(t, keeper.SetParams(ctx, params)) 116 } 117 }) 118 } 119 }