From 8e754eb4a3e8f085957fb48bc357e1d9042e6875 Mon Sep 17 00:00:00 2001 From: Artem Date: Thu, 10 Oct 2024 00:09:54 +0300 Subject: [PATCH] Fix: return em[ty array in balance field --- cmd/api/handler/address_test.go | 49 ++++++++++++++++++++++++++++ cmd/api/handler/responses/address.go | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/cmd/api/handler/address_test.go b/cmd/api/handler/address_test.go index 81d25dd..4b41ed5 100644 --- a/cmd/api/handler/address_test.go +++ b/cmd/api/handler/address_test.go @@ -17,6 +17,7 @@ import ( "github.com/celenium-io/astria-indexer/internal/storage" "github.com/celenium-io/astria-indexer/internal/storage/mock" "github.com/celenium-io/astria-indexer/internal/storage/types" + testsuite "github.com/celenium-io/astria-indexer/internal/test_suite" sdk "github.com/dipdup-net/indexer-sdk/pkg/storage" "github.com/labstack/echo/v4" "github.com/shopspring/decimal" @@ -104,6 +105,54 @@ func (s *AddressTestSuite) TestGet() { s.Require().Equal("nria", address.Bridge.FeeAsset) } +func (s *AddressTestSuite) TestGetWithEmptyBalances() { + req := httptest.NewRequest(http.MethodGet, "/", nil) + rec := httptest.NewRecorder() + c := s.echo.NewContext(req, rec) + c.SetPath("/address/:hash") + c.SetParamNames("hash") + c.SetParamValues(testAddressHash) + + s.address.EXPECT(). + ByHash(gomock.Any(), testAddress.Hash). + Return(storage.Address{ + Hash: testsuite.RandomAddress(), + Id: 1, + Nonce: 10, + ActionsCount: 1, + SignedTxCount: 1, + Balance: nil, + }, nil). + Times(1) + + s.bridge.EXPECT(). + ByAddress(gomock.Any(), testAddress.Id). + Return(storage.Bridge{ + Asset: currency.DefaultCurrency, + FeeAsset: currency.DefaultCurrency, + Address: &testAddress, + }, nil). + Times(1) + + s.Require().NoError(s.handler.Get(c)) + s.Require().Equal(http.StatusOK, rec.Code) + + var address responses.Address + err := json.NewDecoder(rec.Body).Decode(&address) + s.Require().NoError(err) + s.Require().EqualValues(1, address.Id) + s.Require().EqualValues(1, address.ActionsCount) + s.Require().EqualValues(1, address.SignedTxCount) + s.Require().EqualValues(0, address.Height) + s.Require().EqualValues(10, address.Nonce) + s.Require().NotNil(address.Bridge) + s.Require().Equal(testAddressHash, address.Bridge.Address) + s.Require().Equal("nria", address.Bridge.Asset) + s.Require().Equal("nria", address.Bridge.FeeAsset) + s.Require().NotNil(address.Balance) + s.Require().Empty(address.Balance) +} + func (s *AddressTestSuite) TestGetWithoutBridge() { req := httptest.NewRequest(http.MethodGet, "/", nil) rec := httptest.NewRecorder() diff --git a/cmd/api/handler/responses/address.go b/cmd/api/handler/responses/address.go index 5e0d600..edeeff1 100644 --- a/cmd/api/handler/responses/address.go +++ b/cmd/api/handler/responses/address.go @@ -20,7 +20,7 @@ type Address struct { Hash string `example:"astria1phym4uktjn6gjle226009ge7u82w0dgtszs8x2" json:"hash" swaggertype:"string"` IsBridge bool `example:"false" json:"is_bridge" swaggertype:"boolean"` - Balance []Balance `json:"balances,omitempty"` + Balance []Balance `json:"balances"` Bridge *Bridge `json:"bridge,omitempty"` }