Skip to content

Commit 38a01f2

Browse files
gsoares85AndresQuijano
authored andcommitted
feat: fixed comments
1 parent 7b44ff2 commit 38a01f2

11 files changed

Lines changed: 685 additions & 45 deletions

File tree

.mockery.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +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:
39+
interfaces:
40+
AssetsReportUseCase:
3841
github.com/rsksmart/liquidity-provider-server/internal/entities/liquidity_provider:
3942
interfaces:
4043
LiquidityProviderRepository:

OpenApi.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,7 @@ components:
521521
properties:
522522
fee:
523523
type: integer
524+
deprecated: true
524525
feePercentage:
525526
type: number
526527
fixedFee:

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,32 @@ package handlers
33
import (
44
"github.com/rsksmart/liquidity-provider-server/internal/adapters/entrypoints/rest"
55
"github.com/rsksmart/liquidity-provider-server/internal/usecases/reports"
6+
"github.com/rsksmart/liquidity-provider-server/pkg"
67
"net/http"
78
)
89

910
// NewGetReportsAssetsHandler
1011
// @Title Get asset Reports
1112
// @Description Get the asset information for the LPS.
12-
// @Success 200 pkg.GetAssetsReportResponse
13+
// @Success 200 pkg.GetAssetsReportDTO
1314
// @Route /reports/assets [get]
14-
func NewGetReportsAssetsHandler(useCase *reports.GetAssetsReportUseCase) http.HandlerFunc {
15+
func NewGetReportsAssetsHandler(useCase reports.AssetsReportUseCase) http.HandlerFunc {
1516
return func(w http.ResponseWriter, req *http.Request) {
1617
response, err := useCase.Run(req.Context())
1718
if err != nil {
1819
jsonErr := rest.NewErrorResponseWithDetails("Request error", rest.DetailsFromError(err), false)
1920
rest.JsonErrorResponse(w, http.StatusBadRequest, jsonErr)
2021
return
2122
}
23+
responseDto := pkg.GetAssetsReportDTO{
24+
RbtcLocked: response.RbtcLocked,
25+
RbtcBalance: response.RbtcBalance,
26+
RbtcLiquidity: response.RbtcLiquidity,
27+
BtcLocked: response.BtcLocked,
28+
BtcBalance: response.BtcBalance,
29+
BtcLiquidity: response.BtcLiquidity,
30+
}
2231

23-
rest.JsonResponseWithBody(w, http.StatusOK, &response)
32+
rest.JsonResponseWithBody(w, http.StatusOK, &responseDto)
2433
}
2534
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package handlers
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"github.com/rsksmart/liquidity-provider-server/internal/usecases/reports"
7+
"github.com/rsksmart/liquidity-provider-server/test/mocks"
8+
"github.com/stretchr/testify/assert"
9+
"math/big"
10+
"testing"
11+
)
12+
13+
func TestNewGetReportsAssetsHandler(t *testing.T) {
14+
const (
15+
path = "/reports/assets"
16+
verb = "GET"
17+
)
18+
19+
successReturn := reports.GetAssetsReportResponse{
20+
BtcBalance: big.NewInt(100000),
21+
RbtcBalance: big.NewInt(100000),
22+
BtcLocked: big.NewInt(15000),
23+
RbtcLocked: big.NewInt(17500),
24+
BtcLiquidity: big.NewInt(85000),
25+
RbtcLiquidity: big.NewInt(67500),
26+
}
27+
28+
failReturn := reports.GetAssetsReportResponse{
29+
BtcBalance: big.NewInt(0),
30+
RbtcBalance: big.NewInt(0),
31+
BtcLocked: big.NewInt(0),
32+
RbtcLocked: big.NewInt(0),
33+
BtcLiquidity: big.NewInt(0),
34+
RbtcLiquidity: big.NewInt(0),
35+
}
36+
37+
t.Run("should return 200 on success", func(t *testing.T) {
38+
ctx := context.Background()
39+
useCase := mocks.NewAssetsReportUseCaseMock(t)
40+
41+
useCase.On("Run", ctx).Return(successReturn, nil)
42+
43+
handler := NewGetReportsAssetsHandler(useCase)
44+
assert.HTTPSuccess(t, handler, verb, path, nil)
45+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcBalance":%d`, successReturn.BtcBalance))
46+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcBalance":%d`, successReturn.RbtcBalance))
47+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcLocked":%d`, successReturn.BtcLocked))
48+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcLocked":%d`, successReturn.RbtcLocked))
49+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"btcLiquidity":%d`, successReturn.BtcLiquidity))
50+
assert.HTTPBodyContains(t, handler, verb, path, nil, fmt.Sprintf(`"rbtcLiquidity":%d`, successReturn.RbtcLiquidity))
51+
})
52+
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)
58+
assert.HTTPError(t, handler, verb, path, nil)
59+
assert.HTTPBodyContains(t, handler, verb, path, nil, `{"error":"assert.AnError general error for testing"}`)
60+
})
61+
}

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.GetAssetsReportUseCase
42+
GetAssetsReportUseCase() reports.AssetsReportUseCase
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.GetAssetsReportUseCase
65+
getAssetsReportUseCase reports.AssetsReportUseCase
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.GetAssetsReportUseCase {
385+
func (registry *UseCaseRegistry) GetAssetsReportUseCase() reports.AssetsReportUseCase {
386386
return registry.getAssetsReportUseCase
387387
}

internal/usecases/reports/get_assets_report.go

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,28 @@ import (
66
"github.com/rsksmart/liquidity-provider-server/internal/entities/blockchain"
77
"github.com/rsksmart/liquidity-provider-server/internal/entities/liquidity_provider"
88
"github.com/rsksmart/liquidity-provider-server/internal/entities/quote"
9-
"github.com/rsksmart/liquidity-provider-server/pkg"
9+
"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+
22+
type GetAssetsReportResponse struct {
23+
BtcBalance *big.Int `json:"btcBalance" validate:"required"`
24+
RbtcBalance *big.Int `json:"rbtcBalance" validate:"required"`
25+
BtcLocked *big.Int `json:"btcLocked" validate:"required"`
26+
RbtcLocked *big.Int `json:"rbtcLocked" validate:"required"`
27+
BtcLiquidity *big.Int `json:"btcLiquidity" validate:"required"`
28+
RbtcLiquidity *big.Int `json:"rbtcLiquidity" validate:"required"`
29+
}
30+
1231
type GetAssetsReportUseCase struct {
1332
btcWallet blockchain.BitcoinWallet
1433
rsk blockchain.Rpc
@@ -27,7 +46,7 @@ func NewGetAssetsReportUseCase(
2746
pegoutProvider liquidity_provider.PegoutLiquidityProvider,
2847
peginRepository quote.PeginQuoteRepository,
2948
pegoutRepository quote.PegoutQuoteRepository,
30-
) *GetAssetsReportUseCase {
49+
) AssetsReportUseCase {
3150
return &GetAssetsReportUseCase{
3251
btcWallet: wallet,
3352
rsk: rsk,
@@ -39,8 +58,8 @@ func NewGetAssetsReportUseCase(
3958
}
4059
}
4160

42-
func (useCase *GetAssetsReportUseCase) Run(ctx context.Context) (pkg.GetAssetsReportResponse, error) {
43-
response := pkg.GetAssetsReportResponse{
61+
func (useCase *GetAssetsReportUseCase) Run(ctx context.Context) (GetAssetsReportResponse, error) {
62+
response := GetAssetsReportResponse{
4463
BtcBalance: entities.NewWei(0).AsBigInt(),
4564
RbtcBalance: entities.NewWei(0).AsBigInt(),
4665
BtcLocked: entities.NewWei(0).AsBigInt(),
@@ -52,36 +71,39 @@ func (useCase *GetAssetsReportUseCase) Run(ctx context.Context) (pkg.GetAssetsRe
5271
if err != nil {
5372
return response, err
5473
}
55-
response.BtcBalance = btcBalance.AsBigInt()
74+
5675
rbtcBalance, err := useCase.GetRBTCBalance(ctx)
5776
if err != nil {
5877
return response, err
5978
}
60-
response.RbtcBalance = rbtcBalance.AsBigInt()
6179

6280
rbtcLocked, err := useCase.GetRBTCLocked(ctx)
6381
if err != nil {
6482
return response, err
6583
}
66-
response.RbtcLocked = rbtcLocked.AsBigInt()
6784

6885
lockedBtc, err := useCase.GetBTCLocked(ctx)
6986
if err != nil {
7087
return response, err
7188
}
72-
response.BtcLocked = lockedBtc.AsBigInt()
7389

7490
btcLiquidity, err := useCase.GetBTCLiquidity(ctx)
7591
if err != nil {
7692
return response, err
7793
}
78-
response.BtcLiquidity = btcLiquidity.AsBigInt()
7994

8095
rbtcLiquidity, err := useCase.GetRBTCLiquidity(ctx)
8196
if err != nil {
8297
return response, err
8398
}
99+
100+
response.BtcBalance = btcBalance.AsBigInt()
84101
response.RbtcLiquidity = rbtcLiquidity.AsBigInt()
102+
response.BtcLiquidity = btcLiquidity.AsBigInt()
103+
response.BtcLocked = lockedBtc.AsBigInt()
104+
response.RbtcLocked = rbtcLocked.AsBigInt()
105+
response.RbtcBalance = rbtcBalance.AsBigInt()
106+
85107
return response, nil
86108
}
87109

@@ -118,20 +140,13 @@ func (useCase *GetAssetsReportUseCase) GetBTCLocked(ctx context.Context) (*entit
118140

119141
func (useCase *GetAssetsReportUseCase) GetRBTCLocked(ctx context.Context) (*entities.Wei, error) {
120142
lockedPegin := entities.NewWei(0)
121-
peginQuotes, err := useCase.peginRepository.GetRetainedQuoteByState(ctx, quote.PeginStateWaitingForDeposit)
143+
peginQuotes, err := useCase.peginRepository.GetRetainedQuoteByState(ctx, quote.PeginStateWaitingForDeposit, quote.PeginStateWaitingForDepositConfirmations)
122144
if err != nil {
123145
return nil, err
124146
}
125147
for _, retainedQuote := range peginQuotes {
126148
lockedPegin.Add(lockedPegin, retainedQuote.RequiredLiquidity)
127149
}
128-
pegoutQuotes, err := useCase.pegoutRepository.GetRetainedQuoteByState(ctx, quote.PegoutStateRefundPegOutSucceeded)
129-
if err != nil {
130-
return nil, err
131-
}
132-
for _, retainedQuote := range pegoutQuotes {
133-
lockedPegin.Add(lockedPegin, retainedQuote.RequiredLiquidity)
134-
}
135150

136151
return lockedPegin, nil
137152
}

0 commit comments

Comments
 (0)