github.com/Finschia/finschia-sdk@v0.48.1/simapp/simd/cmd/root_test.go (about) 1 package cmd 2 3 import ( 4 "encoding/json" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 dbm "github.com/tendermint/tm-db" 10 11 "github.com/Finschia/ostracon/libs/log" 12 octypes "github.com/Finschia/ostracon/types" 13 abci "github.com/tendermint/tendermint/abci/types" 14 15 "github.com/Finschia/finschia-sdk/client/flags" 16 "github.com/Finschia/finschia-sdk/server" 17 "github.com/Finschia/finschia-sdk/simapp" 18 "github.com/Finschia/finschia-sdk/store/types" 19 ) 20 21 func TestNewApp(t *testing.T) { 22 encodingConfig := simapp.MakeTestEncodingConfig() 23 a := appCreator{encodingConfig} 24 db := dbm.NewMemDB() 25 tempDir := t.TempDir() 26 ctx := server.NewDefaultContext() 27 ctx.Viper.Set(flags.FlagHome, tempDir) 28 ctx.Viper.Set(server.FlagPruning, types.PruningOptionNothing) 29 app := a.newApp(log.NewOCLogger(log.NewSyncWriter(os.Stdout)), db, nil, ctx.Viper) 30 require.NotNil(t, app) 31 } 32 33 func TestAppExport(t *testing.T) { 34 encodingConfig := simapp.MakeTestEncodingConfig() 35 logger := log.NewOCLogger(log.NewSyncWriter(os.Stdout)) 36 a := appCreator{encodingConfig} 37 db := dbm.NewMemDB() 38 tempDir := t.TempDir() 39 ctx := server.NewDefaultContext() 40 ctx.Viper.Set(flags.FlagHome, tempDir) 41 ctx.Viper.Set(server.FlagPruning, types.PruningOptionNothing) 42 43 // create default genesis data and save to store 44 app := simapp.NewSimApp(logger, db, nil, true, map[int64]bool{}, tempDir, 0, encodingConfig, simapp.EmptyAppOptions{}) 45 genesisState := simapp.NewDefaultGenesisState(encodingConfig.Marshaler) 46 stateBytes, err := json.MarshalIndent(genesisState, "", " ") 47 require.NoError(t, err) 48 genDoc := &octypes.GenesisDoc{} 49 genDoc.ChainID = "theChainId" 50 genDoc.Validators = nil 51 genDoc.AppState = stateBytes 52 app.InitChain( 53 abci.RequestInitChain{ 54 Validators: []abci.ValidatorUpdate{}, 55 ConsensusParams: simapp.DefaultConsensusParams, 56 AppStateBytes: genDoc.AppState, 57 }, 58 ) 59 app.Commit() 60 61 tests := []struct { 62 name string 63 height int64 64 expectErr bool 65 }{ 66 { 67 "height error", 68 3, 69 true, 70 }, 71 { 72 "valid export", 73 -1, 74 false, 75 }, 76 } 77 78 for _, tc := range tests { 79 tc := tc 80 t.Run(tc.name, func(t *testing.T) { 81 exported, err := a.appExport(logger, db, nil, tc.height, false, []string{}, ctx.Viper) 82 if tc.expectErr { 83 require.Error(t, err) 84 } else { 85 require.NoError(t, err) 86 } 87 require.NotNil(t, exported) 88 }) 89 } 90 91 }