github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/mw/coin/fiat/currency/history/history_test.go (about) 1 package currencyhistory 2 3 import ( 4 "context" 5 "fmt" 6 "os" 7 "strconv" 8 "testing" 9 10 testinit "github.com/NpoolPlatform/chain-middleware/pkg/testinit" 11 basetypes "github.com/NpoolPlatform/message/npool/basetypes/v1" 12 currencymwpb "github.com/NpoolPlatform/message/npool/chain/mw/v1/coin/fiat/currency" 13 npool "github.com/NpoolPlatform/message/npool/chain/mw/v1/coin/fiat/currency/history" 14 15 coin1 "github.com/NpoolPlatform/chain-middleware/pkg/mw/coin" 16 currency1 "github.com/NpoolPlatform/chain-middleware/pkg/mw/coin/fiat/currency" 17 fiat1 "github.com/NpoolPlatform/chain-middleware/pkg/mw/fiat" 18 "github.com/NpoolPlatform/libent-cruder/pkg/cruder" 19 20 "github.com/google/uuid" 21 "github.com/stretchr/testify/assert" 22 ) 23 24 func init() { 25 if runByGithubAction, err := strconv.ParseBool(os.Getenv("RUN_BY_GITHUB_ACTION")); err == nil && runByGithubAction { 26 return 27 } 28 if err := testinit.Init(); err != nil { 29 fmt.Printf("cannot init test stub: %v\n", err) 30 } 31 } 32 33 var ret = ¤cymwpb.Currency{ 34 CoinName: "My BTC1", 35 CoinLogo: uuid.NewString(), 36 CoinUnit: "BTC", 37 CoinENV: "test", 38 FiatLogo: uuid.NewString(), 39 FiatUnit: "USD", 40 MarketValueHigh: "0.000000000000000000", 41 MarketValueLow: "0.000000000000000000", 42 FeedType: basetypes.CurrencyFeedType_CoinGecko, 43 FeedTypeStr: basetypes.CurrencyFeedType_CoinGecko.String(), 44 } 45 46 var req = ¤cymwpb.CurrencyReq{ 47 FeedType: &ret.FeedType, 48 MarketValueHigh: &ret.MarketValueHigh, 49 MarketValueLow: &ret.MarketValueLow, 50 } 51 52 func setupCoin(t *testing.T) func(*testing.T) { 53 ret.CoinTypeID = uuid.NewString() 54 req.CoinTypeID = &ret.CoinTypeID 55 ret.CoinName = uuid.NewString() 56 ret.FiatName = uuid.NewString() 57 ret.FiatID = uuid.NewString() 58 req.FiatID = &ret.FiatID 59 60 h1, err := coin1.NewHandler( 61 context.Background(), 62 coin1.WithEntID(&ret.CoinTypeID, true), 63 coin1.WithName(&ret.CoinName, true), 64 coin1.WithLogo(&ret.CoinLogo, true), 65 coin1.WithUnit(&ret.CoinUnit, true), 66 coin1.WithENV(&ret.CoinENV, true), 67 ) 68 assert.Nil(t, err) 69 70 _, err = h1.CreateCoin(context.Background()) 71 assert.Nil(t, err) 72 73 h2, err := fiat1.NewHandler( 74 context.Background(), 75 fiat1.WithEntID(&ret.FiatID, true), 76 fiat1.WithName(&ret.FiatName, true), 77 fiat1.WithLogo(&ret.FiatLogo, true), 78 fiat1.WithUnit(&ret.FiatUnit, true), 79 ) 80 assert.Nil(t, err) 81 82 _, err = h2.CreateFiat(context.Background()) 83 assert.Nil(t, err) 84 85 h3, err := currency1.NewHandler( 86 context.Background(), 87 currency1.WithCoinTypeID(req.CoinTypeID, true), 88 currency1.WithFiatID(req.FiatID, true), 89 currency1.WithMarketValueHigh(req.MarketValueHigh, true), 90 currency1.WithMarketValueLow(req.MarketValueLow, true), 91 currency1.WithFeedType(req.FeedType, true), 92 ) 93 assert.Nil(t, err) 94 95 _, err = h3.CreateCurrency(context.Background()) 96 assert.Nil(t, err) 97 98 _, err = h3.CreateCurrency(context.Background()) 99 assert.Nil(t, err) 100 101 return func(*testing.T) { 102 _, _ = h1.DeleteCoin(context.Background()) 103 } 104 } 105 106 func getMany(t *testing.T) { 107 handler, err := NewHandler( 108 context.Background(), 109 WithConds(&npool.Conds{ 110 CoinTypeID: &basetypes.StringVal{Op: cruder.EQ, Value: ret.CoinTypeID}, 111 CoinTypeIDs: &basetypes.StringSliceVal{Op: cruder.IN, Value: []string{ret.CoinTypeID}}, 112 }), 113 WithOffset(0), 114 WithLimit(100), 115 ) 116 assert.Nil(t, err) 117 118 infos, total, err := handler.GetCurrencies(context.Background()) 119 assert.Nil(t, err) 120 assert.Equal(t, uint32(2), total) 121 assert.Equal(t, 2, len(infos)) 122 } 123 124 func TestCoin(t *testing.T) { 125 if runByGithubAction, err := strconv.ParseBool(os.Getenv("RUN_BY_GITHUB_ACTION")); err == nil && runByGithubAction { 126 return 127 } 128 129 teardown := setupCoin(t) 130 defer teardown(t) 131 132 t.Run("getMany", getMany) 133 }