Skip to content

Commit 6232ad0

Browse files
gsoares85AndresQuijano
authored andcommitted
feat: moved interface to handler
1 parent 38a01f2 commit 6232ad0

8 files changed

Lines changed: 487 additions & 36 deletions

File tree

.mockery.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ packages:
3535
github.com/rsksmart/liquidity-provider-server/internal/usecases/liquidity_provider:
3636
interfaces:
3737
DefaultCredentialsProvider:
38-
github.com/rsksmart/liquidity-provider-server/internal/usecases/reports:
38+
github.com/rsksmart/liquidity-provider-server/internal/adapters/entrypoints/rest/handlers:
3939
interfaces:
40-
AssetsReportUseCase:
40+
GetAssetsReportUseCase:
4141
github.com/rsksmart/liquidity-provider-server/internal/entities/liquidity_provider:
4242
interfaces:
4343
LiquidityProviderRepository:

internal/adapters/entrypoints/rest/handlers/get_reports_assets.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
package handlers
22

33
import (
4+
"context"
45
"github.com/rsksmart/liquidity-provider-server/internal/adapters/entrypoints/rest"
6+
"github.com/rsksmart/liquidity-provider-server/internal/entities"
57
"github.com/rsksmart/liquidity-provider-server/internal/usecases/reports"
68
"github.com/rsksmart/liquidity-provider-server/pkg"
79
"net/http"
810
)
911

12+
type GetAssetsReportUseCase interface {
13+
Run(ctx context.Context) (reports.GetAssetsReportResponse, error)
14+
GetRBTCLiquidity(ctx context.Context) (*entities.Wei, error)
15+
GetBTCLiquidity(ctx context.Context) (*entities.Wei, error)
16+
GetBTCLocked(ctx context.Context) (*entities.Wei, error)
17+
GetRBTCLocked(ctx context.Context) (*entities.Wei, error)
18+
GetRBTCBalance(ctx context.Context) (*entities.Wei, error)
19+
GetBtcBalance() (*entities.Wei, error)
20+
}
21+
1022
// NewGetReportsAssetsHandler
1123
// @Title Get asset Reports
1224
// @Description Get the asset information for the LPS.
1325
// @Success 200 pkg.GetAssetsReportDTO
1426
// @Route /reports/assets [get]
15-
func NewGetReportsAssetsHandler(useCase reports.AssetsReportUseCase) http.HandlerFunc {
27+
func NewGetReportsAssetsHandler(useCase GetAssetsReportUseCase) http.HandlerFunc {
1628
return func(w http.ResponseWriter, req *http.Request) {
1729
response, err := useCase.Run(req.Context())
1830
if err != nil {

internal/adapters/entrypoints/rest/handlers/get_reports_assets_test.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
package handlers
1+
package handlers_test
22

33
import (
4-
"context"
54
"fmt"
5+
"github.com/rsksmart/liquidity-provider-server/internal/adapters/entrypoints/rest/handlers"
66
"github.com/rsksmart/liquidity-provider-server/internal/usecases/reports"
77
"github.com/rsksmart/liquidity-provider-server/test/mocks"
88
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/mock"
910
"math/big"
11+
"net/http"
12+
"net/http/httptest"
13+
"strings"
1014
"testing"
1115
)
1216

@@ -35,26 +39,28 @@ func TestNewGetReportsAssetsHandler(t *testing.T) {
3539
}
3640

3741
t.Run("should return 200 on success", func(t *testing.T) {
38-
ctx := context.Background()
39-
useCase := mocks.NewAssetsReportUseCaseMock(t)
42+
useCase := new(mocks.GetAssetsReportUseCaseMock)
43+
useCase.EXPECT().Run(mock.Anything).Return(successReturn, nil)
4044

41-
useCase.On("Run", ctx).Return(successReturn, nil)
42-
43-
handler := NewGetReportsAssetsHandler(useCase)
44-
assert.HTTPSuccess(t, handler, verb, path, nil)
45+
handler := handlers.NewGetReportsAssetsHandler(useCase)
46+
reqBody := `{}`
47+
req := httptest.NewRequest(http.MethodPost, "/reports/assets", strings.NewReader(reqBody))
48+
req.Header.Set("Content-Type", "application/json")
49+
w := httptest.NewRecorder()
50+
handler(w, req)
51+
assert.Equal(t, http.StatusOK, w.Code)
4552
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcBalance":%d`, successReturn.BtcBalance))
4653
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcBalance":%d`, successReturn.RbtcBalance))
4754
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcLocked":%d`, successReturn.BtcLocked))
4855
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcLocked":%d`, successReturn.RbtcLocked))
4956
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcLiquidity":%d`, successReturn.BtcLiquidity))
5057
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcLiquidity":%d`, successReturn.RbtcLiquidity))
58+
useCase.AssertExpectations(t)
5159
})
5260
t.Run("Should return an error when use case fail", func(t *testing.T) {
53-
ctx := context.Background()
54-
useCase := mocks.NewAssetsReportUseCaseMock(t)
55-
56-
useCase.On("Run", ctx).Return(failReturn, assert.AnError)
57-
handler := NewGetReportsAssetsHandler(useCase)
61+
useCase := new(mocks.GetAssetsReportUseCaseMock)
62+
useCase.EXPECT().Run(mock.Anything).Return(failReturn, assert.AnError)
63+
handler := handlers.NewGetReportsAssetsHandler(useCase)
5864
assert.HTTPError(t, handler, verb, path, nil)
5965
assert.HTTPBodyContains(t, handler, verb, path, nil, `{"error":"assert.AnError general error for testing"}`)
6066
})

internal/adapters/entrypoints/rest/registry/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,5 @@ type UseCaseRegistry interface {
3939
GetPeginReportUseCase() *reports.GetPeginReportUseCase
4040
GetPegoutReportUseCase() *reports.GetPegoutReportUseCase
4141
GetRevenueReportUseCase() *reports.GetRevenueReportUseCase
42-
GetAssetsReportUseCase() reports.AssetsReportUseCase
42+
GetAssetsReportUseCase() *reports.GetAssetsReportUseCase
4343
}

internal/configuration/registry/usecase.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ type UseCaseRegistry struct {
6262
getPeginReportUseCase *reports.GetPeginReportUseCase
6363
getPegoutReportUseCase *reports.GetPegoutReportUseCase
6464
getRevenueReportUseCase *reports.GetRevenueReportUseCase
65-
getAssetsReportUseCase reports.AssetsReportUseCase
65+
getAssetsReportUseCase *reports.GetAssetsReportUseCase
6666
}
6767

6868
// NewUseCaseRegistry
@@ -382,6 +382,6 @@ func (registry *UseCaseRegistry) GetRevenueReportUseCase() *reports.GetRevenueRe
382382
return registry.getRevenueReportUseCase
383383
}
384384

385-
func (registry *UseCaseRegistry) GetAssetsReportUseCase() reports.AssetsReportUseCase {
385+
func (registry *UseCaseRegistry) GetAssetsReportUseCase() *reports.GetAssetsReportUseCase {
386386
return registry.getAssetsReportUseCase
387387
}

internal/usecases/reports/get_assets_report.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,6 @@ import (
99
"math/big"
1010
)
1111

12-
type AssetsReportUseCase interface {
13-
Run(ctx context.Context) (GetAssetsReportResponse, error)
14-
GetRBTCLiquidity(ctx context.Context) (*entities.Wei, error)
15-
GetBTCLiquidity(ctx context.Context) (*entities.Wei, error)
16-
GetBTCLocked(ctx context.Context) (*entities.Wei, error)
17-
GetRBTCLocked(ctx context.Context) (*entities.Wei, error)
18-
GetRBTCBalance(ctx context.Context) (*entities.Wei, error)
19-
GetBtcBalance() (*entities.Wei, error)
20-
}
21-
2212
type GetAssetsReportResponse struct {
2313
BtcBalance *big.Int `json:"btcBalance" validate:"required"`
2414
RbtcBalance *big.Int `json:"rbtcBalance" validate:"required"`
@@ -46,7 +36,7 @@ func NewGetAssetsReportUseCase(
4636
pegoutProvider liquidity_provider.PegoutLiquidityProvider,
4737
peginRepository quote.PeginQuoteRepository,
4838
pegoutRepository quote.PegoutQuoteRepository,
49-
) AssetsReportUseCase {
39+
) *GetAssetsReportUseCase {
5040
return &GetAssetsReportUseCase{
5141
btcWallet: wallet,
5242
rsk: rsk,

0 commit comments

Comments
 (0)