Skip to content

Commit 9a8c20e

Browse files
committed
feature: suggested improviments
1 parent 431c6c7 commit 9a8c20e

File tree

3 files changed

+75
-21
lines changed

3 files changed

+75
-21
lines changed

internal/entities/wei_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,5 +486,52 @@ func TestWei_UnmarshalBSONValue(t *testing.T) {
486486
assert.Equal(t, bson.TypeString, bsonTypeResult)
487487
return bytes
488488
})
489+
}
489490

491+
func TestWei_Div(t *testing.T) {
492+
tests := []struct {
493+
name string
494+
w *entities.Wei
495+
x *entities.Wei
496+
y *entities.Wei
497+
want *entities.Wei
498+
wantErr bool
499+
}{
500+
{
501+
name: "divide two positive Wei values",
502+
w: entities.NewWei(0),
503+
x: entities.NewWei(10),
504+
y: entities.NewWei(5),
505+
want: entities.NewWei(2),
506+
wantErr: false,
507+
},
508+
{
509+
name: "divide by zero",
510+
w: entities.NewWei(0),
511+
x: entities.NewWei(10),
512+
y: entities.NewWei(0),
513+
want: nil,
514+
wantErr: true,
515+
},
516+
{
517+
name: "divide zero by a number",
518+
w: entities.NewWei(0),
519+
x: entities.NewWei(0),
520+
y: entities.NewWei(5),
521+
want: entities.NewWei(0),
522+
wantErr: false,
523+
},
524+
}
525+
for _, tt := range tests {
526+
t.Run(tt.name, func(t *testing.T) {
527+
got, err := tt.w.Div(tt.x, tt.y)
528+
if (err != nil) != tt.wantErr {
529+
t.Errorf("Div() error = %v, wantErr %v", err, tt.wantErr)
530+
return
531+
}
532+
if !reflect.DeepEqual(got, tt.want) {
533+
t.Errorf("Div() got = %v, want %v", got, tt.want)
534+
}
535+
})
536+
}
490537
}

internal/usecases/pegin/get_pegin_report.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@ func (useCase *GetPeginReportUseCase) Run(ctx context.Context) (GetPeginReportRe
8888
}
8989

9090
func (useCase *GetPeginReportUseCase) calculateMinimumQuoteValue(quotes []quote.PeginQuote) *entities.Wei {
91-
if len(quotes) == 0 {
92-
return entities.NewWei(0)
93-
}
9491
minimum := quotes[0].Value
9592

9693
if len(quotes) > 1 {
@@ -105,9 +102,6 @@ func (useCase *GetPeginReportUseCase) calculateMinimumQuoteValue(quotes []quote.
105102
}
106103

107104
func (useCase *GetPeginReportUseCase) calculateMaximumQuoteValue(quotes []quote.PeginQuote) *entities.Wei {
108-
if len(quotes) == 0 {
109-
return entities.NewWei(0)
110-
}
111105
maximum := quotes[0].Value
112106

113107
if len(quotes) > 1 {

internal/usecases/pegin/get_pegin_report_test.go

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,51 @@ func TestGetPeginReportUseCase_Run(t *testing.T) {
1717
retainedQuotes := []quote.RetainedPeginQuote{
1818
{QuoteHash: "hash1"},
1919
{QuoteHash: "hash2"},
20+
{QuoteHash: "hash3"},
21+
{QuoteHash: "hash4"},
22+
{QuoteHash: "hash5"},
23+
{QuoteHash: "hash6"},
24+
{QuoteHash: "hash7"},
25+
{QuoteHash: "hash8"},
26+
{QuoteHash: "hash9"},
27+
{QuoteHash: "hash10"},
2028
}
2129

2230
peginQuotes := []quote.PeginQuote{
23-
{
24-
Value: entities.NewWei(1000),
25-
CallFee: entities.NewWei(10),
26-
},
27-
{
28-
Value: entities.NewWei(3000),
29-
CallFee: entities.NewWei(20),
30-
},
31+
{Value: entities.NewWei(1000), CallFee: entities.NewWei(10)},
32+
{Value: entities.NewWei(2000), CallFee: entities.NewWei(20)},
33+
{Value: entities.NewWei(3000), CallFee: entities.NewWei(30)},
34+
{Value: entities.NewWei(4000), CallFee: entities.NewWei(40)},
35+
{Value: entities.NewWei(5000), CallFee: entities.NewWei(50)},
36+
{Value: entities.NewWei(6000), CallFee: entities.NewWei(60)},
37+
{Value: entities.NewWei(7000), CallFee: entities.NewWei(70)},
38+
{Value: entities.NewWei(8000), CallFee: entities.NewWei(80)},
39+
{Value: entities.NewWei(9000), CallFee: entities.NewWei(90)},
40+
{Value: entities.NewWei(10000), CallFee: entities.NewWei(100)},
3141
}
3242

43+
// Calculate expected values
3344
expectedMinimumValue := entities.NewWei(1000)
34-
expectedMaximumValue := entities.NewWei(3000)
35-
expectedAverageValue := entities.NewWei((1000 + 3000) / 2)
36-
expectedTotalFees := entities.NewWei(10 + 20)
37-
expectedAverageFee := entities.NewWei((10 + 20) / 2)
45+
expectedMaximumValue := entities.NewWei(10000)
46+
expectedAverageValue := entities.NewWei(5500)
47+
expectedTotalFees := entities.NewWei(550)
48+
expectedAverageFee := entities.NewWei(55)
3849

3950
peginQuoteRepository := &mocks.PeginQuoteRepositoryMock{}
4051
peginQuoteRepository.On("GetRetainedQuoteByState", ctx, quote.PeginStateRegisterPegInSucceeded).
4152
Return(retainedQuotes, nil).Once()
42-
peginQuoteRepository.On("GetQuote", ctx, "hash1").Return(&peginQuotes[0], nil).Once()
43-
peginQuoteRepository.On("GetQuote", ctx, "hash2").Return(&peginQuotes[1], nil).Once()
53+
54+
for i, retainedQuote := range retainedQuotes {
55+
peginQuoteRepository.On("GetQuote", ctx, retainedQuote.QuoteHash).Return(&peginQuotes[i], nil).Once()
56+
}
4457

4558
useCase := pegin.NewGetPeginReportUseCase(peginQuoteRepository)
4659

4760
result, err := useCase.Run(ctx)
4861

4962
peginQuoteRepository.AssertExpectations(t)
5063
require.NoError(t, err)
51-
assert.Equal(t, 2, result.NumberOfQuotes)
64+
assert.Equal(t, 10, result.NumberOfQuotes)
5265
assert.Equal(t, expectedMinimumValue, result.MinimumQuoteValue)
5366
assert.Equal(t, expectedMaximumValue, result.MaximumQuoteValue)
5467
assert.Equal(t, expectedAverageValue, result.AverageQuoteValue)

0 commit comments

Comments
 (0)