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  }