github.com/lino-network/lino@v0.6.11/x/developer/model/dumper_test.go (about) 1 package model 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 "time" 8 9 sdk "github.com/cosmos/cosmos-sdk/types" 10 "github.com/stretchr/testify/suite" 11 12 "github.com/lino-network/lino/testsuites" 13 linotypes "github.com/lino-network/lino/types" 14 ) 15 16 type DumperTestSuite struct { 17 testsuites.CtxTestSuite 18 store DeveloperStorage 19 key *sdk.KVStoreKey 20 } 21 22 func TestDumperTestSuite(t *testing.T) { 23 suite.Run(t, new(DumperTestSuite)) 24 } 25 26 func (suite *DumperTestSuite) SetupTest() { 27 key := sdk.NewKVStoreKey("dumper") 28 suite.key = key 29 suite.SetupCtx(0, time.Unix(0, 0), suite.key) 30 suite.store = NewDeveloperStorage(suite.key) 31 } 32 33 func (suite *DumperTestSuite) TestDump() { 34 file, err := ioutil.TempFile(os.TempDir(), "linodev") 35 suite.Require().Nil(err) 36 defer os.Remove(file.Name()) 37 suite.Require().Nil(err) 38 suite.store.SetDeveloper(suite.Ctx, Developer{ 39 Username: "test", 40 Website: "web1", 41 Description: "desc1", 42 }) 43 suite.store.SetDeveloper(suite.Ctx, Developer{ 44 Username: "test2", 45 Website: "web2", 46 Description: "desc2", 47 }) 48 suite.store.SetIDA(suite.Ctx, AppIDA{ 49 App: "app1", 50 Name: "appname1", 51 MiniIDAPrice: linotypes.NewMiniDollar(0), 52 IsRevoked: true, 53 RevokeCoinPrice: linotypes.NewMiniDollar(333), 54 }) 55 suite.store.SetIDABank(suite.Ctx, "app1", "user1", &IDABank{ 56 Balance: linotypes.NewMiniDollar(33), 57 }) 58 suite.store.SetAffiliatedAcc(suite.Ctx, "app1", "user1") 59 suite.store.SetReservePool(suite.Ctx, &ReservePool{ 60 Total: linotypes.NewCoinFromInt64(444), 61 TotalMiniDollar: linotypes.NewMiniDollar(333), 62 }) 63 suite.store.SetUserRole(suite.Ctx, "user2", &Role{ 64 AffiliatedApp: "app3", 65 }) 66 DumpToFile(suite.Ctx, suite.store, file.Name()) 67 } 68 69 func (suite *DumperTestSuite) TestLoad() { 70 LoadFromFile(suite.Ctx, suite.store, "./load.json") 71 dev, err := suite.store.GetDeveloper(suite.Ctx, "test") 72 suite.Require().Nil(err) 73 suite.Equal("test", string(dev.Username)) 74 dev, err = suite.store.GetDeveloper(suite.Ctx, "test2") 75 suite.Require().Nil(err) 76 suite.Equal("test2", string(dev.Username)) 77 ida, err := suite.store.GetIDA(suite.Ctx, "app1") 78 suite.Require().Nil(err) 79 suite.Equal(&AppIDA{ 80 App: "app1", 81 Name: "appname1", 82 MiniIDAPrice: linotypes.NewMiniDollar(0), 83 IsRevoked: true, 84 RevokeCoinPrice: linotypes.NewMiniDollar(333), 85 }, ida) 86 suite.True(suite.store.HasAffiliatedAcc(suite.Ctx, "app1", "user1")) 87 suite.Equal(&ReservePool{ 88 Total: linotypes.NewCoinFromInt64(444), 89 TotalMiniDollar: linotypes.NewMiniDollar(333), 90 }, suite.store.GetReservePool(suite.Ctx)) 91 role, err := suite.store.GetUserRole(suite.Ctx, "user2") 92 suite.Require().Nil(err) 93 suite.Equal(&Role{ 94 AffiliatedApp: "app3", 95 }, role) 96 }