github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/mw/fiat/currency/feed/feed_test.go (about) 1 package currencyfeed 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 npool "github.com/NpoolPlatform/message/npool/chain/mw/v1/fiat/currency/feed" 13 14 fiat1 "github.com/NpoolPlatform/chain-middleware/pkg/mw/fiat" 15 16 "github.com/google/uuid" 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func init() { 21 if runByGithubAction, err := strconv.ParseBool(os.Getenv("RUN_BY_GITHUB_ACTION")); err == nil && runByGithubAction { 22 return 23 } 24 if err := testinit.Init(); err != nil { 25 fmt.Printf("cannot init test stub: %v\n", err) 26 } 27 } 28 29 var ret = &npool.Feed{ 30 FiatName: "My BTC1", 31 FiatLogo: uuid.NewString(), 32 FiatUnit: "BTC", 33 FeedType: basetypes.CurrencyFeedType_CoinGecko, 34 FeedTypeStr: basetypes.CurrencyFeedType_CoinGecko.String(), 35 FeedFiatName: "BTC123", 36 } 37 38 var req = &npool.FeedReq{ 39 FeedType: &ret.FeedType, 40 FeedFiatName: &ret.FeedFiatName, 41 } 42 43 func setupFiat(t *testing.T) func(*testing.T) { 44 ret.FiatID = uuid.NewString() 45 req.FiatID = &ret.FiatID 46 ret.FiatName = uuid.NewString() 47 48 h1, err := fiat1.NewHandler( 49 context.Background(), 50 fiat1.WithEntID(&ret.FiatID, true), 51 fiat1.WithName(&ret.FiatName, true), 52 fiat1.WithLogo(&ret.FiatLogo, true), 53 fiat1.WithUnit(&ret.FiatUnit, true), 54 ) 55 assert.Nil(t, err) 56 57 _, err = h1.CreateFiat(context.Background()) 58 assert.Nil(t, err) 59 60 return func(*testing.T) {} 61 } 62 63 func create(t *testing.T) { 64 handler, err := NewHandler( 65 context.Background(), 66 WithFiatID(req.FiatID, true), 67 WithFeedType(req.FeedType, true), 68 WithFeedFiatName(req.FeedFiatName, true), 69 ) 70 assert.Nil(t, err) 71 72 info, err := handler.CreateFeed(context.Background()) 73 if assert.Nil(t, err) { 74 ret.UpdatedAt = info.UpdatedAt 75 ret.CreatedAt = info.CreatedAt 76 ret.ID = info.ID 77 ret.EntID = info.EntID 78 assert.Equal(t, info, ret) 79 } 80 } 81 82 func update(t *testing.T) { 83 ret.FeedFiatName = "BTCWWWW" 84 ret.Disabled = true 85 86 req.FeedFiatName = &ret.FeedFiatName 87 req.Disabled = &ret.Disabled 88 89 handler, err := NewHandler( 90 context.Background(), 91 WithID(&ret.ID, true), 92 WithFeedFiatName(req.FeedFiatName, true), 93 WithDisabled(req.Disabled, true), 94 ) 95 assert.Nil(t, err) 96 97 info, err := handler.UpdateFeed(context.Background()) 98 if assert.Nil(t, err) { 99 ret.UpdatedAt = info.UpdatedAt 100 assert.Equal(t, info, ret) 101 } 102 } 103 104 func TestFiat(t *testing.T) { 105 if runByGithubAction, err := strconv.ParseBool(os.Getenv("RUN_BY_GITHUB_ACTION")); err == nil && runByGithubAction { 106 return 107 } 108 109 teardown := setupFiat(t) 110 defer teardown(t) 111 112 t.Run("create", create) 113 t.Run("update", update) 114 }